{
  "jars": 145,
  "converted": 141,
  "failed": 4,
  "sites": 3816,
  "listening": 1897,
  "mapped": 229,
  "hooks": {
    "attack_entity": 1,
    "block_changed": 8,
    "camera_shake": 1,
    "client_chat_received": 1,
    "client_disconnecting": 5,
    "client_level_load": 9,
    "client_start": 8,
    "client_stopping": 4,
    "entity_tick_post": 1,
    "frame": 8,
    "gui_render_post": 4,
    "hud": 34,
    "key": 5,
    "level_tick_post": 1,
    "living_death": 1,
    "net_from_server": 74,
    "player_died": 1,
    "player_logged_in": 6,
    "player_logged_out": 1,
    "player_tick": 2,
    "render_fog": 4,
    "render_hand": 2,
    "render_needs": 6,
    "screen_init_post": 9,
    "screen_opening": 8,
    "server_tick": 4,
    "tick": 15,
    "tooltip": 3,
    "wheel": 1,
    "world_drawn": 2
  },
  "wanted": {
    "com/apple/library/uikit/UITextField#becomeFirstResponder @TAIL": 1,
    "com/apple/library/uikit/UITextField#charTyped @HEAD": 1,
    "com/apple/library/uikit/UITextField#resignFirstResponder @TAIL": 1,
    "com/lothrazar/cyclic/block/cable/ShapeCache#<clinit> @RETURN": 1,
    "com/mojang/authlib/services/MinecraftServicesUserApiService#newTelemetrySession @HEAD": 1,
    "com/mojang/blaze3d/audio/Channel#linearAttenuation @RETURN": 1,
    "com/mojang/blaze3d/audio/Channel#play @HEAD": 1,
    "com/mojang/blaze3d/audio/Channel#setSelfPosition @HEAD": 1,
    "com/mojang/blaze3d/opengl/GlBackend#setWindowHints @RETURN": 1,
    "com/mojang/blaze3d/opengl/GlCommandEncoder#presentTexture @HEAD": 1,
    "com/mojang/blaze3d/opengl/GlSurface#present @HEAD": 1,
    "com/mojang/blaze3d/opengl/GlSurface#present @RETURN": 1,
    "com/mojang/blaze3d/pipeline/PipelineCache#insert @HEAD": 1,
    "com/mojang/blaze3d/pipeline/RenderTarget#destroyBuffers @HEAD": 1,
    "com/mojang/blaze3d/platform/InputConstants#isKeyDown @HEAD": 1,
    "com/mojang/blaze3d/platform/InputConstants#releaseMouse @HEAD": 1,
    "com/mojang/blaze3d/platform/InputConstants$Key#getDisplayName @HEAD": 1,
    "com/mojang/blaze3d/platform/SDLEventHandler#handleKeyEvent @TAIL": 1,
    "com/mojang/blaze3d/platform/SDLEventHandler#handleMouseWheelEvent @HEAD": 1,
    "com/mojang/blaze3d/platform/TextInputManager#setIMEInputMode @HEAD": 1,
    "com/mojang/blaze3d/platform/TextInputManager#setTextInputArea @HEAD": 1,
    "com/mojang/blaze3d/platform/TextInputManager#startTextInput @HEAD": 1,
    "com/mojang/blaze3d/platform/TextInputManager#stopTextInput @HEAD": 1,
    "com/mojang/blaze3d/platform/Window#<init> @TAIL": 4,
    "com/mojang/blaze3d/platform/Window#close @HEAD": 1,
    "com/mojang/blaze3d/platform/Window#isWindowFullscreen @HEAD": 1,
    "com/mojang/blaze3d/platform/Window#onFocus @TAIL": 2,
    "com/mojang/blaze3d/platform/Window#setGuiScale @HEAD": 1,
    "com/mojang/blaze3d/platform/Window#setMode @HEAD": 1,
    "com/mojang/blaze3d/systems/RenderSystem#getCompiledPipelineNullable @RETURN": 1,
    "com/mojang/blaze3d/systems/RenderSystem#initRenderer @RETURN": 1,
    "com/mojang/blaze3d/systems/RenderSystem#setShaderFog @HEAD": 1,
    "com/mojang/blaze3d/vertex/BufferBuilder#<init> @TAIL": 1,
    "com/mojang/blaze3d/vertex/BufferBuilder#addVertex @RETURN": 1,
    "com/mojang/blaze3d/vertex/BufferBuilder#endLastVertex @HEAD": 1,
    "com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator#<init> @RETURN": 2,
    "com/mojang/blaze3d/vertex/VertexFormat#<init> @RETURN": 1,
    "com/mojang/realmsclient/client/worldupload/RealmsUploadWorldPacker#tarGzipArchive @HEAD": 1,
    "com/mojang/renderpearl/api/pipeline/RenderPipeline#getVertexFormatBinding @RETURN": 1,
    "com/mojang/renderpearl/api/pipeline/RenderPipeline#getVertexFormatBindings @RETURN": 1,
    "com/mojang/renderpearl/api/vertex/VertexFormat#<init> @RETURN": 1,
    "com/mojang/renderpearl/backend/opengl/GlCommandEncoder#presentTexture @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlCommandEncoder#setupDraw @RETURN": 1,
    "com/mojang/renderpearl/backend/opengl/GlCommandEncoder#submitRenderPass @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlProgram#close @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlProgram#setupBindGroupLayouts @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlRenderPipeline#<init> @RETURN": 1,
    "com/mojang/renderpearl/backend/opengl/GlRenderPipeline#bind @RETURN": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_activeTexture @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_blendFuncSeparate @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_blendFuncSeparate @RETURN": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_colorMask @HEAD": 2,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_deleteTexture @TAIL": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_depthMask @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_disableBlend @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_enableBlend @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_glGetUniformLocation @RETURN": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_glUseProgram @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_glUseProgram @TAIL": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_texImage2D @TAIL": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_viewport @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager$BooleanState#setEnabled @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlSurface#present @HEAD": 1,
    "com/mojang/renderpearl/backend/opengl/GlSurface#present @RETURN": 1,
    "com/mojang/renderpearl/backend/opengl/GlSurface#supportedPresentModes @RETURN": 1,
    "com/mojang/renderpearl/backend/opengl/GlTransientMemory$Fallback#close @HEAD": 1,
    "com/mojang/renderpearl/frontend/FrontendRenderPass#setPipeline @TAIL": 1,
    "com/mojang/renderpearl/frontend/FrontendRenderPass#setUniform @HEAD": 1,
    "com/moulberry/axiom/editor/EditorUI#init @TAIL": 1,
    "com/refinedmods/refinedstorage/block/shape/ShapeCache#<clinit> @RETURN": 1,
    "com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField#draw @TAIL": 1,
    "com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField#handleChar @HEAD": 1,
    "com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField#onFocusChanged @TAIL": 1,
    "com/simibubi/create/content/schematics/SchematicPrinter#loadSchematic @HEAD": 1,
    "com/simibubi/create/content/schematics/SchematicPrinter#loadSchematic @RETURN": 1,
    "com/supermartijn642/core/gui/widget/BaseWidget#addWidget @TAIL": 1,
    "com/supermartijn642/core/gui/widget/premade/TextFieldWidget#charTyped @HEAD": 1,
    "com/supermartijn642/core/gui/widget/premade/TextFieldWidget#setSelected @TAIL": 1,
    "com/supermartijn642/core/gui/widget/premade/TextFieldWidget#update @TAIL": 1,
    "com/terraformersmc/modmenu/util/mod/ModSearch#passesFilters @HEAD": 1,
    "de/keksuccino/fancymenu/customization/background/MenuBackgroundBuilder#shouldShowUpInEditorBackgroundMenu @RETURN": 1,
    "de/keksuccino/fancymenu/customization/element/ElementBuilder#shouldShowUpInEditorElementMenu @RETURN": 1,
    "de/keksuccino/fancymenu/customization/element/editor/AbstractEditorElement#init @RETURN": 1,
    "de/keksuccino/fancymenu/customization/element/elements/playerentity/PlayerEntityElement#extractRenderState @HEAD": 1,
    "de/keksuccino/fancymenu/customization/layout/Layout#convertLegacyElements @RETURN": 1,
    "de/keksuccino/fancymenu/customization/layout/Layout#convertLegacyVanillaButtonCustomizations @RETURN": 1,
    "de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorUI#buildRightClickContextMenu @RETURN": 1,
    "de/keksuccino/fancymenu/customization/overlay/CustomizationOverlay#isOverlayVisible @HEAD": 1,
    "de/keksuccino/fancymenu/customization/overlay/CustomizationOverlayUI#buildMenuBar @RETURN": 1,
    "de/rubixdev/inventorio/player/InventorioScreenHandler#updateDeepPocketsCapacity @HEAD": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#charTyped @HEAD": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#recalculateHeight @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#scrollToCursor @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#setFocused @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/Panel#setScrollY @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#charTyped @HEAD": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#isFocused @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#onClosed @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#scrollTo @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#setFocused @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#onClosed @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setHeight @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setWidth @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setX @TAIL": 1,
    "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setY @TAIL": 1,
    "dev/isxander/yacl3/gui/YACLScreen$CategoryTab#<init> @RETURN": 1,
    "dev/isxander/yacl3/gui/controllers/ActionController$ActionControllerElement#executeAction @HEAD": 1,
    "dev/zelo/renderscale/RenderScale#setShouldScale @HEAD": 1,
    "gg/essential/elementa/UIComponent#focus @TAIL": 1,
    "gg/essential/elementa/UIComponent#keyType @HEAD": 1,
    "gg/essential/elementa/UIComponent#loseFocus @TAIL": 1,
    "gg/essential/gui/common/input/AbstractTextInput#setCursor @TAIL": 1,
    "gg/essential/gui/common/input/AbstractTextInput#setHorizontalScrollingOffset @TAIL": 1,
    "gg/essential/gui/common/input/AbstractTextInput#setTargetVerticalScrollingOffset @TAIL": 1,
    "icyllis/modernui/text/Selection#setSelection @TAIL": 1,
    "icyllis/modernui/widget/TextView#onFocusChanged @TAIL": 1,
    "icyllis/modernui/widget/TextView#onLayout @TAIL": 1,
    "icyllis/modernui/widget/TextView#onTextChanged @TAIL": 1,
    "imgui/moulberry92/ImGui#preInputText @HEAD": 1,
    "io/github/cottonmc/cotton/gui/widget/WTextField#getSelection @TAIL": 1,
    "io/github/cottonmc/cotton/gui/widget/WTextField#onCharTyped @HEAD": 1,
    "io/github/cottonmc/cotton/gui/widget/WTextField#onFocusGained @TAIL": 1,
    "io/github/cottonmc/cotton/gui/widget/WTextField#scrollCursorIntoView @TAIL": 1,
    "io/github/cottonmc/cotton/gui/widget/WTextField#setText @TAIL": 1,
    "io/github/cottonmc/cotton/gui/widget/WWidget#onFocusLost @TAIL": 1,
    "io/github/cottonmc/cotton/gui/widget/WWidget#setLocation @TAIL": 1,
    "io/github/cottonmc/cotton/gui/widget/WWidget#setSize @TAIL": 1,
    "link/e4mc/shadow/dirs/Util#getWinDirs @HEAD": 1,
    "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/BaseWidget#setFocused @TAIL": 1,
    "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget#charTyped @HEAD": 1,
    "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget#clearText @TAIL": 1,
    "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget#setSelectionStart @TAIL": 1,
    "me/shedaniel/clothconfig2/gui/AbstractConfigScreen$QuitSaveConsumer#accept @HEAD": 1,
    "me/shedaniel/clothconfig2/gui/ClothConfigScreen#extractRenderState @HEAD": 1,
    "me/shedaniel/clothconfig2/gui/ClothConfigScreen#extractRenderState @RETURN": 1,
    "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#charTyped @HEAD": 1,
    "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#moveCursorTo @TAIL": 1,
    "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#onChanged @TAIL": 1,
    "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#setFocused @TAIL": 1,
    "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#setVisible @TAIL": 1,
    "meteordevelopment/meteorclient/gui/widgets/WWidget#calculateWidgetPositions @TAIL": 1,
    "meteordevelopment/meteorclient/gui/widgets/input/WTextBox#cursorChanged @TAIL": 1,
    "meteordevelopment/meteorclient/gui/widgets/input/WTextBox#move @TAIL": 1,
    "meteordevelopment/meteorclient/gui/widgets/input/WTextBox#onCharTyped @HEAD": 1,
    "meteordevelopment/meteorclient/gui/widgets/input/WTextBox#setFocused @TAIL": 1,
    "mezz/jei/fabric/platform/RenderHelper#renderTooltip @HEAD": 1,
    "net/blay09/mods/trashslot/client/deletion/DefaultDeletionProvider#deleteMouseItem @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/gui/VideoSettingsScreen#init @TAIL": 1,
    "net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer#isEntityVisible @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer#scheduleTerrainUpdate @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#<init> @TAIL": 2,
    "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#cleanupAndFlip @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#destroy @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#prepareRenderTrees @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#processChunkBuilds @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#processGFNIMovement @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer#begin @TAIL": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/UniformBufferManager#<init> @RETURN": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/UniformBufferManager#endFrame @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer#processQuad @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller#testDistance @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion#delete @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableTree#cylindricalDistanceTest @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkVertexEncoder$Vertex#copyVertexTo @HEAD": 1,
    "net/caffeinemc/mods/sodium/client/render/model/AbstractBlockRenderContext#bufferDefaultModel @TAIL": 1,
    "net/caffeinemc/mods/sodium/client/util/SodiumChunkSection#renderGroup @HEAD": 1,
    "net/fabricmc/fabric/api/client/renderer/v1/render/submit/ExtendedBlockModelSubmit#<init> @RETURN": 1,
    "net/fabricmc/fabric/impl/networking/payload/PayloadHelper#assertSize @HEAD": 1,
    "net/fabricmc/fabric/impl/registry/sync/RegistrySyncManager#configureClient @HEAD": 1,
    "net/irisshaders/iris/pathways/HandRenderer#canRender @HEAD": 1,
    "net/minecraft/CrashReport#<init> @RETURN": 1,
    "net/minecraft/SharedConstants#<clinit> @TAIL": 1,
    "net/minecraft/SystemReport#<init> @RETURN": 1,
    "net/minecraft/TracingExecutor#forName @HEAD": 1,
    "net/minecraft/client/Camera#alignWithEntity @HEAD": 1,
    "net/minecraft/client/Camera#alignWithEntity @RETURN": 1,
    "net/minecraft/client/Camera#createProjectionMatrixForCulling @RETURN": 2,
    "net/minecraft/client/Camera#getFluidInCamera @HEAD": 1,
    "net/minecraft/client/Camera#setEntity @HEAD": 1,
    "net/minecraft/client/Camera#tick @HEAD": 1,
    "net/minecraft/client/KeyMapping#release @HEAD": 1,
    "net/minecraft/client/KeyMapping#resetMapping @HEAD": 1,
    "net/minecraft/client/KeyMapping#resetMapping @RETURN": 1,
    "net/minecraft/client/KeyMapping#setDown @HEAD": 1,
    "net/minecraft/client/KeyMapping#setKey @HEAD": 1,
    "net/minecraft/client/KeyboardHandler#charTyped @HEAD": 2,
    "net/minecraft/client/KeyboardHandler#handleDebugKeys @HEAD": 1,
    "net/minecraft/client/KeyboardHandler#handleDebugKeys @RETURN": 2,
    "net/minecraft/client/KeyboardHandler#preeditCallback @HEAD": 1,
    "net/minecraft/client/KeyboardHandler#textEditing @HEAD": 1,
    "net/minecraft/client/KeyboardHandler#tick @HEAD": 1,
    "net/minecraft/client/Minecraft#<init>* @TAIL": 1,
    "net/minecraft/client/Minecraft#addResourcePackLoadFailToast @HEAD": 1,
    "net/minecraft/client/Minecraft#allowsTelemetry @HEAD": 2,
    "net/minecraft/client/Minecraft#clearClientLevel @HEAD": 1,
    "net/minecraft/client/Minecraft#clearClientLevel @RETURN": 1,
    "net/minecraft/client/Minecraft#clearDownloadedResourcePacks @RETURN": 1,
    "net/minecraft/client/Minecraft#clearResourcePacksOnError @HEAD": 1,
    "net/minecraft/client/Minecraft#continueAttack @HEAD": 1,
    "net/minecraft/client/Minecraft#crash @HEAD": 1,
    "net/minecraft/client/Minecraft#disconnect @RETURN": 1,
    "net/minecraft/client/Minecraft#disconnect* @HEAD": 1,
    "net/minecraft/client/Minecraft#doWorldLoad @HEAD": 2,
    "net/minecraft/client/Minecraft#emergencySave @HEAD": 1,
    "net/minecraft/client/Minecraft#getProfileKeyPairManager @HEAD": 1,
    "net/minecraft/client/Minecraft#handleKeybinds @TAIL": 1,
    "net/minecraft/client/Minecraft#onGameLoadFinished @HEAD": 2,
    "net/minecraft/client/Minecraft#onGameLoadFinished @RETURN": 1,
    "net/minecraft/client/Minecraft#onGameLoadFinished @TAIL": 1,
    "net/minecraft/client/Minecraft#onResourceLoadFinished @RETURN": 1,
    "net/minecraft/client/Minecraft#onResourceLoadFinished @TAIL": 1,
    "net/minecraft/client/Minecraft#onTextInputFocusChange @HEAD": 1,
    "net/minecraft/client/Minecraft#pickBlockOrEntity @HEAD": 2,
    "net/minecraft/client/Minecraft#pickBlockOrEntity @TAIL": 1,
    "net/minecraft/client/Minecraft#prepareForMultiplayer @HEAD": 1,
    "net/minecraft/client/Minecraft#reloadResourcePacks @HEAD": 1,
    "net/minecraft/client/Minecraft#reloadResourcePacks @TAIL": 2,
    "net/minecraft/client/Minecraft#setLevel @RETURN": 2,
    "net/minecraft/client/Minecraft#startAttack @HEAD": 1,
    "net/minecraft/client/Minecraft#startUseItem @TAIL": 1,
    "net/minecraft/client/Minecraft#stop @RETURN": 1,
    "net/minecraft/client/Minecraft#updateLevelInEngines @HEAD": 2,
    "net/minecraft/client/MouseHandler#grabMouse @HEAD": 1,
    "net/minecraft/client/MouseHandler#onButton @HEAD": 1,
    "net/minecraft/client/MouseHandler#releaseMouse @RETURN": 1,
    "net/minecraft/client/OptionInstance#get @HEAD": 1,
    "net/minecraft/client/OptionInstance#set @HEAD": 1,
    "net/minecraft/client/Options#<init> @TAIL": 1,
    "net/minecraft/client/Options#dataFix @RETURN": 1,
    "net/minecraft/client/Options#getCloudStatus @HEAD": 1,
    "net/minecraft/client/Options#getEffectiveRenderDistance @HEAD": 1,
    "net/minecraft/client/Options#load @HEAD": 4,
    "net/minecraft/client/Options#onlyShowSecureChat @RETURN": 1,
    "net/minecraft/client/Options#processOptions @RETURN": 1,
    "net/minecraft/client/Options#save @RETURN": 1,
    "net/minecraft/client/Options#save @TAIL": 1,
    "net/minecraft/client/Options#setCameraType @HEAD": 2,
    "net/minecraft/client/Screenshot#grab @HEAD": 1,
    "net/minecraft/client/ToggleKeyMapping#release @HEAD": 1,
    "net/minecraft/client/User#<init> @HEAD": 1,
    "net/minecraft/client/color/block/BlockColors#register @HEAD": 3,
    "net/minecraft/client/color/block/BlockColors#register @TAIL": 1,
    "net/minecraft/client/gui/BundleMouseActions#onMouseScrolled @RETURN": 1,
    "net/minecraft/client/gui/Gui#setOverlay @RETURN": 1,
    "net/minecraft/client/gui/Gui#setScreen @TAIL": 2,
    "net/minecraft/client/gui/Gui#tick @HEAD": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#applyCursor @HEAD": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @HEAD": 4,
    "net/minecraft/client/gui/components/AbstractButton#keyPressed @HEAD": 1,
    "net/minecraft/client/gui/components/AbstractScrollArea#extractScrollbar @HEAD": 1,
    "net/minecraft/client/gui/components/AbstractScrollArea#setScrollAmount @TAIL": 2,
    "net/minecraft/client/gui/components/AbstractWidget#isFocused @TAIL": 1,
    "net/minecraft/client/gui/components/AbstractWidget#setFocused @TAIL": 1,
    "net/minecraft/client/gui/components/AbstractWidget#setMessage @RETURN": 1,
    "net/minecraft/client/gui/components/BossHealthOverlay#extractBar @HEAD": 1,
    "net/minecraft/client/gui/components/BossHealthOverlay#extractRenderState @HEAD": 1,
    "net/minecraft/client/gui/components/ChatComponent#addMessage @RETURN": 1,
    "net/minecraft/client/gui/components/ChatComponent#addMessage @TAIL": 1,
    "net/minecraft/client/gui/components/ChatComponent#addMessageToDisplayQueue @HEAD": 1,
    "net/minecraft/client/gui/components/ChatComponent#captureClickableText @HEAD": 1,
    "net/minecraft/client/gui/components/ChatComponent#extractRenderState @RETURN": 2,
    "net/minecraft/client/gui/components/ChatComponent#refreshTrimmedMessages @HEAD": 1,
    "net/minecraft/client/gui/components/ChatComponent#refreshTrimmedMessages @TAIL": 1,
    "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#<init> @RETURN": 1,
    "net/minecraft/client/gui/components/DebugScreenOverlay#<init> @RETURN": 1,
    "net/minecraft/client/gui/components/DebugScreenOverlay#extractLines @HEAD": 2,
    "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @HEAD": 3,
    "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @RETURN": 2,
    "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @TAIL": 1,
    "net/minecraft/client/gui/components/DebugScreenOverlay#logFrameDuration @HEAD": 2,
    "net/minecraft/client/gui/components/DebugScreenOverlay#reset @RETURN": 1,
    "net/minecraft/client/gui/components/DebugScreenOverlay#showDebugScreen @HEAD": 1,
    "net/minecraft/client/gui/components/EditBox#charTyped @HEAD": 1,
    "net/minecraft/client/gui/components/EditBox#scrollTo @HEAD": 1,
    "net/minecraft/client/gui/components/EditBox#setFocused @TAIL": 1,
    "net/minecraft/client/gui/components/EditBox#setVisible @TAIL": 1,
    "net/minecraft/client/gui/components/MultiLineEditBox#charTyped @HEAD": 1,
    "net/minecraft/client/gui/components/MultiLineEditBox#setFocused @TAIL": 1,
    "net/minecraft/client/gui/components/SubtitleOverlay#onPlaySound @HEAD": 1,
    "net/minecraft/client/gui/components/debug/DebugEntryMemory#display @RETURN": 2,
    "net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> @RETURN": 5,
    "net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList @HEAD": 3,
    "net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList @TAIL": 1,
    "net/minecraft/client/gui/components/debug/DebugScreenEntryList#resetToProfile @HEAD": 2,
    "net/minecraft/client/gui/components/debug/DebugScreenEntryList#setOverlayVisible @HEAD": 1,
    "net/minecraft/client/gui/components/spectator/SpectatorGui#onMouseScrolled @HEAD": 1,
    "net/minecraft/client/gui/components/tabs/TabManager#setCurrentTab* @HEAD": 1,
    "net/minecraft/client/gui/components/tabs/TabNavigationBar#extractWidgetRenderState @RETURN": 1,
    "net/minecraft/client/gui/components/toasts/RecipeToast#addOrUpdate @HEAD": 1,
    "net/minecraft/client/gui/components/toasts/ToastManager#addToast @HEAD": 2,
    "net/minecraft/client/gui/components/toasts/ToastManager#lambda$update$1 @HEAD": 1,
    "net/minecraft/client/gui/components/toasts/ToastManager$ToastInstance#update @HEAD": 1,
    "net/minecraft/client/gui/contextualbar/LocatorBar#extractRenderState @RETURN": 1,
    "net/minecraft/client/gui/font/AtlasGlyphProvider$Instance#renderSprite @HEAD": 2,
    "net/minecraft/client/gui/font/FontManager#apply @RETURN": 1,
    "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#buildEffect @HEAD": 2,
    "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#render @HEAD": 2,
    "net/minecraft/client/gui/layouts/GridLayout$RowHelper#addChild @HEAD": 1,
    "net/minecraft/client/gui/render/GuiRenderer#close @RETURN": 2,
    "net/minecraft/client/gui/render/GuiRenderer#endFrame @RETURN": 2,
    "net/minecraft/client/gui/render/GuiRenderer#invalidateItemAtlas @RETURN": 2,
    "net/minecraft/client/gui/render/GuiRenderer#prepare @HEAD": 1,
    "net/minecraft/client/gui/render/GuiRenderer#prepare @RETURN": 1,
    "net/minecraft/client/gui/render/GuiRenderer#render @HEAD": 1,
    "net/minecraft/client/gui/render/GuiRenderer#render @RETURN": 1,
    "net/minecraft/client/gui/screens/ChatScreen#handleChatInput @HEAD": 1,
    "net/minecraft/client/gui/screens/ChatScreen#init @HEAD": 2,
    "net/minecraft/client/gui/screens/ChatScreen#init @TAIL": 1,
    "net/minecraft/client/gui/screens/ChatScreen#normalizeChatMessage @RETURN": 1,
    "net/minecraft/client/gui/screens/ChatScreen#onEdited @HEAD": 1,
    "net/minecraft/client/gui/screens/ChatScreen#removed @HEAD": 2,
    "net/minecraft/client/gui/screens/ConnectScreen#connect @HEAD": 2,
    "net/minecraft/client/gui/screens/ConnectScreen#startConnecting @HEAD": 1,
    "net/minecraft/client/gui/screens/LoadingOverlay#<init> @RETURN": 1,
    "net/minecraft/client/gui/screens/LoadingOverlay#<init> @TAIL": 1,
    "net/minecraft/client/gui/screens/LoadingOverlay#extractProgressBar @HEAD": 1,
    "net/minecraft/client/gui/screens/LoadingOverlay#extractRenderState @RETURN": 1,
    "net/minecraft/client/gui/screens/ManageServerScreen#onAdd @HEAD": 1,
    "net/minecraft/client/gui/screens/Screen#addRenderableOnly @HEAD": 1,
    "net/minecraft/client/gui/screens/Screen#addWidget @HEAD": 1,
    "net/minecraft/client/gui/screens/Screen#keyPressed @TAIL": 1,
    "net/minecraft/client/gui/screens/Screen#onClose @HEAD": 1,
    "net/minecraft/client/gui/screens/Screen#onClose @RETURN": 1,
    "net/minecraft/client/gui/screens/Screen#rebuildWidgets @RETURN": 1,
    "net/minecraft/client/gui/screens/Screen#removed @RETURN": 1,
    "net/minecraft/client/gui/screens/Screen#resize @HEAD": 1,
    "net/minecraft/client/gui/screens/Screen#resize @TAIL": 2,
    "net/minecraft/client/gui/screens/Screen#setInitialFocus @HEAD": 1,
    "net/minecraft/client/gui/screens/TitleScreen#<init> @RETURN": 1,
    "net/minecraft/client/gui/screens/TitleScreen#init @HEAD": 2,
    "net/minecraft/client/gui/screens/TitleScreen#init @RETURN": 1,
    "net/minecraft/client/gui/screens/TitleScreen#lambda$createNormalMenuOptions$4 @HEAD": 1,
    "net/minecraft/client/gui/screens/TitleScreen#tick @RETURN": 1,
    "net/minecraft/client/gui/screens/debug/DebugOptionsScreen$OptionEntry#extractContent @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractCommandBlockEditScreen#init @TAIL": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractContents @TAIL": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractRenderState @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractRenderState @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractTooltip @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractTooltip @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#isHovering @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#mouseClicked @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#slotClicked @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#slotClicked @TAIL": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#charTyped @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#charTyped @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#init @HEAD": 2,
    "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#keyPressed @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/BookEditScreen#updatePageContent @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/BookViewScreen#extractRenderState @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/BookViewScreen#extractRenderState @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/BookViewScreen#pageBack @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/BookViewScreen#pageForward @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/BookViewScreen#setPage @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#extractRenderState @TAIL": 1,
    "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#init @RETURN": 1,
    "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#mouseClicked @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#slotClicked @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen$ItemPickerMenu#setCarried @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/HangingSignEditScreen#<init> @TAIL": 1,
    "net/minecraft/client/gui/screens/inventory/MerchantScreen#extractLabels @HEAD": 1,
    "net/minecraft/client/gui/screens/inventory/SignEditScreen#<init> @TAIL": 1,
    "net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent#create @HEAD": 2,
    "net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen#init @HEAD": 1,
    "net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen#onSelectedChange @TAIL": 1,
    "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$OnlineServerEntry#extractContent @RETURN": 1,
    "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$OnlineServerEntry#swap @HEAD": 1,
    "net/minecraft/client/gui/screens/options/LanguageSelectScreen#<init> @TAIL": 1,
    "net/minecraft/client/gui/screens/options/LanguageSelectScreen#addContents @HEAD": 1,
    "net/minecraft/client/gui/screens/options/LanguageSelectScreen#onDone @HEAD": 1,
    "net/minecraft/client/gui/screens/options/LanguageSelectScreen#repositionElements @HEAD": 1,
    "net/minecraft/client/gui/screens/options/OptionsScreen#init @RETURN": 1,
    "net/minecraft/client/gui/screens/options/SkinCustomizationScreen#addOptions @RETURN": 1,
    "net/minecraft/client/gui/screens/options/SoundOptionsScreen#addOptions @TAIL": 1,
    "net/minecraft/client/gui/screens/options/VideoSettingsScreen#<init> @TAIL": 1,
    "net/minecraft/client/gui/screens/options/VideoSettingsScreen#removed @TAIL": 1,
    "net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry#extractContent @TAIL": 1,
    "net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry#mouseClicked @HEAD": 1,
    "net/minecraft/client/gui/screens/social/PlayerEntry#<init> @RETURN": 1,
    "net/minecraft/client/gui/screens/social/PlayerEntry#<init> @TAIL": 1,
    "net/minecraft/client/gui/screens/telemetry/TelemetryInfoScreen#repositionElements @TAIL": 1,
    "net/minecraft/client/gui/screens/worldselection/EditWorldScreen#lambda$new$12 @HEAD": 1,
    "net/minecraft/client/gui/screens/worldselection/EditWorldScreen#lambda$new$7 @HEAD": 1,
    "net/minecraft/client/gui/screens/worldselection/OptimizeWorldScreen#create @HEAD": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldCreationUiState#getNonEmptyList @RETURN": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#confirmWorldCreation @HEAD": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#createLevelFromExistingSettings @HEAD": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#openWorld @HEAD": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#deleteWorld @HEAD": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#doDeleteWorld @TAIL": 1,
    "net/minecraft/client/main/GameConfig#<init> @RETURN": 1,
    "net/minecraft/client/main/Main#Lnet/minecraft/client/main/Main;main @HEAD": 1,
    "net/minecraft/client/main/Main#main @HEAD": 1,
    "net/minecraft/client/model/HumanoidModel#setupAnim @RETURN": 1,
    "net/minecraft/client/model/HumanoidModel#setupAnim @TAIL": 2,
    "net/minecraft/client/model/Model#renderToBuffer @HEAD": 1,
    "net/minecraft/client/model/geom/EntityModelSet#<init> @TAIL": 1,
    "net/minecraft/client/model/geom/EntityModelSet#bakeLayer @HEAD": 1,
    "net/minecraft/client/model/geom/ModelPart#Lnet/minecraft/client/model/geom/ModelPart;render @HEAD": 1,
    "net/minecraft/client/model/geom/ModelPart#compile @HEAD": 1,
    "net/minecraft/client/model/geom/ModelPart#setPos @RETURN": 1,
    "net/minecraft/client/model/object/skull/SkullModel#setupAnim @HEAD": 1,
    "net/minecraft/client/model/player/PlayerModel#setupAnim @HEAD": 1,
    "net/minecraft/client/model/player/PlayerModel#setupAnim @RETURN": 2,
    "net/minecraft/client/model/player/PlayerModel#setupAnim @TAIL": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#<init> @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#drop @HEAD": 2,
    "net/minecraft/client/multiplayer/ClientChunkCache#drop @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#gatherStats @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#getChunk @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @TAIL": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#updateViewCenter @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#updateViewCenter @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#updateViewRadius @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#updateViewRadius @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl#handleCustomPayload @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl#handleTransfer @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl#send @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl#handleConfigurationFinished @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl#handleUpdateTags @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl#handleCustomQuery @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl#handleLoginFinished @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#<clinit> @TAIL": 1,
    "net/minecraft/client/multiplayer/ClientLevel#<init> @RETURN": 3,
    "net/minecraft/client/multiplayer/ClientLevel#addBreakingBlockEffects @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#addBreakingParticles @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#addDestroyBlockEffect @HEAD": 2,
    "net/minecraft/client/multiplayer/ClientLevel#addEntity @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#clearTintCaches @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#clearTintCaches @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientLevel#destroyBlockProgress @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#doAddParticle @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#doAnimateTick @TAIL": 1,
    "net/minecraft/client/multiplayer/ClientLevel#getBlockTint @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#levelEvent @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#playLocalSound @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#playSeededSound @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#removeEntity @RETURN": 1,
    "net/minecraft/client/multiplayer/ClientLevel#setServerVerifiedBlockState @HEAD": 1,
    "net/minecraft/client/multiplayer/ClientLevel#setServerVerifiedBlockState @TAIL": 1,
    "net/minecraft/client/multiplayer/ClientLevel#tickEntities @HEAD": 2,
    "net/minecraft/client/multiplayer/ClientLevel#tickEntities @TAIL": 1,
    "net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger @HEAD": 2,
    "net/minecraft/client/multiplayer/ClientLevel#unload @HEAD": 3,
    "net/minecraft/client/multiplayer/ClientLevel$ClientLevelData#getHorizonHeight @HEAD": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;handleCreativeModeItemAdd @HEAD": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#attack @HEAD": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#createPlayer @HEAD": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#handleContainerInput @HEAD": 2,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#handleContainerInput @TAIL": 2,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#handlePickItemFromBlock @HEAD": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#handlePickItemFromEntity @HEAD": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#interact @HEAD": 2,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#isSpectator @HEAD": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#lambda$useItem$0 @TAIL": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#stopDestroyBlock @RETURN": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#useItemOn @HEAD": 2,
    "net/minecraft/client/multiplayer/PlayerInfo#createSkinLookup @HEAD": 1,
    "net/minecraft/client/multiplayer/PlayerInfo#getSkin @TAIL": 1,
    "net/minecraft/client/multiplayer/ServerData#copyFrom @RETURN": 1,
    "net/minecraft/client/multiplayer/ServerData#read @RETURN": 2,
    "net/minecraft/client/multiplayer/ServerData#write @RETURN": 2,
    "net/minecraft/client/multiplayer/ServerStatusPinger$1#<init> @RETURN": 1,
    "net/minecraft/client/multiplayer/chat/ChatListener#evaluateTrustLevel @HEAD": 1,
    "net/minecraft/client/multiplayer/chat/ChatListener#handleDisguisedChatMessage @HEAD": 2,
    "net/minecraft/client/multiplayer/chat/ChatListener#handleSystemMessage @HEAD": 1,
    "net/minecraft/client/multiplayer/chat/ChatTrustLevel#evaluate @HEAD": 1,
    "net/minecraft/client/multiplayer/chat/GuiMessage$Line#<init> @TAIL": 2,
    "net/minecraft/client/multiplayer/chat/GuiMessage$Line#tag @HEAD": 1,
    "net/minecraft/client/multiplayer/chat/GuiMessageTag#system @HEAD": 1,
    "net/minecraft/client/multiplayer/chat/GuiMessageTag#systemSinglePlayer @HEAD": 1,
    "net/minecraft/client/particle/BubbleColumnUpParticle#<init> @TAIL": 1,
    "net/minecraft/client/particle/BubbleColumnUpParticle#tick @HEAD": 1,
    "net/minecraft/client/particle/BubbleParticle#<init> @TAIL": 1,
    "net/minecraft/client/particle/BubbleParticle#tick @HEAD": 1,
    "net/minecraft/client/particle/BubbleParticle#tick @RETURN": 1,
    "net/minecraft/client/particle/BubblePopParticle#<init> @TAIL": 1,
    "net/minecraft/client/particle/DripParticle#<init> @TAIL": 1,
    "net/minecraft/client/particle/DripParticle$WaterFallProvider#createParticle @TAIL": 1,
    "net/minecraft/client/particle/FallingParticle#tick @RETURN": 1,
    "net/minecraft/client/particle/FireworkParticles$Starter#createParticle @HEAD": 1,
    "net/minecraft/client/particle/FlameParticle#getLightCoords @HEAD": 1,
    "net/minecraft/client/particle/HeartParticle#<init> @TAIL": 1,
    "net/minecraft/client/particle/ParticleEngine#clearParticles @HEAD": 2,
    "net/minecraft/client/particle/ParticleEngine#createParticle @HEAD": 2,
    "net/minecraft/client/particle/ParticleEngine#createParticle @RETURN": 1,
    "net/minecraft/client/particle/ParticleEngine#extract @HEAD": 3,
    "net/minecraft/client/particle/ParticleEngine#setLevel @HEAD": 2,
    "net/minecraft/client/particle/ParticleEngine#tick @HEAD": 3,
    "net/minecraft/client/particle/ParticleEngine#tick @TAIL": 1,
    "net/minecraft/client/particle/ParticleResources#<init> @TAIL": 1,
    "net/minecraft/client/particle/ParticleResources#lambda$reload$1 @HEAD": 1,
    "net/minecraft/client/particle/ParticleResources#registerProviders @RETURN": 2,
    "net/minecraft/client/particle/ParticleResources#reload @HEAD": 2,
    "net/minecraft/client/particle/ParticleResources$MutableSpriteSet#get @HEAD": 2,
    "net/minecraft/client/particle/SingleQuadParticle#extractRotatedQuad @HEAD": 2,
    "net/minecraft/client/particle/SingleQuadParticle#setSprite @RETURN": 2,
    "net/minecraft/client/particle/SpellParticle#tick @TAIL": 1,
    "net/minecraft/client/particle/WaterCurrentDownParticle#<init> @TAIL": 1,
    "net/minecraft/client/particle/WaterDropParticle#<init> @TAIL": 1,
    "net/minecraft/client/player/AbstractClientPlayer#<init> @RETURN": 1,
    "net/minecraft/client/player/FirstPersonHandsAndItems#extractRenderState @TAIL": 1,
    "net/minecraft/client/player/LocalPlayer#getViewYRot @HEAD": 1,
    "net/minecraft/client/player/LocalPlayer#handleEntityEvent @HEAD": 1,
    "net/minecraft/client/player/LocalPlayer#isControlledCamera @HEAD": 1,
    "net/minecraft/client/player/LocalPlayer#playSound @HEAD": 1,
    "net/minecraft/client/player/LocalPlayer#respawn @HEAD": 1,
    "net/minecraft/client/quickplay/QuickPlay#joinSingleplayerWorld @HEAD": 1,
    "net/minecraft/client/renderer/BindGroupLayouts#<clinit> @TAIL": 1,
    "net/minecraft/client/renderer/BiomeColors#getAverageFoliageColor @RETURN": 1,
    "net/minecraft/client/renderer/BiomeColors#getAverageGrassColor @RETURN": 1,
    "net/minecraft/client/renderer/BiomeColors#getAverageWaterColor @RETURN": 1,
    "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#renderPlayerArm @HEAD": 1,
    "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#renderPlayerArm @RETURN": 1,
    "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem @HEAD": 3,
    "net/minecraft/client/renderer/GameRenderer#<init> @TAIL": 1,
    "net/minecraft/client/renderer/GameRenderer#close @HEAD": 1,
    "net/minecraft/client/renderer/GameRenderer#close @RETURN": 1,
    "net/minecraft/client/renderer/GameRenderer#close @TAIL": 1,
    "net/minecraft/client/renderer/GameRenderer#extract @HEAD": 1,
    "net/minecraft/client/renderer/GameRenderer#extract @RETURN": 1,
    "net/minecraft/client/renderer/GameRenderer#extractCamera @TAIL": 1,
    "net/minecraft/client/renderer/GameRenderer#extractOptions @TAIL": 1,
    "net/minecraft/client/renderer/GameRenderer#mainRenderTarget @HEAD": 2,
    "net/minecraft/client/renderer/GameRenderer#render @TAIL": 2,
    "net/minecraft/client/renderer/GameRenderer#render3dHud @HEAD": 1,
    "net/minecraft/client/renderer/GameRenderer#renderLevel @HEAD": 4,
    "net/minecraft/client/renderer/GameRenderer#renderLevel @RETURN": 1,
    "net/minecraft/client/renderer/GameRenderer#renderLevel @TAIL": 1,
    "net/minecraft/client/renderer/GameRenderer#resize @HEAD": 1,
    "net/minecraft/client/renderer/GameRenderer#setLevel @HEAD": 1,
    "net/minecraft/client/renderer/GameRenderer#setSpectatedEntityPostEffect @HEAD": 1,
    "net/minecraft/client/renderer/GameRenderer#shouldRenderBlockOutline @HEAD": 1,
    "net/minecraft/client/renderer/GameRenderer#toggleSpectatorPostEffect @HEAD": 1,
    "net/minecraft/client/renderer/LevelEventHandler#globalLevelEvent @HEAD": 1,
    "net/minecraft/client/renderer/LevelEventHandler#levelEvent @HEAD": 1,
    "net/minecraft/client/renderer/LevelEventHandler#levelEvent @TAIL": 1,
    "net/minecraft/client/renderer/LevelEventHandler#shootParticles @TAIL": 1,
    "net/minecraft/client/renderer/LevelRenderer#<init> @RETURN": 2,
    "net/minecraft/client/renderer/LevelRenderer#close @TAIL": 1,
    "net/minecraft/client/renderer/LevelRenderer#endFrame @RETURN": 2,
    "net/minecraft/client/renderer/LevelRenderer#endFrame @TAIL": 1,
    "net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency @HEAD": 1,
    "net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency @RETURN": 1,
    "net/minecraft/client/renderer/LevelRenderer#executeOit @HEAD": 2,
    "net/minecraft/client/renderer/LevelRenderer#executeOutline @HEAD": 2,
    "net/minecraft/client/renderer/LevelRenderer#executeOutline @TAIL": 1,
    "net/minecraft/client/renderer/LevelRenderer#invalidateCompiledGeometry @HEAD": 2,
    "net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$0 @HEAD": 3,
    "net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$0 @RETURN": 1,
    "net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$8 @HEAD": 2,
    "net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$8 @RETURN": 1,
    "net/minecraft/client/renderer/LevelRenderer#prepareChunkRenders @TAIL": 1,
    "net/minecraft/client/renderer/LevelRenderer#prepareChunkRendersIndirect @TAIL": 1,
    "net/minecraft/client/renderer/LevelRenderer#prepareTranslucents @HEAD": 1,
    "net/minecraft/client/renderer/LevelRenderer#resetLevelRenderData @RETURN": 2,
    "net/minecraft/client/renderer/LevelRenderer#submitBlockEntities @HEAD": 1,
    "net/minecraft/client/renderer/LevelRenderer#submitBlockEntities @RETURN": 1,
    "net/minecraft/client/renderer/LevelRenderer#submitBlockOutline @HEAD": 1,
    "net/minecraft/client/renderer/LevelRenderer#submitEntities @RETURN": 1,
    "net/minecraft/client/renderer/LevelRenderer#submitHitOutline @HEAD": 1,
    "net/minecraft/client/renderer/Lightmap#render @RETURN": 1,
    "net/minecraft/client/renderer/LightmapRenderStateExtractor#<init> @TAIL": 1,
    "net/minecraft/client/renderer/LightmapRenderStateExtractor#calculateDarknessScale @RETURN": 1,
    "net/minecraft/client/renderer/LightmapRenderStateExtractor#tick @HEAD": 1,
    "net/minecraft/client/renderer/MapRenderer#extractRenderState @RETURN": 2,
    "net/minecraft/client/renderer/MapRenderer#render @HEAD": 1,
    "net/minecraft/client/renderer/ProjectionMatrixBuffer#writeBuffer @HEAD": 1,
    "net/minecraft/client/renderer/RenderPipelines#<clinit> @TAIL": 2,
    "net/minecraft/client/renderer/ScreenEffectRenderer#submit @HEAD": 1,
    "net/minecraft/client/renderer/ScreenEffectRenderer#submitFire @HEAD": 1,
    "net/minecraft/client/renderer/ScreenEffectRenderer#submitWater @HEAD": 1,
    "net/minecraft/client/renderer/ShaderManager#apply @RETURN": 1,
    "net/minecraft/client/renderer/SkyRenderer#<init> @TAIL": 1,
    "net/minecraft/client/renderer/SkyRenderer#extractRenderState @HEAD": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderDarkDisc @HEAD": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderEndSky @HEAD": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderMoon @HEAD": 3,
    "net/minecraft/client/renderer/SkyRenderer#renderSkyDisc @HEAD": 2,
    "net/minecraft/client/renderer/SkyRenderer#renderStars @HEAD": 2,
    "net/minecraft/client/renderer/SkyRenderer#renderSun @HEAD": 3,
    "net/minecraft/client/renderer/SkyRenderer#renderSunriseAndSunset @HEAD": 3,
    "net/minecraft/client/renderer/SpriteCoordinateExpander#<init> @RETURN": 2,
    "net/minecraft/client/renderer/StagedVertexBuffer#upload @HEAD": 1,
    "net/minecraft/client/renderer/StagedVertexBuffer#upload @RETURN": 1,
    "net/minecraft/client/renderer/StagedVertexBuffer$GpuBufferPool#endFrame @RETURN": 1,
    "net/minecraft/client/renderer/SubmitNodeStorage#submitModel @HEAD": 1,
    "net/minecraft/client/renderer/ViewArea#lambda$new$0 @HEAD": 2,
    "net/minecraft/client/renderer/WeatherEffectRenderer#extractRenderState @HEAD": 1,
    "net/minecraft/client/renderer/WeatherEffectRenderer#render @HEAD": 1,
    "net/minecraft/client/renderer/block/BlockModelRenderState#submit @HEAD": 1,
    "net/minecraft/client/renderer/block/BlockModelRenderState#submit @TAIL": 1,
    "net/minecraft/client/renderer/block/BlockModelResolver#update @TAIL": 1,
    "net/minecraft/client/renderer/block/FluidStateModelSet#get @RETURN": 2,
    "net/minecraft/client/renderer/block/ModelBlockRenderer#putQuadWithTint @HEAD": 2,
    "net/minecraft/client/renderer/block/dispatch/Variant$SimpleModelState#asModelState @HEAD": 1,
    "net/minecraft/client/renderer/blockentity/AbstractEndPortalRenderer#lambda$submitCube$1 @HEAD": 1,
    "net/minecraft/client/renderer/blockentity/AbstractSignRenderer#submitSignText @HEAD": 3,
    "net/minecraft/client/renderer/blockentity/BeaconRenderer#submit @HEAD": 1,
    "net/minecraft/client/renderer/blockentity/BeaconRenderer#submitBeaconBeam @HEAD": 1,
    "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#onResourceManagerReload @RETURN": 1,
    "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#submit @RETURN": 1,
    "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#tryExtractRenderState @HEAD": 2,
    "net/minecraft/client/renderer/blockentity/EnchantTableRenderer#submit @HEAD": 1,
    "net/minecraft/client/renderer/blockentity/PistonHeadRenderer#submit @HEAD": 1,
    "net/minecraft/client/renderer/blockentity/SkullBlockRenderer#extractRenderState @HEAD": 1,
    "net/minecraft/client/renderer/blockentity/SkullBlockRenderer#submit @HEAD": 1,
    "net/minecraft/client/renderer/chunk/ChunkSectionsToRender#renderGroup @HEAD": 1,
    "net/minecraft/client/renderer/debug/DebugRenderer#emitGizmos @HEAD": 1,
    "net/minecraft/client/renderer/debug/DebugRenderer#refreshRendererList @RETURN": 1,
    "net/minecraft/client/renderer/debug/DebugRenderer#refreshRendererList @TAIL": 1,
    "net/minecraft/client/renderer/debug/EntityHitboxDebugRenderer#emitGizmos @TAIL": 1,
    "net/minecraft/client/renderer/entity/ArmorStandRenderer#<init>* @RETURN": 1,
    "net/minecraft/client/renderer/entity/EnderDragonRenderer#submitCrystalBeams @RETURN": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#extractEntity @HEAD": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#extractEntity @TAIL": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer @HEAD": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer @RETURN": 2,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#onResourceManagerReload @RETURN": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#shouldRender @HEAD": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @HEAD": 3,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @TAIL": 2,
    "net/minecraft/client/renderer/entity/EntityRenderer#createRenderState @RETURN": 1,
    "net/minecraft/client/renderer/entity/EntityRenderer#extractRenderState @TAIL": 1,
    "net/minecraft/client/renderer/entity/EntityRenderer#shouldRender @HEAD": 1,
    "net/minecraft/client/renderer/entity/EntityRenderer#submitNameDisplay @HEAD": 1,
    "net/minecraft/client/renderer/entity/EntityRenderers#createEntityRenderers @HEAD": 1,
    "net/minecraft/client/renderer/entity/ExperienceOrbRenderer#submit @HEAD": 1,
    "net/minecraft/client/renderer/entity/ExperienceOrbRenderer#submit @TAIL": 1,
    "net/minecraft/client/renderer/entity/ExperienceOrbRenderer#vertex @HEAD": 1,
    "net/minecraft/client/renderer/entity/FishingHookRenderer#getPlayerHandPos @RETURN": 1,
    "net/minecraft/client/renderer/entity/FishingHookRenderer#stringVertex @HEAD": 1,
    "net/minecraft/client/renderer/entity/FishingHookRenderer#submit @HEAD": 1,
    "net/minecraft/client/renderer/entity/HumanoidMobRenderer#extractHumanoidRenderState @TAIL": 2,
    "net/minecraft/client/renderer/entity/ItemFrameRenderer#shouldShowName @HEAD": 1,
    "net/minecraft/client/renderer/entity/LivingEntityRenderer#addLayer @HEAD": 1,
    "net/minecraft/client/renderer/entity/LivingEntityRenderer#extractRenderState @HEAD": 2,
    "net/minecraft/client/renderer/entity/LivingEntityRenderer#extractRenderState @TAIL": 1,
    "net/minecraft/client/renderer/entity/LivingEntityRenderer#shouldShowName @HEAD": 2,
    "net/minecraft/client/renderer/entity/LivingEntityRenderer#submit @HEAD": 2,
    "net/minecraft/client/renderer/entity/PaintingRenderer#submit @HEAD": 1,
    "net/minecraft/client/renderer/entity/SquidRenderer#extractRenderState @TAIL": 1,
    "net/minecraft/client/renderer/entity/SquidRenderer#setupRotations @TAIL": 1,
    "net/minecraft/client/renderer/entity/layers/CapeLayer#submit @RETURN": 1,
    "net/minecraft/client/renderer/entity/layers/CustomHeadLayer#resolveSkullRenderType @HEAD": 1,
    "net/minecraft/client/renderer/entity/layers/CustomHeadLayer#submit @HEAD": 1,
    "net/minecraft/client/renderer/entity/layers/Deadmau5EarsLayer#<init> @TAIL": 1,
    "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers @TAIL": 1,
    "net/minecraft/client/renderer/entity/layers/ItemInHandLayer#submitArmWithItem @HEAD": 2,
    "net/minecraft/client/renderer/entity/layers/SimpleEquipmentLayer#submit @TAIL": 1,
    "net/minecraft/client/renderer/entity/layers/StuckInBodyLayer#submit @HEAD": 1,
    "net/minecraft/client/renderer/entity/layers/WingsLayer#submit @HEAD": 1,
    "net/minecraft/client/renderer/entity/layers/WingsLayer#submit @RETURN": 1,
    "net/minecraft/client/renderer/entity/player/AvatarRenderer#<init> @RETURN": 1,
    "net/minecraft/client/renderer/entity/player/AvatarRenderer#<init>* @RETURN": 2,
    "net/minecraft/client/renderer/entity/player/AvatarRenderer#extractRenderState @HEAD": 1,
    "net/minecraft/client/renderer/entity/player/AvatarRenderer#extractRenderState @TAIL": 1,
    "net/minecraft/client/renderer/entity/player/AvatarRenderer#renderHand @HEAD": 1,
    "net/minecraft/client/renderer/entity/player/AvatarRenderer#submitNameDisplay @HEAD": 1,
    "net/minecraft/client/renderer/extract/LevelExtractor#allChanged @HEAD": 1,
    "net/minecraft/client/renderer/extract/LevelExtractor#allChanged @RETURN": 1,
    "net/minecraft/client/renderer/extract/LevelExtractor#extract @HEAD": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#extractEntity @HEAD": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleBlockEntities @HEAD": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleBlockEntities @RETURN": 1,
    "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities @HEAD": 3,
    "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities @RETURN": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities @TAIL": 1,
    "net/minecraft/client/renderer/extract/LevelExtractor#iterateVisibleBlockEntities @HEAD": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#onResourceManagerReload @HEAD": 1,
    "net/minecraft/client/renderer/extract/LevelExtractor#setLevel @RETURN": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#setSectionDirty @HEAD": 1,
    "net/minecraft/client/renderer/feature/BlockModelFeatureRenderer#buildGroup @RETURN": 1,
    "net/minecraft/client/renderer/feature/CustomFeatureRenderer#buildGroup @RETURN": 1,
    "net/minecraft/client/renderer/feature/CustomFeatureRenderer$Submit#<init> @RETURN": 1,
    "net/minecraft/client/renderer/feature/FeatureRenderDispatcher#<init> @RETURN": 2,
    "net/minecraft/client/renderer/feature/FlameFeatureRenderer#prepare @HEAD": 1,
    "net/minecraft/client/renderer/feature/FlameFeatureRenderer#prepare @RETURN": 1,
    "net/minecraft/client/renderer/feature/ItemFeatureRenderer#prepareSubmit @HEAD": 1,
    "net/minecraft/client/renderer/feature/ItemFeatureRenderer#prepareSubmit @RETURN": 1,
    "net/minecraft/client/renderer/feature/LeashFeatureRenderer#addVertexPair @HEAD": 1,
    "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup @HEAD": 1,
    "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup @RETURN": 1,
    "net/minecraft/client/renderer/feature/ShadowFeatureRenderer#buildGroup @HEAD": 1,
    "net/minecraft/client/renderer/feature/ShadowFeatureRenderer#prepare @HEAD": 2,
    "net/minecraft/client/renderer/feature/TextFeatureRenderer#buildGroup @RETURN": 1,
    "net/minecraft/client/renderer/fog/FogRenderer#computeFogColor @RETURN": 1,
    "net/minecraft/client/renderer/fog/FogRenderer#computeFogColor @TAIL": 1,
    "net/minecraft/client/renderer/fog/FogRenderer#setupFog @RETURN": 4,
    "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#getBaseColor @TAIL": 1,
    "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#setupFog @TAIL": 1,
    "net/minecraft/client/renderer/fog/environment/BlindnessFogEnvironment#setupFog @TAIL": 1,
    "net/minecraft/client/renderer/fog/environment/DarknessFogEnvironment#setupFog @TAIL": 1,
    "net/minecraft/client/renderer/fog/environment/LavaFogEnvironment#setupFog @TAIL": 1,
    "net/minecraft/client/renderer/fog/environment/PowderedSnowFogEnvironment#setupFog @TAIL": 1,
    "net/minecraft/client/renderer/fog/environment/WaterFogEnvironment#setupFog @TAIL": 1,
    "net/minecraft/client/renderer/item/CuboidItemModelWrapper#<init> @RETURN": 1,
    "net/minecraft/client/renderer/item/CuboidItemModelWrapper#update @RETURN": 1,
    "net/minecraft/client/renderer/item/ItemModelResolver#appendItemLayers @HEAD": 1,
    "net/minecraft/client/renderer/item/ItemStackRenderState#clear @HEAD": 1,
    "net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState#<init> @TAIL": 1,
    "net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState#submit @HEAD": 1,
    "net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState#submit @TAIL": 1,
    "net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties#bootstrap @TAIL": 2,
    "net/minecraft/client/renderer/rendertype/RenderType#format @RETURN": 1,
    "net/minecraft/client/renderer/rendertype/RenderTypes#armorCutoutNoCull @HEAD": 1,
    "net/minecraft/client/renderer/rendertype/RenderTypes#armorCutoutNoCullGlint @HEAD": 1,
    "net/minecraft/client/renderer/rendertype/RenderTypes#armorTrim @HEAD": 1,
    "net/minecraft/client/renderer/rendertype/RenderTypes#trimmedArmorGlint @HEAD": 1,
    "net/minecraft/client/renderer/special/PlayerHeadSpecialRenderer#extractArgument @HEAD": 1,
    "net/minecraft/client/renderer/state/gui/GuiRenderState#addItem @HEAD": 1,
    "net/minecraft/client/renderer/state/gui/GuiRenderState#addText @HEAD": 1,
    "net/minecraft/client/renderer/state/gui/GuiRenderState#findAppropriateNode @HEAD": 1,
    "net/minecraft/client/renderer/state/level/QuadParticleRenderState#renderRotatedQuad @HEAD": 2,
    "net/minecraft/client/renderer/texture/AbstractTexture#getTexture @HEAD": 1,
    "net/minecraft/client/renderer/texture/AbstractTexture#getTexture @RETURN": 1,
    "net/minecraft/client/renderer/texture/AbstractTexture#getTextureView @HEAD": 1,
    "net/minecraft/client/renderer/texture/DynamicTexture#close @HEAD": 1,
    "net/minecraft/client/renderer/texture/ReloadableTexture#doLoad @RETURN": 1,
    "net/minecraft/client/renderer/texture/SpriteContents#close @TAIL": 1,
    "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#<init> @RETURN": 2,
    "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#needsToDraw @HEAD": 2,
    "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#tick @HEAD": 3,
    "net/minecraft/client/renderer/texture/SpriteLoader#stitch @HEAD": 1,
    "net/minecraft/client/renderer/texture/SpriteLoader#stitch @RETURN": 1,
    "net/minecraft/client/renderer/texture/Stitcher#gatherSprites @HEAD": 1,
    "net/minecraft/client/renderer/texture/Stitcher#stitch @HEAD": 1,
    "net/minecraft/client/renderer/texture/TextureAtlas#cycleAnimationFrames @TAIL": 1,
    "net/minecraft/client/renderer/texture/TextureAtlas#getSprite @RETURN": 2,
    "net/minecraft/client/renderer/texture/TextureAtlas#upload @RETURN": 5,
    "net/minecraft/client/renderer/texture/TextureAtlasSprite#wrap @HEAD": 1,
    "net/minecraft/client/renderer/texture/TextureManager#close @TAIL": 1,
    "net/minecraft/client/renderer/texture/TextureManager#dumpAllSheets @RETURN": 1,
    "net/minecraft/client/renderer/texture/TextureManager#lambda$reload$2 @TAIL": 1,
    "net/minecraft/client/renderer/texture/TextureManager#lambda$reload$3 @TAIL": 1,
    "net/minecraft/client/resources/MapTextureManager#getOrCreateMapInstance @HEAD": 2,
    "net/minecraft/client/resources/MapTextureManager#resetData @RETURN": 2,
    "net/minecraft/client/resources/MapTextureManager$MapInstance#<init> @RETURN": 2,
    "net/minecraft/client/resources/language/ClientLanguage#<init> @RETURN": 1,
    "net/minecraft/client/resources/language/ClientLanguage#appendFrom @HEAD": 1,
    "net/minecraft/client/resources/language/ClientLanguage#getOrDefault @HEAD": 1,
    "net/minecraft/client/resources/language/ClientLanguage#has @HEAD": 1,
    "net/minecraft/client/resources/language/ClientLanguage#loadFrom @HEAD": 2,
    "net/minecraft/client/resources/model/BlockStateDefinitions#<clinit> @RETURN": 1,
    "net/minecraft/client/resources/model/ModelManager#discoverModelDependencies @HEAD": 1,
    "net/minecraft/client/resources/model/ModelManager#loadBlockModels @HEAD": 1,
    "net/minecraft/client/resources/model/geometry/BakedQuad#<init> @RETURN": 2,
    "net/minecraft/client/resources/model/sprite/AtlasManager#get @RETURN": 2,
    "net/minecraft/client/resources/model/sprite/AtlasManager#prepareSharedState @RETURN": 1,
    "net/minecraft/client/resources/model/sprite/AtlasManager#reload @RETURN": 1,
    "net/minecraft/client/resources/model/sprite/TextureSlots#isTextureReference @HEAD": 1,
    "net/minecraft/client/resources/server/DownloadedPackSource#loadRequestedPacks @RETURN": 1,
    "net/minecraft/client/resources/server/ServerPackManager#onDownload @HEAD": 1,
    "net/minecraft/client/resources/sounds/EntityBoundSoundInstance#<init> @TAIL": 1,
    "net/minecraft/client/resources/sounds/EntityBoundSoundInstance#tick @TAIL": 1,
    "net/minecraft/client/resources/sounds/GuardianAttackSoundInstance#<init> @TAIL": 1,
    "net/minecraft/client/server/IntegratedServer#<init> @RETURN": 1,
    "net/minecraft/client/server/IntegratedServer#initServer @RETURN": 1,
    "net/minecraft/client/server/IntegratedServer#onServerCrash @HEAD": 1,
    "net/minecraft/client/server/IntegratedServer#publishServer @RETURN": 1,
    "net/minecraft/client/sounds/SoundManager#prepare @HEAD": 1,
    "net/minecraft/client/telemetry/ClientTelemetryManager#createEventSender @HEAD": 1,
    "net/minecraft/client/tutorial/Tutorial#tick @HEAD": 1,
    "net/minecraft/client/waypoints/ClientWaypointManager#hasWaypoints @HEAD": 1,
    "net/minecraft/core/Direction#<init> @RETURN": 2,
    "net/minecraft/core/MappedRegistry#<init> @RETURN": 1,
    "net/minecraft/core/MappedRegistry#freeze @HEAD": 1,
    "net/minecraft/core/MappedRegistry#prepareTagReload @RETURN": 1,
    "net/minecraft/core/component/PatchedDataComponentMap#applyPatch @RETURN": 2,
    "net/minecraft/core/component/PatchedDataComponentMap#ensureMapOwnership @HEAD": 2,
    "net/minecraft/core/component/PatchedDataComponentMap#remove @RETURN": 2,
    "net/minecraft/core/component/PatchedDataComponentMap#restorePatch @RETURN": 2,
    "net/minecraft/core/component/PatchedDataComponentMap#set @RETURN": 2,
    "net/minecraft/core/particles/ParticleLimit#equals @HEAD": 1,
    "net/minecraft/core/particles/ParticleLimit#hashCode @HEAD": 1,
    "net/minecraft/core/registries/BuiltInRegistries#<clinit> @RETURN": 1,
    "net/minecraft/locale/Language#inject @HEAD": 1,
    "net/minecraft/locale/Language#inject @TAIL": 1,
    "net/minecraft/network/Connection#/^ @HEAD": 1,
    "net/minecraft/network/Connection#initiateServerboundPlayConnection @HEAD": 2,
    "net/minecraft/network/Connection#name=/^ @HEAD": 1,
    "net/minecraft/network/Connection#setupCompression @HEAD": 1,
    "net/minecraft/network/Connection#setupCompression @RETURN": 1,
    "net/minecraft/network/Varint21FrameDecoder#decode @HEAD": 1,
    "net/minecraft/network/chat/contents/TranslatableContents#getArgument @HEAD": 1,
    "net/minecraft/network/chat/contents/objects/PlayerSprite#defaultFallback @HEAD": 1,
    "net/minecraft/network/codec/ByteBufCodecs$37#decode @RETURN": 1,
    "net/minecraft/network/codec/ByteBufCodecs$37#encode @HEAD": 1,
    "net/minecraft/network/protocol/game/ClientboundAwardStatsPacket#handle* @RETURN": 1,
    "net/minecraft/network/protocol/game/ServerboundChatCommandSignedPacket#argumentSignatures @RETURN": 1,
    "net/minecraft/network/protocol/game/ServerboundChatPacket#signature @RETURN": 1,
    "net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket#handle @HEAD": 1,
    "net/minecraft/network/protocol/game/ServerboundContainerClosePacket#<init> @RETURN": 1,
    "net/minecraft/network/protocol/login/ServerboundKeyPacket#* @HEAD": 1,
    "net/minecraft/realms/RealmsConnect#connect @HEAD": 1,
    "net/minecraft/resources/Identifier#<init> @RETURN": 2,
    "net/minecraft/resources/Identifier#isValidPath @HEAD": 1,
    "net/minecraft/resources/Identifier#validPathChar @HEAD": 1,
    "net/minecraft/resources/ResourceKey#create @HEAD": 1,
    "net/minecraft/server/Bootstrap#bootStrap @HEAD": 1,
    "net/minecraft/server/Bootstrap#bootStrap @RETURN": 1,
    "net/minecraft/server/ChainedJsonException#forException @HEAD": 1,
    "net/minecraft/server/Main#main @HEAD": 1,
    "net/minecraft/server/MinecraftServer#logTickMethodTime @HEAD": 1,
    "net/minecraft/server/MinecraftServer#onGameRuleChanged @HEAD": 1,
    "net/minecraft/server/MinecraftServer#onServerExit @RETURN": 1,
    "net/minecraft/server/MinecraftServer#runServer @HEAD": 1,
    "net/minecraft/server/MinecraftServer#saveAllChunks @HEAD": 1,
    "net/minecraft/server/MinecraftServer#stopServer @RETURN": 1,
    "net/minecraft/server/MinecraftServer#stopServer @TAIL": 2,
    "net/minecraft/server/MinecraftServer#tickServer @TAIL": 2,
    "net/minecraft/server/ReloadableServerRegistries$Holder#getLootTable @RETURN": 1,
    "net/minecraft/server/ReloadableServerResources#updateComponentsAndStaticRegistryTags @RETURN": 1,
    "net/minecraft/server/ServerFunctionManager#executeTagFunctions @HEAD": 1,
    "net/minecraft/server/ServerFunctionManager#executeTagFunctions @RETURN": 1,
    "net/minecraft/server/ServerFunctionManager#getGameLoopSender @RETURN": 1,
    "net/minecraft/server/ServerScoreboard#addPlayerToTeam @RETURN": 1,
    "net/minecraft/server/ServerScoreboard#removePlayerFromTeam @RETURN": 1,
    "net/minecraft/server/WorldLoader#load @HEAD": 2,
    "net/minecraft/server/commands/SpreadPlayersCommand#spreadPlayers @HEAD": 1,
    "net/minecraft/server/dedicated/DedicatedServer#enforceSecureProfile @RETURN": 1,
    "net/minecraft/server/level/ChunkHolder#addSaveDependency @RETURN": 1,
    "net/minecraft/server/level/ChunkHolder#updateFutures @RETURN": 1,
    "net/minecraft/server/level/ChunkMap#<init> @RETURN": 1,
    "net/minecraft/server/level/ChunkMap#processUnloads @RETURN": 1,
    "net/minecraft/server/level/ChunkMap#save @RETURN": 1,
    "net/minecraft/server/level/ChunkMap#setServerViewDistance @RETURN": 1,
    "net/minecraft/server/level/ChunkMap#tick @RETURN": 1,
    "net/minecraft/server/level/ChunkMap#updateChunkTracking @HEAD": 1,
    "net/minecraft/server/level/ChunkMap#updatePlayerStatus @HEAD": 1,
    "net/minecraft/server/level/DistanceManager#<init> @RETURN": 1,
    "net/minecraft/server/level/ServerChunkCache#<init> @RETURN": 1,
    "net/minecraft/server/level/ServerChunkCache#clearCache @HEAD": 2,
    "net/minecraft/server/level/ServerChunkCache#getChunk @HEAD": 1,
    "net/minecraft/server/level/ServerChunkCache#tick @HEAD": 2,
    "net/minecraft/server/level/ServerChunkCache#tickChunks @HEAD": 1,
    "net/minecraft/server/level/ServerLevel#<init> @RETURN": 2,
    "net/minecraft/server/level/ServerLevel#<init> @TAIL": 1,
    "net/minecraft/server/level/ServerLevel#addPlayer @HEAD": 1,
    "net/minecraft/server/level/ServerLevel#explode @RETURN": 1,
    "net/minecraft/server/level/ServerLevel#tickBlock @HEAD": 1,
    "net/minecraft/server/level/ServerLevel#tickBlock @TAIL": 1,
    "net/minecraft/server/level/ServerLevel#updateNeighborsAt @TAIL": 1,
    "net/minecraft/server/level/ServerLevel#updateNeighborsAtExceptFromFacing @TAIL": 1,
    "net/minecraft/server/level/ServerLevel$EntityCallbacks#<init> @RETURN": 2,
    "net/minecraft/server/level/ServerPlayer#findRespawnPositionAndUseSpawnBlock @HEAD": 1,
    "net/minecraft/server/level/ServerPlayer#loadAndSpawnEnderPearls @HEAD": 1,
    "net/minecraft/server/level/ServerPlayer#registerEnderPearl @HEAD": 1,
    "net/minecraft/server/level/ServerPlayer#restoreFrom @RETURN": 1,
    "net/minecraft/server/level/ServerPlayer#setServerLevel @RETURN": 1,
    "net/minecraft/server/level/ServerPlayer#teleport @HEAD": 1,
    "net/minecraft/server/level/ServerPlayer#tick @HEAD": 1,
    "net/minecraft/server/level/ServerPlayer#updateOptions @HEAD": 1,
    "net/minecraft/server/network/LegacyQueryHandler#channelRead @HEAD": 1,
    "net/minecraft/server/network/ServerCommonPacketListenerImpl#Lnet/minecraft/server/network/ServerCommonPacketListenerImpl;send @HEAD": 1,
    "net/minecraft/server/network/ServerCommonPacketListenerImpl#send @HEAD": 1,
    "net/minecraft/server/network/ServerConfigurationPacketListenerImpl#handleAcceptCodeOfConduct @HEAD": 1,
    "net/minecraft/server/network/ServerConfigurationPacketListenerImpl#handleResourcePackResponse @HEAD": 1,
    "net/minecraft/server/network/ServerConnectionListener#startTcpServerListener @TAIL": 1,
    "net/minecraft/server/network/ServerConnectionListener#stop @HEAD": 1,
    "net/minecraft/server/network/ServerGamePacketListenerImpl#handleMovePlayer @HEAD": 1,
    "net/minecraft/server/network/ServerGamePacketListenerImpl#handleMovePlayer @RETURN": 1,
    "net/minecraft/server/packs/FilePackResources#close @HEAD": 1,
    "net/minecraft/server/packs/FilePackResources#getNamespaces @HEAD": 1,
    "net/minecraft/server/packs/FilePackResources#listResources @HEAD": 1,
    "net/minecraft/server/packs/PathPackResources#<init> @TAIL": 1,
    "net/minecraft/server/packs/repository/Pack#readPackMetadata @RETURN": 1,
    "net/minecraft/server/packs/repository/PackRepository#<init> @RETURN": 1,
    "net/minecraft/server/packs/repository/PackRepository#discoverAvailable @RETURN": 1,
    "net/minecraft/server/packs/repository/PackRepository#reload @HEAD": 1,
    "net/minecraft/server/packs/resources/MultiPackResourceManager#<init> @TAIL": 1,
    "net/minecraft/server/packs/resources/ReloadableResourceManager#<init> @TAIL": 1,
    "net/minecraft/server/packs/resources/ReloadableResourceManager#registerReloadListener @TAIL": 1,
    "net/minecraft/server/players/PlayerList#/^ @HEAD": 1,
    "net/minecraft/server/players/PlayerList#/^<init>$/ @TAIL": 1,
    "net/minecraft/server/players/PlayerList#reloadResources @RETURN": 1,
    "net/minecraft/server/players/PlayerList#sendLevelInfo @HEAD": 2,
    "net/minecraft/server/players/PlayerList#setSimulationDistance @HEAD": 1,
    "net/minecraft/server/players/PlayerList#setViewDistance @HEAD": 1,
    "net/minecraft/server/players/PlayerList#verifyChatTrusted @HEAD": 1,
    "net/minecraft/server/rcon/RconConsoleSource#sendSystemMessage @RETURN": 1,
    "net/minecraft/stats/RecipeBookSettings#getSettings @HEAD": 1,
    "net/minecraft/stats/RecipeBookSettings#replaceFrom @TAIL": 1,
    "net/minecraft/stats/RecipeBookSettings#updateSettings @HEAD": 1,
    "net/minecraft/tags/TagLoader#build @HEAD": 1,
    "net/minecraft/tags/TagLoader#build @RETURN": 1,
    "net/minecraft/tags/TagLoader#loadPendingTags @HEAD": 1,
    "net/minecraft/tags/TagLoader#tryBuildTag @RETURN": 1,
    "net/minecraft/util/ClassInstanceMultiMap#<init> @RETURN": 2,
    "net/minecraft/util/Mth#<clinit> @RETURN": 2,
    "net/minecraft/util/datafix/fixes/BlockStateData#<clinit> @RETURN": 1,
    "net/minecraft/util/datafix/fixes/BlockStateData#register @HEAD": 1,
    "net/minecraft/util/datafix/fixes/ItemStackComponentizationFix#fixItemStack @HEAD": 1,
    "net/minecraft/util/datafix/schemas/V1460#registerBlockEntities @RETURN": 1,
    "net/minecraft/util/datafix/schemas/V1460#registerEntities @RETURN": 1,
    "net/minecraft/util/filefix/fixes/DimensionStorageFileFix#makeFixer @RETURN": 1,
    "net/minecraft/util/profiling/Profiler#startUsing @RETURN": 1,
    "net/minecraft/util/profiling/Profiler#stopUsing @RETURN": 2,
    "net/minecraft/util/profiling/Profiler#use @RETURN": 1,
    "net/minecraft/world/attribute/AmbientParticle#<init> @RETURN": 2,
    "net/minecraft/world/attribute/EnvironmentAttributeProbe#lambda$tick$0 @HEAD": 1,
    "net/minecraft/world/attribute/EnvironmentAttributeProbe#method_75687 @HEAD": 1,
    "net/minecraft/world/attribute/EnvironmentAttributeProbe$ValueProbe#get @HEAD": 1,
    "net/minecraft/world/attribute/EnvironmentAttributeSystem$Builder#addConstantEntry @HEAD": 1,
    "net/minecraft/world/attribute/EnvironmentAttributeSystem$Builder#addDefaultLayers @RETURN": 1,
    "net/minecraft/world/attribute/SpatialAttributeInterpolator#clear @HEAD": 1,
    "net/minecraft/world/effect/MobEffectUtil#formatDuration @HEAD": 1,
    "net/minecraft/world/entity/AgeableMob#<init> @RETURN": 2,
    "net/minecraft/world/entity/AreaEffectCloud#tick @HEAD": 1,
    "net/minecraft/world/entity/Entity#<init> @RETURN": 1,
    "net/minecraft/world/entity/Entity#<init> @TAIL": 1,
    "net/minecraft/world/entity/Entity#addTag @HEAD": 1,
    "net/minecraft/world/entity/Entity#getDismountLocationForPassenger @HEAD": 1,
    "net/minecraft/world/entity/Entity#getViewXRot @HEAD": 1,
    "net/minecraft/world/entity/Entity#isInWater @HEAD": 1,
    "net/minecraft/world/entity/Entity#isInvulnerable @HEAD": 1,
    "net/minecraft/world/entity/Entity#load @HEAD": 1,
    "net/minecraft/world/entity/Entity#load @RETURN": 1,
    "net/minecraft/world/entity/Entity#move @HEAD": 1,
    "net/minecraft/world/entity/Entity#moveRelative @HEAD": 1,
    "net/minecraft/world/entity/Entity#onBelowWorld @HEAD": 1,
    "net/minecraft/world/entity/Entity#onInsideBlock @HEAD": 1,
    "net/minecraft/world/entity/Entity#onPassengerTurned @HEAD": 1,
    "net/minecraft/world/entity/Entity#playEntityOnFireExtinguishedSound @TAIL": 1,
    "net/minecraft/world/entity/Entity#positionRider @HEAD": 1,
    "net/minecraft/world/entity/Entity#push @HEAD": 2,
    "net/minecraft/world/entity/Entity#remove @HEAD": 2,
    "net/minecraft/world/entity/Entity#remove @TAIL": 1,
    "net/minecraft/world/entity/Entity#saveWithoutId @HEAD": 1,
    "net/minecraft/world/entity/Entity#setBoundingBox @HEAD": 1,
    "net/minecraft/world/entity/Entity#setDeltaMovement @HEAD": 1,
    "net/minecraft/world/entity/Entity#setLevelCallback @RETURN": 2,
    "net/minecraft/world/entity/Entity#setPos @HEAD": 1,
    "net/minecraft/world/entity/Entity#setPosRaw @HEAD": 1,
    "net/minecraft/world/entity/Entity#spawnSprintParticle @TAIL": 1,
    "net/minecraft/world/entity/Entity#turn @HEAD": 1,
    "net/minecraft/world/entity/Entity#updateFluidInteraction @HEAD": 1,
    "net/minecraft/world/entity/Entity#walkingStepSound @HEAD": 1,
    "net/minecraft/world/entity/EntityEquipment#clear @HEAD": 1,
    "net/minecraft/world/entity/EntityEquipment#clear @RETURN": 1,
    "net/minecraft/world/entity/EntityEquipment#setAll @HEAD": 2,
    "net/minecraft/world/entity/EntityEquipment#setAll @RETURN": 2,
    "net/minecraft/world/entity/EntityFluidInteraction#update @TAIL": 1,
    "net/minecraft/world/entity/ExperienceOrb#addAdditionalSaveData @TAIL": 1,
    "net/minecraft/world/entity/ExperienceOrb#canMerge @HEAD": 2,
    "net/minecraft/world/entity/ExperienceOrb#playerTouch @HEAD": 1,
    "net/minecraft/world/entity/ExperienceOrb#readAdditionalSaveData @TAIL": 1,
    "net/minecraft/world/entity/ExperienceOrb#tryMergeToExisting @HEAD": 1,
    "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#apply @HEAD": 2,
    "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#flushStep @HEAD": 2,
    "net/minecraft/world/entity/Leashable#dropLeash @TAIL": 1,
    "net/minecraft/world/entity/LivingEntity#<init> @TAIL": 1,
    "net/minecraft/world/entity/LivingEntity#actuallyHurt @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#addAdditionalSaveData @TAIL": 1,
    "net/minecraft/world/entity/LivingEntity#collectEquipmentChanges @HEAD": 2,
    "net/minecraft/world/entity/LivingEntity#drop @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#dropAllDeathLoot @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#getFrictionInfluencedSpeed @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#getItemBySlot @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#readAdditionalSaveData @TAIL": 1,
    "net/minecraft/world/entity/LivingEntity#setHealth @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#stopRiding @RETURN": 2,
    "net/minecraft/world/entity/LivingEntity#stopUsingItem @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#swing @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#swingAndResetAttackStrength @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#tick @TAIL": 3,
    "net/minecraft/world/entity/LivingEntity#tickHeadTurn @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#updateSwingTime @HEAD": 1,
    "net/minecraft/world/entity/LivingEntity#updateUsingItem @HEAD": 1,
    "net/minecraft/world/entity/Mob#addAdditionalSaveData @RETURN": 1,
    "net/minecraft/world/entity/Mob#checkAndHandleImportantInteractions @HEAD": 1,
    "net/minecraft/world/entity/Mob#equipItemIfPossible @HEAD": 1,
    "net/minecraft/world/entity/Mob#equipItemIfPossible @RETURN": 1,
    "net/minecraft/world/entity/Mob#finalizeSpawn @HEAD": 1,
    "net/minecraft/world/entity/Mob#finalizeSpawn @TAIL": 1,
    "net/minecraft/world/entity/Mob#readAdditionalSaveData @RETURN": 1,
    "net/minecraft/world/entity/Mob#setItemSlotAndDropWhenKilled @HEAD": 1,
    "net/minecraft/world/entity/Mob#setItemSlotAndDropWhenKilled @TAIL": 1,
    "net/minecraft/world/entity/Mob#setPersistenceRequired @HEAD": 1,
    "net/minecraft/world/entity/Mob#setTarget @HEAD": 1,
    "net/minecraft/world/entity/Mob#startRiding @RETURN": 2,
    "net/minecraft/world/entity/MobCategory#<init> @RETURN": 1,
    "net/minecraft/world/entity/MobCategory#getMaxInstancesPerChunk @HEAD": 1,
    "net/minecraft/world/entity/ai/Brain#<init> @RETURN": 4,
    "net/minecraft/world/entity/ai/Brain#addActivity @RETURN": 2,
    "net/minecraft/world/entity/ai/Brain#clearMemories @RETURN": 2,
    "net/minecraft/world/entity/ai/Brain#registerMemory @RETURN": 2,
    "net/minecraft/world/entity/ai/Brain#removeAllBehaviors @RETURN": 2,
    "net/minecraft/world/entity/ai/attributes/AttributeMap#<init> @RETURN": 2,
    "net/minecraft/world/entity/ai/attributes/AttributeSupplier#<init> @RETURN": 1,
    "net/minecraft/world/entity/ai/attributes/DefaultAttributes#getSupplier @HEAD": 1,
    "net/minecraft/world/entity/ai/attributes/DefaultAttributes#hasSupplier @HEAD": 1,
    "net/minecraft/world/entity/ai/behavior/Behavior#<init> @RETURN": 2,
    "net/minecraft/world/entity/ai/goal/CatSitOnBlockGoal#isValidTarget @HEAD": 1,
    "net/minecraft/world/entity/ai/memory/MemorySlot#set @HEAD": 2,
    "net/minecraft/world/entity/ai/memory/MemorySlot#set @RETURN": 2,
    "net/minecraft/world/entity/ai/navigation/PathNavigation#moveTo @RETURN": 2,
    "net/minecraft/world/entity/ai/navigation/PathNavigation#stop @RETURN": 2,
    "net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor#doTick @HEAD": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiType#is @RETURN": 1,
    "net/minecraft/world/entity/ai/village/poi/PoiTypes#forState @RETURN": 1,
    "net/minecraft/world/entity/ai/village/poi/PoiTypes#hasPoi @RETURN": 1,
    "net/minecraft/world/entity/animal/Animal#addAdditionalSaveData @TAIL": 1,
    "net/minecraft/world/entity/animal/Animal#readAdditionalSaveData @TAIL": 1,
    "net/minecraft/world/entity/animal/allay/Allay#duplicateAllay @HEAD": 1,
    "net/minecraft/world/entity/animal/bee/Bee#hurtServer @HEAD": 1,
    "net/minecraft/world/entity/animal/equine/AbstractHorse#aiStep @TAIL": 1,
    "net/minecraft/world/entity/animal/equine/AbstractHorse#tickRidden @TAIL": 1,
    "net/minecraft/world/entity/animal/goat/Goat#<init> @RETURN": 2,
    "net/minecraft/world/entity/animal/happyghast/HappyGhast#adultGhastSetup @RETURN": 2,
    "net/minecraft/world/entity/animal/happyghast/HappyGhast#babyGhastSetup @RETURN": 2,
    "net/minecraft/world/entity/animal/sheep/Sheep#mobInteract @HEAD": 1,
    "net/minecraft/world/entity/boss/enderdragon/EnderDragon#tickDeath @HEAD": 1,
    "net/minecraft/world/entity/item/ItemEntity#fireImmune @HEAD": 1,
    "net/minecraft/world/entity/item/ItemEntity#ignoreExplosion @HEAD": 1,
    "net/minecraft/world/entity/item/ItemEntity#setItem @HEAD": 2,
    "net/minecraft/world/entity/item/ItemEntity#setItem @TAIL": 1,
    "net/minecraft/world/entity/item/ItemEntity#tick @HEAD": 1,
    "net/minecraft/world/entity/item/PrimedTnt#<init> @TAIL": 1,
    "net/minecraft/world/entity/item/PrimedTnt#tick @TAIL": 1,
    "net/minecraft/world/entity/monster/Creeper#tick @TAIL": 1,
    "net/minecraft/world/entity/monster/Enderman#isBeingStaredBy @HEAD": 1,
    "net/minecraft/world/entity/monster/piglin/Piglin#populateDefaultEquipmentSlots @HEAD": 1,
    "net/minecraft/world/entity/monster/piglin/PiglinAi#isWearingSafeArmor @HEAD": 1,
    "net/minecraft/world/entity/monster/piglin/PiglinBrute#populateDefaultEquipmentSlots @HEAD": 1,
    "net/minecraft/world/entity/monster/zombie/ZombieVillager#lambda$finishConversion$0 @RETURN": 1,
    "net/minecraft/world/entity/player/Inventory#addAndPickItem @HEAD": 1,
    "net/minecraft/world/entity/player/Inventory#addResource @HEAD": 1,
    "net/minecraft/world/entity/player/Inventory#addResource @TAIL": 1,
    "net/minecraft/world/entity/player/Inventory#getFreeSlot @HEAD": 1,
    "net/minecraft/world/entity/player/Inventory#pickSlot @HEAD": 1,
    "net/minecraft/world/entity/player/Inventory#pickSlot @RETURN": 1,
    "net/minecraft/world/entity/player/Inventory#setSelectedSlot @HEAD": 1,
    "net/minecraft/world/entity/player/Inventory#setSelectedSlot @RETURN": 1,
    "net/minecraft/world/entity/player/Player#canEat @HEAD": 1,
    "net/minecraft/world/entity/player/Player#doWaterSplashEffect @HEAD": 1,
    "net/minecraft/world/entity/player/Player#getFlyingSpeed @RETURN": 1,
    "net/minecraft/world/entity/player/Player#hurtServer @HEAD": 3,
    "net/minecraft/world/entity/player/Player#interactOn @HEAD": 1,
    "net/minecraft/world/entity/player/Player#readAdditionalSaveData @HEAD": 1,
    "net/minecraft/world/entity/player/Player#readAdditionalSaveData @RETURN": 1,
    "net/minecraft/world/entity/player/Player#resetAttackStrengthTicker @HEAD": 1,
    "net/minecraft/world/entity/player/Player#tick @RETURN": 1,
    "net/minecraft/world/entity/player/Player#tick @TAIL": 2,
    "net/minecraft/world/entity/player/ProfilePublicKey$Data#hasExpired @HEAD": 2,
    "net/minecraft/world/entity/projectile/FishingHook#onClientRemoval @RETURN": 1,
    "net/minecraft/world/entity/projectile/FishingHook#setOwner @RETURN": 1,
    "net/minecraft/world/entity/projectile/Projectile#Lnet/minecraft/world/entity/projectile/Projectile;onHit @HEAD": 1,
    "net/minecraft/world/entity/projectile/ProjectileUtil#getHitEntitiesAlong @HEAD": 1,
    "net/minecraft/world/entity/projectile/hurtingprojectile/SmallFireball#onHitEntity @HEAD": 1,
    "net/minecraft/world/entity/projectile/throwableitemprojectile/Snowball#handleEntityEvent @TAIL": 1,
    "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEgg#handleEntityEvent @TAIL": 1,
    "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearl#playSound @HEAD": 1,
    "net/minecraft/world/entity/raid/Raid#tick @HEAD": 2,
    "net/minecraft/world/entity/vehicle/boat/AbstractBoat#setInput @HEAD": 1,
    "net/minecraft/world/entity/vehicle/boat/AbstractBoat#tick @TAIL": 1,
    "net/minecraft/world/entity/vehicle/minecart/MinecartCommandBlock#addAdditionalSaveData @RETURN": 1,
    "net/minecraft/world/entity/vehicle/minecart/MinecartCommandBlock#readAdditionalSaveData @RETURN": 1,
    "net/minecraft/world/entity/vehicle/minecart/MinecartFurnace#interact @TAIL": 1,
    "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack @HEAD": 2,
    "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack @RETURN": 2,
    "net/minecraft/world/inventory/AbstractContainerMenu#addSlot @HEAD": 1,
    "net/minecraft/world/inventory/AbstractContainerMenu#doClick @HEAD": 2,
    "net/minecraft/world/inventory/AbstractContainerMenu#getRedstoneSignalFromContainer @HEAD": 1,
    "net/minecraft/world/inventory/AnvilMenu#Lnet/minecraft/world/inventory/AnvilMenu;onTake @HEAD": 1,
    "net/minecraft/world/inventory/AnvilMenu#Lnet/minecraft/world/inventory/AnvilMenu;onTake @TAIL": 1,
    "net/minecraft/world/inventory/CraftingMenu#stillValid @HEAD": 1,
    "net/minecraft/world/inventory/PlayerEnderChestContainer#setChanged @HEAD": 1,
    "net/minecraft/world/inventory/ResultSlot#checkTakeAchievements @HEAD": 1,
    "net/minecraft/world/inventory/StonecutterMenu$2#onTake @HEAD": 1,
    "net/minecraft/world/item/BlockItem#getPlacementState @HEAD": 1,
    "net/minecraft/world/item/BowItem#releaseUsing @HEAD": 1,
    "net/minecraft/world/item/CreativeModeTab#buildContents @TAIL": 1,
    "net/minecraft/world/item/CreativeModeTabs#tryRebuildTabContents @RETURN": 1,
    "net/minecraft/world/item/Item#getPlayerPOVHitResult @HEAD": 1,
    "net/minecraft/world/item/Item#useOn @TAIL": 1,
    "net/minecraft/world/item/ItemStack#addDetailsToTooltip @HEAD": 1,
    "net/minecraft/world/item/ItemStack#addToTooltip @HEAD": 1,
    "net/minecraft/world/item/ItemStack#finishUsingItem @HEAD": 1,
    "net/minecraft/world/item/ItemStack#getBarColor @HEAD": 1,
    "net/minecraft/world/item/ItemStack#getTooltipImage @HEAD": 1,
    "net/minecraft/world/item/ItemStack#hasFoil @HEAD": 1,
    "net/minecraft/world/item/ItemStack#overrideOtherStackedOnMe @TAIL": 1,
    "net/minecraft/world/item/ItemStack#set @RETURN": 2,
    "net/minecraft/world/item/ItemStack#setCount @HEAD": 2,
    "net/minecraft/world/item/MaceItem#knockback @HEAD": 1,
    "net/minecraft/world/item/MapItem#update @HEAD": 1,
    "net/minecraft/world/item/SpawnEggItem#useOn @HEAD": 1,
    "net/minecraft/world/item/component/Consumable#onConsume @HEAD": 1,
    "net/minecraft/world/item/component/ItemContainerContents#addToTooltip @HEAD": 1,
    "net/minecraft/world/item/crafting/RecipeManager#<clinit> @TAIL": 1,
    "net/minecraft/world/item/crafting/RecipeManager#<init> @TAIL": 1,
    "net/minecraft/world/level/BaseCommandBlock#load @RETURN": 1,
    "net/minecraft/world/level/BaseCommandBlock#setCommand @RETURN": 1,
    "net/minecraft/world/level/Level#<init> @RETURN": 4,
    "net/minecraft/world/level/Level#close @HEAD": 1,
    "net/minecraft/world/level/Level#tickBlockEntities @HEAD": 2,
    "net/minecraft/world/level/LocalMobCapCalculator#<init> @RETURN": 1,
    "net/minecraft/world/level/LocalMobCapCalculator$MobCounts#<init> @RETURN": 1,
    "net/minecraft/world/level/PathNavigationRegion#<init> @RETURN": 2,
    "net/minecraft/world/level/ServerExplosion#<init> @RETURN": 4,
    "net/minecraft/world/level/ServerExplosion#calculateExplodedPositions @RETURN": 2,
    "net/minecraft/world/level/ServerExplosion#explode @HEAD": 1,
    "net/minecraft/world/level/ServerExplosion#getSeenPercent @HEAD": 2,
    "net/minecraft/world/level/biome/Biome#<init> @RETURN": 2,
    "net/minecraft/world/level/biome/BiomeSpecialEffects$GrassColorModifier$3#modifyColor @HEAD": 1,
    "net/minecraft/world/level/biome/Biomes#register @TAIL": 1,
    "net/minecraft/world/level/biome/MobSpawnSettings#<init> @RETURN": 3,
    "net/minecraft/world/level/block/AbstractBedBlock#useWithoutItem @HEAD": 1,
    "net/minecraft/world/level/block/AmethystClusterBlock#<init> @RETURN": 1,
    "net/minecraft/world/level/block/Block#animateTick @HEAD": 1,
    "net/minecraft/world/level/block/Block#animateTick @TAIL": 1,
    "net/minecraft/world/level/block/Block#dropResources @HEAD": 1,
    "net/minecraft/world/level/block/Block#popResource @HEAD": 1,
    "net/minecraft/world/level/block/CalibratedSculkSensorBlock#lambda$getTicker$0 @RETURN": 2,
    "net/minecraft/world/level/block/CampfireBlock#isSmokeSource @HEAD": 1,
    "net/minecraft/world/level/block/CarvedPumpkinBlock#canSpawnGolem @HEAD": 1,
    "net/minecraft/world/level/block/CarvedPumpkinBlock#onPlace @HEAD": 1,
    "net/minecraft/world/level/block/ChestBlock#mirror @HEAD": 1,
    "net/minecraft/world/level/block/ComposterBlock#handleFill @TAIL": 1,
    "net/minecraft/world/level/block/DaylightDetectorBlock#useWithoutItem @HEAD": 1,
    "net/minecraft/world/level/block/DetectorRailBlock#rotate @RETURN": 1,
    "net/minecraft/world/level/block/DiodeBlock#onPlace @RETURN": 2,
    "net/minecraft/world/level/block/EnchantingTableBlock#isValidBookShelf @HEAD": 1,
    "net/minecraft/world/level/block/FallingParticlesLeavesBlock#animateTick @HEAD": 1,
    "net/minecraft/world/level/block/FarmlandBlock#turnToBaseBlock @TAIL": 1,
    "net/minecraft/world/level/block/FenceBlock#connectsTo @HEAD": 1,
    "net/minecraft/world/level/block/FenceBlock#isSameFence @HEAD": 1,
    "net/minecraft/world/level/block/FrostedIceBlock#onPlace @TAIL": 1,
    "net/minecraft/world/level/block/HopperBlock#neighborChanged @HEAD": 2,
    "net/minecraft/world/level/block/LeavesBlock#animateTick @HEAD": 1,
    "net/minecraft/world/level/block/LightningRodBlock#onLightningStrike @TAIL": 1,
    "net/minecraft/world/level/block/MushroomBlock#canSurvive @RETURN": 1,
    "net/minecraft/world/level/block/MushroomBlock#performBonemeal @HEAD": 1,
    "net/minecraft/world/level/block/NetherWartBlock#mayPlaceOn @RETURN": 1,
    "net/minecraft/world/level/block/NetherWartBlock#randomTick @HEAD": 1,
    "net/minecraft/world/level/block/PoweredRailBlock#rotate @RETURN": 1,
    "net/minecraft/world/level/block/PumpkinBlock#useItemOn @RETURN": 1,
    "net/minecraft/world/level/block/RailBlock#rotate @HEAD": 1,
    "net/minecraft/world/level/block/RailBlock#rotate @RETURN": 1,
    "net/minecraft/world/level/block/RedStoneWireBlock#getBlockSignal @HEAD": 1,
    "net/minecraft/world/level/block/RedstoneWireBlock#getBlockSignal @HEAD": 1,
    "net/minecraft/world/level/block/RedstoneWireBlock#neighborChanged @HEAD": 1,
    "net/minecraft/world/level/block/RedstoneWireBlock#updatePowerStrength @HEAD": 1,
    "net/minecraft/world/level/block/SculkSensorBlock#lambda$getTicker$0 @RETURN": 2,
    "net/minecraft/world/level/block/SculkShriekerBlock#lambda$getTicker$0 @RETURN": 2,
    "net/minecraft/world/level/block/SculkSpreader#addCursors @RETURN": 2,
    "net/minecraft/world/level/block/SlimeBlock#fallOn @HEAD": 1,
    "net/minecraft/world/level/block/StairBlock#mirror @HEAD": 1,
    "net/minecraft/world/level/block/WitherRoseBlock#animateTick @HEAD": 1,
    "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#getBurnDuration @RETURN": 1,
    "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#getTotalCookTime @RETURN": 1,
    "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#loadAdditional @RETURN": 2,
    "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#serverTick @RETURN": 2,
    "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#setItem @RETURN": 2,
    "net/minecraft/world/level/block/entity/BarrelBlockEntity#setItems @RETURN": 2,
    "net/minecraft/world/level/block/entity/BaseContainerBlockEntity#loadAdditional @RETURN": 2,
    "net/minecraft/world/level/block/entity/BeaconBlockEntity#setRemoved @RETURN": 1,
    "net/minecraft/world/level/block/entity/BeehiveBlockEntity#serverTick @HEAD": 1,
    "net/minecraft/world/level/block/entity/BlockEntity#<init> @RETURN": 4,
    "net/minecraft/world/level/block/entity/BlockEntity#fillCrashReportCategory @TAIL": 1,
    "net/minecraft/world/level/block/entity/BlockEntity#setBlockState @RETURN": 4,
    "net/minecraft/world/level/block/entity/BlockEntity#setChanged @RETURN": 2,
    "net/minecraft/world/level/block/entity/BlockEntity#setRemoved @HEAD": 2,
    "net/minecraft/world/level/block/entity/BlockEntity#setRemoved @RETURN": 2,
    "net/minecraft/world/level/block/entity/BrewingStandBlockEntity#loadAdditional @RETURN": 2,
    "net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick @HEAD": 2,
    "net/minecraft/world/level/block/entity/BrushableBlockEntity#tryLoadLootTable @RETURN": 1,
    "net/minecraft/world/level/block/entity/CampfireBlockEntity#cookTick @RETURN": 2,
    "net/minecraft/world/level/block/entity/CampfireBlockEntity#cooldownTick @RETURN": 2,
    "net/minecraft/world/level/block/entity/CampfireBlockEntity#loadAdditional @RETURN": 2,
    "net/minecraft/world/level/block/entity/ChestBlockEntity#lidAnimateTick @RETURN": 2,
    "net/minecraft/world/level/block/entity/ChestBlockEntity#lidAnimateTick @TAIL": 1,
    "net/minecraft/world/level/block/entity/ChestBlockEntity#setItems @RETURN": 2,
    "net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity#updateState @HEAD": 1,
    "net/minecraft/world/level/block/entity/CrafterBlockEntity#loadAdditional @RETURN": 2,
    "net/minecraft/world/level/block/entity/CrafterBlockEntity#serverTick @RETURN": 2,
    "net/minecraft/world/level/block/entity/CrafterBlockEntity#setCraftingTicksRemaining @RETURN": 2,
    "net/minecraft/world/level/block/entity/DispenserBlockEntity#setItems @RETURN": 2,
    "net/minecraft/world/level/block/entity/EnderChestBlockEntity#lidAnimateTick @RETURN": 2,
    "net/minecraft/world/level/block/entity/FuelValues#vanillaBurnTimes @RETURN": 1,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#setBlockState @HEAD": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#setCooldown @HEAD": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#setItems @RETURN": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#tryMoveItems @RETURN": 2,
    "net/minecraft/world/level/block/entity/JukeboxBlockEntity#setTheItem @HEAD": 1,
    "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#<init> @RETURN": 2,
    "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#loadAdditional @RETURN": 2,
    "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#serverTick @RETURN": 2,
    "net/minecraft/world/level/block/entity/SculkSensorBlockEntity#<init> @RETURN": 2,
    "net/minecraft/world/level/block/entity/SculkSensorBlockEntity#loadAdditional @RETURN": 2,
    "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#<init> @RETURN": 2,
    "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#loadAdditional @RETURN": 2,
    "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#canPlaceItemThroughFace @HEAD": 1,
    "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#setItems @RETURN": 2,
    "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#triggerEvent @HEAD": 2,
    "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#updateAnimation @RETURN": 2,
    "net/minecraft/world/level/block/entity/SignText#getRenderMessages @RETURN": 2,
    "net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity#beamAnimationTick @RETURN": 1,
    "net/minecraft/world/level/block/entity/vault/VaultBlockEntity$Client#emitConnectionParticlesForNearbyPlayers @HEAD": 1,
    "net/minecraft/world/level/block/state/BlockBehaviour#getDestroyProgress @TAIL": 1,
    "net/minecraft/world/level/block/state/BlockBehaviour#getSoundType @HEAD": 1,
    "net/minecraft/world/level/block/state/BlockBehaviour#updateShape @HEAD": 2,
    "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#getCollisionShape @HEAD": 1,
    "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#getShadeBrightness @RETURN": 1,
    "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache @HEAD": 2,
    "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache @RETURN": 1,
    "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache @TAIL": 2,
    "net/minecraft/world/level/block/state/BlockBehaviour$Properties#ofLegacyCopy @RETURN": 1,
    "net/minecraft/world/level/border/WorldBorder#<init> @RETURN": 2,
    "net/minecraft/world/level/border/WorldBorder#addListener @HEAD": 2,
    "net/minecraft/world/level/chunk/ChunkAccess#<init> @RETURN": 2,
    "net/minecraft/world/level/chunk/ChunkAccess#getOrCreateOffsetList @HEAD": 1,
    "net/minecraft/world/level/chunk/ImposterProtoChunk#<init> @RETURN": 1,
    "net/minecraft/world/level/chunk/LevelChunk#<init> @RETURN": 1,
    "net/minecraft/world/level/chunk/LevelChunk#<init> @TAIL": 1,
    "net/minecraft/world/level/chunk/LevelChunk#registerTickContainerInLevel @TAIL": 1,
    "net/minecraft/world/level/chunk/LevelChunk#removeGameEventListenerRegistry @RETURN": 2,
    "net/minecraft/world/level/chunk/LevelChunk#replaceWithPacketData @RETURN": 1,
    "net/minecraft/world/level/chunk/LevelChunk#setFullStatus @RETURN": 2,
    "net/minecraft/world/level/chunk/LevelChunk#unpackTicks @TAIL": 1,
    "net/minecraft/world/level/chunk/LevelChunk#unregisterTickContainerFromLevel @TAIL": 1,
    "net/minecraft/world/level/chunk/LevelChunk#updateBlockEntityTicker @HEAD": 1,
    "net/minecraft/world/level/chunk/LevelChunkSection#<init> @RETURN": 4,
    "net/minecraft/world/level/chunk/LevelChunkSection#read @HEAD": 2,
    "net/minecraft/world/level/chunk/LevelChunkSection#recalcBlockCounts @HEAD": 4,
    "net/minecraft/world/level/chunk/LevelChunkSection#setBlockState @RETURN": 4,
    "net/minecraft/world/level/chunk/LevelChunkSection$1BlockCounter#accept @HEAD": 2,
    "net/minecraft/world/level/chunk/PalettedContainer#<init> @RETURN": 6,
    "net/minecraft/world/level/chunk/PalettedContainer#<init> @TAIL": 6,
    "net/minecraft/world/level/chunk/PalettedContainer#read @RETURN": 2,
    "net/minecraft/world/level/chunk/storage/IOWorker#isOldChunk @HEAD": 1,
    "net/minecraft/world/level/chunk/storage/SectionStorage#<init> @RETURN": 2,
    "net/minecraft/world/level/chunk/storage/SerializableChunkData#copyOf @RETURN": 1,
    "net/minecraft/world/level/chunk/storage/SerializableChunkData#parse @HEAD": 1,
    "net/minecraft/world/level/chunk/storage/SerializableChunkData#read @RETURN": 1,
    "net/minecraft/world/level/chunk/storage/SerializableChunkData#saveTicks @TAIL": 1,
    "net/minecraft/world/level/chunk/storage/SerializableChunkData#write @RETURN": 1,
    "net/minecraft/world/level/dimension/end/EnderDragonFight#<init> @RETURN": 2,
    "net/minecraft/world/level/entity/EntitySection#add @RETURN": 2,
    "net/minecraft/world/level/entity/EntitySection#remove @RETURN": 2,
    "net/minecraft/world/level/entity/EntitySectionStorage#createSection @RETURN": 2,
    "net/minecraft/world/level/entity/PersistentEntitySectionManager#addEntity @HEAD": 2,
    "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#<init> @RETURN": 2,
    "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove @RETURN": 2,
    "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onRemove @HEAD": 2,
    "net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Listener#scheduleVibration @HEAD": 2,
    "net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator#<init> @RETURN": 1,
    "net/minecraft/world/level/levelgen/PatrolSpawner#tick @RETURN": 1,
    "net/minecraft/world/level/levelgen/feature/BambooFeature#place @HEAD": 1,
    "net/minecraft/world/level/levelgen/feature/DeltaFeature#isClear @HEAD": 1,
    "net/minecraft/world/level/levelgen/feature/DeltaFeature#place @HEAD": 1,
    "net/minecraft/world/level/levelgen/feature/GeodeFeature#place @HEAD": 1,
    "net/minecraft/world/level/levelgen/feature/LakeFeature#place @HEAD": 1,
    "net/minecraft/world/level/levelgen/feature/SpringFeature#place @HEAD": 1,
    "net/minecraft/world/level/levelgen/feature/TreeFeature#place @HEAD": 1,
    "net/minecraft/world/level/levelgen/flat/FlatLevelGeneratorPresets$Bootstrap#run @HEAD": 1,
    "net/minecraft/world/level/levelgen/structure/placement/ConcentricRingsStructurePlacement#<init> @RETURN": 1,
    "net/minecraft/world/level/levelgen/structure/placement/ConcentricRingsStructurePlacement#isPlacementChunk @HEAD": 1,
    "net/minecraft/world/level/levelgen/structure/pools/SinglePoolElement#place @HEAD": 1,
    "net/minecraft/world/level/levelgen/structure/templatesystem/BlockAgeProcessor#processBlock @HEAD": 1,
    "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager#<init> @RETURN": 1,
    "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager#tryLoad @RETURN": 1,
    "net/minecraft/world/level/lighting/LevelLightEngine#<init>* @TAIL": 1,
    "net/minecraft/world/level/lighting/LevelLightEngine#checkBlock @HEAD": 1,
    "net/minecraft/world/level/lighting/LevelLightEngine#lightOnInColumn @HEAD": 1,
    "net/minecraft/world/level/lighting/LevelLightEngine#runLightUpdates @RETURN": 1,
    "net/minecraft/world/level/lighting/LightEngine#getDataLayerData @HEAD": 1,
    "net/minecraft/world/level/lighting/LightEngine#getLightValue @HEAD": 1,
    "net/minecraft/world/level/material/FlowingFluid#getSpread @HEAD": 2,
    "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey#<init> @RETURN": 2,
    "net/minecraft/world/level/material/FluidState#<init> @RETURN": 2,
    "net/minecraft/world/level/material/LavaFluid#animateTick @HEAD": 1,
    "net/minecraft/world/level/material/LavaFluid#animateTick @TAIL": 1,
    "net/minecraft/world/level/material/WaterFluid#animateTick @TAIL": 1,
    "net/minecraft/world/level/portal/PortalShape#createPortalBlocks @HEAD": 1,
    "net/minecraft/world/level/portal/PortalShape#findAnyShape @RETURN": 1,
    "net/minecraft/world/level/portal/PortalShape#isComplete @HEAD": 1,
    "net/minecraft/world/level/portal/PortalShape#isValid @HEAD": 1,
    "net/minecraft/world/level/redstone/DefaultRedstoneWireEvaluator#calculateTargetStrength @HEAD": 2,
    "net/minecraft/world/level/redstone/ExperimentalRedstoneUtils#initialOrientation @RETURN": 1,
    "net/minecraft/world/level/redstone/RedstoneWireEvaluator#getIncomingWireSignal @HEAD": 2,
    "net/minecraft/world/level/saveddata/WeatherData#setRaining @HEAD": 1,
    "net/minecraft/world/level/storage/LevelStorageSource#validateAndCreateAccess @HEAD": 1,
    "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#checkLock @HEAD": 1,
    "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#deleteLevel @RETURN": 2,
    "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#deleteLevel @TAIL": 1,
    "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#makeWorldBackup @HEAD": 1,
    "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#renameLevel @TAIL": 1,
    "net/minecraft/world/level/storage/LevelSummary#canDelete @RETURN": 1,
    "net/minecraft/world/level/storage/loot/LootTable#getRandomItems @TAIL": 1,
    "net/minecraft/world/phys/shapes/CubePointRange#<init> @RETURN": 2,
    "net/minecraft/world/phys/shapes/CubeVoxelShape#<init> @RETURN": 2,
    "net/minecraft/world/phys/shapes/EntityCollisionContext#<init> @RETURN": 2,
    "net/minecraft/world/phys/shapes/EntityCollisionContext#getHeldItem @HEAD": 2,
    "net/minecraft/world/phys/shapes/EntityCollisionContext#isDescending @HEAD": 2,
    "net/minecraft/world/phys/shapes/EntityCollisionContext#isHoldingItem @HEAD": 2,
    "net/minecraft/world/scores/Scoreboard#addPlayerToTeam @RETURN": 1,
    "net/minecraft/world/scores/Scoreboard#onTeamAdded @HEAD": 1,
    "net/minecraft/world/scores/Scoreboard#onTeamRemoved @HEAD": 1,
    "net/minecraft/world/scores/Scoreboard#removePlayerFromTeam @RETURN": 1,
    "net/minecraft/world/ticks/LevelChunkTicks#<init> @RETURN": 4,
    "net/minecraft/world/ticks/LevelTicks#schedule @HEAD": 1,
    "net/optifine/render/ChunkVisibility#reset @HEAD": 1,
    "net/optifine/shaders/Shaders#setRenderingFirstPersonHand @HEAD": 1,
    "net/strobel/inventive_inventory/features/sorting/SortingHandler#sort @HEAD": 1,
    "net/strobel/inventive_inventory/features/sorting/SortingHandler#sort @RETURN": 1,
    "qouteall/imm_ptl/core/render/context_management/RenderStates#updatePreRenderInfo @HEAD": 1,
    "shadersmod/client/ShadersRender#renderHand0 @HEAD": 1,
    "shadersmod/client/ShadersRender#renderHand1 @HEAD": 1,
    "traben/entity_model_features/models/parts/EMFModelPart#render @HEAD": 1,
    "xaero/common/HudMod#loadCommon @HEAD": 1,
    "xaero/common/HudMod#loadLater @RETURN": 1,
    "xaero/common/events/ClientEvents#handleClientPlayerChatReceivedEvent @HEAD": 1,
    "xaero/common/events/ClientEvents#handleClientSystemChatReceivedEvent @HEAD": 1,
    "xaero/common/gui/GuiEntityRadarSettings#<init> @RETURN": 1,
    "xaero/common/gui/GuiMinimapMain#<init> @RETURN": 1,
    "xaero/common/gui/GuiMinimapViewSettings#<init> @RETURN": 1,
    "xaero/common/gui/GuiWaypointSettings#<init> @RETURN": 1,
    "xaero/common/gui/GuiWaypoints#init @HEAD": 1,
    "xaero/common/minimap/render/MinimapFBORenderer#renderChunksToFBO @HEAD": 1,
    "xaero/common/minimap/render/MinimapRenderer#renderMinimap @HEAD": 2,
    "xaero/common/minimap/write/MinimapWriter#getLoadSide @RETURN": 1,
    "xaero/common/misc/Internet#checkModVersion @HEAD": 1,
    "xaero/hud/minimap/config/util/MinimapConfigClientUtils#getEffectiveMinimapSize @RETURN": 1,
    "xaero/hud/minimap/module/MinimapRenderer#render @HEAD": 1,
    "xaero/hud/minimap/radar/render/element/RadarRenderer#renderElement @HEAD": 1,
    "xaero/hud/minimap/radar/render/element/RadarRenderer#setupRenderForEntity @RETURN": 1,
    "xaero/hud/minimap/waypoint/WaypointSharingHandler#shareWaypoint @HEAD": 1,
    "xaero/hud/minimap/waypoint/render/WaypointMapRenderer#drawSetChange @HEAD": 1,
    "xaero/hud/minimap/world/container/config/RootConfig#isTeleportationEnabled @HEAD": 1,
    "xaero/hud/minimap/world/state/MinimapWorldStateUpdater#getAutoRootContainerPath @HEAD": 1,
    "xaero/lib/client/graphics/shader/BuiltInCustomUniforms#registerAll @RETURN": 1,
    "xaero/lib/client/gui/GuiSettings#init @HEAD": 1,
    "xaero/lib/client/gui/GuiSettings#init @RETURN": 1,
    "xaero/lib/common/util/IOUtils#safeMoveAndReplace @HEAD": 1,
    "xaero/lib/patreon/Patreon#checkPatreon @HEAD": 1,
    "xaero/map/MapProcessor#getCurrentDimension @HEAD": 1,
    "xaero/map/MapProcessor#getDimensionName @HEAD": 1,
    "xaero/map/MapProcessor#getMainId @HEAD": 1,
    "xaero/map/MapProcessor#onClientTickStart @RETURN": 1,
    "xaero/map/MapProcessor#onWorldUnload @HEAD": 1,
    "xaero/map/MapWriter#loadPixel @HEAD": 2,
    "xaero/map/MapWriter#onRender @HEAD": 1,
    "xaero/map/MapWriter#onRender @RETURN": 1,
    "xaero/map/WorldMap#loadCommon @HEAD": 1,
    "xaero/map/file/MapSaveLoad#getOldFolder @HEAD": 1,
    "xaero/map/file/worldsave/WorldDataReader#buildTile @HEAD": 1,
    "xaero/map/gui/GuiMap#extractRenderState @HEAD": 1,
    "xaero/map/gui/GuiMap#extractRenderState @RETURN": 1,
    "xaero/map/gui/GuiMap#getRightClickOptions @RETURN": 1,
    "xaero/map/gui/GuiMap#init @RETURN": 1,
    "xaero/map/gui/GuiMap#keyPressed @HEAD": 1,
    "xaero/map/gui/GuiMap#keyPressed @RETURN": 1,
    "xaero/map/gui/GuiMap#mouseClicked @HEAD": 1,
    "xaero/map/gui/GuiMap#mouseReleased @HEAD": 1,
    "xaero/map/gui/GuiMap#onDimensionToggleButton @RETURN": 1,
    "xaero/map/gui/GuiMap#onInputPress @HEAD": 1,
    "xaero/map/gui/GuiMap#onInputRelease @HEAD": 1,
    "xaero/map/gui/GuiMap#shouldSkipWorldRender @HEAD": 1,
    "xaero/map/gui/GuiMap#tick @RETURN": 1,
    "xaero/map/gui/GuiWorldMapSettings#<init> @RETURN": 1,
    "xaero/map/misc/Internet#checkModVersion @HEAD": 1,
    "xaero/map/mods/SupportXaeroMinimap#getSubWorldNameToRender @HEAD": 1,
    "xaero/map/mods/gui/WaypointReader#getRightClickOptions @RETURN": 1,
    "xaero/map/region/MapPixel#getPixelColours @RETURN": 1,
    "xaero/map/region/MapTileChunk#readCacheData @RETURN": 1,
    "xaero/map/region/MapTileChunk#setTile @HEAD": 1,
    "xaero/map/world/MapDimension#getWorldSaveRegionDetection @HEAD": 1
  },
  "wanted_calls": {
    "com/apple/library/uikit/UITextField#render @INVOKE": 1,
    "com/google/common/collect/EvictingQueue#create @INVOKE (modify-arg)": 1,
    "com/google/common/collect/ImmutableList#iterator @INVOKE (wrap-operation)": 2,
    "com/google/common/collect/ImmutableList$Builder#build @INVOKE (wrap-operation)": 2,
    "com/google/common/collect/ImmutableSet#contains @INVOKE (wrap-operation)": 1,
    "com/google/common/collect/Lists#newArrayList @INVOKE (redirect)": 1,
    "com/google/common/collect/Maps#newHashMap @INVOKE (redirect)": 3,
    "com/google/common/collect/Maps#newHashMap @INVOKE_ASSIGN (modify-variable)": 2,
    "com/google/common/collect/Multimap#put @INVOKE (modify-arg)": 1,
    "com/google/common/collect/Sets#newIdentityHashSet @INVOKE (redirect)": 2,
    "com/mojang/authlib/minecraft/MinecraftProfileTexture#getHash @INVOKE (redirect)": 2,
    "com/mojang/blaze3d/audio/Channel#linearAttenuation @HEAD (modify-variable)": 1,
    "com/mojang/blaze3d/opengl/DirectStateAccess#bufferSubData @INVOKE (redirect)": 1,
    "com/mojang/blaze3d/opengl/GlDebug#enableDebugCallback @HEAD (modify-variable)": 1,
    "com/mojang/blaze3d/opengl/GlDevice#<init> @INVOKE": 1,
    "com/mojang/blaze3d/opengl/GlStateManager#_glBindFramebuffer @INVOKE (wrap-with-condition)": 1,
    "com/mojang/blaze3d/platform/InputConstants#releaseMouse @INVOKE (wrap-with-condition)": 1,
    "com/mojang/blaze3d/platform/MonitorManager#getMonitor @INVOKE (wrap-operation)": 1,
    "com/mojang/blaze3d/platform/SDLEventHandler#handleKeyEvent @INVOKE": 1,
    "com/mojang/blaze3d/platform/SDLEventHandler#handleMouseButtonEvent @INVOKE": 1,
    "com/mojang/blaze3d/platform/SDLEventHandler#handleMouseMotionEvent @INVOKE": 1,
    "com/mojang/blaze3d/platform/SDLEventHandler#handleMouseWheelEvent @INVOKE": 1,
    "com/mojang/blaze3d/platform/SDLEventHandler#handleTextEditingCandidatesEvent @INVOKE": 1,
    "com/mojang/blaze3d/platform/SDLEventHandler#handleTextEditingEvent @INVOKE": 1,
    "com/mojang/blaze3d/platform/SDLEventHandler#handleTextInputEvent @INVOKE": 1,
    "com/mojang/blaze3d/platform/Window#applyFullscreen @INVOKE (wrap-operation)": 1,
    "com/mojang/blaze3d/platform/Window#changeFullscreenVideoMode @INVOKE": 1,
    "com/mojang/blaze3d/platform/Window#isIconified @INVOKE (redirect)": 1,
    "com/mojang/blaze3d/platform/Window#isMinimized @INVOKE (redirect)": 1,
    "com/mojang/blaze3d/platform/Window#isWindowFullscreen @INVOKE (wrap-operation)": 2,
    "com/mojang/blaze3d/platform/Window#setMode @INVOKE": 2,
    "com/mojang/blaze3d/platform/Window#setMode @INVOKE (wrap-operation)": 1,
    "com/mojang/blaze3d/platform/Window#updateFullscreenIfChanged @INVOKE": 1,
    "com/mojang/blaze3d/platform/Window#updateFullscreenState @INVOKE (wrap-operation)": 1,
    "com/mojang/blaze3d/systems/RenderSystem#initBackendSystem @INVOKE": 1,
    "com/mojang/blaze3d/systems/ScissorState#enable @INVOKE (redirect)": 1,
    "com/mojang/blaze3d/textures/FilterMode#LINEAR:Lcom/mojang/blaze3d/textures/FilterMode; @FIELD (redirect)": 1,
    "com/mojang/blaze3d/vertex/MeshData#decodeQuadCentroids @INVOKE (wrap-operation)": 2,
    "com/mojang/blaze3d/vertex/VertexConsumer#addVertex @OVERWRITE": 2,
    "com/mojang/blaze3d/vertex/VertexConsumer#setColor @INVOKE (modify-arg)": 1,
    "com/mojang/blaze3d/vertex/VertexConsumer#setColor @INVOKE (wrap-operation)": 1,
    "com/mojang/blaze3d/vertex/VertexConsumer#setNormal @OVERWRITE": 2,
    "com/mojang/blaze3d/vertex/VertexSorting#byDistance @OVERWRITE": 4,
    "com/mojang/brigadier/builder/LiteralArgumentBuilder#requires @INVOKE (redirect)": 4,
    "com/mojang/datafixers/DSL#optionalFieldsLazy @INVOKE (modify-arg)": 1,
    "com/mojang/math/Transformation#hashCode @OVERWRITE": 1,
    "com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen#init @INVOKE (modify-arg)": 2,
    "com/mojang/renderpearl/api/commands/CommandEncoder#clearDepthTexture @INVOKE (wrap-with-condition)": 2,
    "com/mojang/renderpearl/api/device/GpuBackend#createWindow @INVOKE (modify-arg)": 2,
    "com/mojang/renderpearl/api/textures/FilterMode#LINEAR:Lcom/mojang/renderpearl/api/textures/FilterMode; @FIELD (redirect)": 1,
    "com/mojang/renderpearl/api/vertex/VertexFormat#contains @INVOKE (modify-variable)": 1,
    "com/mojang/renderpearl/backend/opengl/DirectStateAccess#bufferSubData @INVOKE (redirect)": 1,
    "com/mojang/renderpearl/backend/opengl/GlBackend#createWindow @INVOKE": 2,
    "com/mojang/renderpearl/backend/opengl/GlCommandEncoder#setupDraw @FIELD": 1,
    "com/mojang/renderpearl/backend/opengl/GlDebug#enableDebugCallback @HEAD (modify-variable)": 1,
    "com/mojang/renderpearl/backend/opengl/GlRenderPipeline#cull:Z @FIELD (wrap-operation)": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#<clinit> @HEAD (modify-constant)": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_depthFunc @INVOKE (wrap-operation)": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_disableBlend @INVOKE (wrap-operation)": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_enableBlend @INVOKE (wrap-operation)": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_glBindFramebuffer @INVOKE (redirect)": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_glBindFramebuffer @INVOKE (wrap-with-condition)": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_scissorBox @INVOKE (redirect)": 1,
    "com/mojang/renderpearl/backend/opengl/GlStateManager#_viewport @INVOKE (redirect)": 1,
    "com/mojang/renderpearl/frontend/FrontendCommandEncoder#isInRenderPass:Z @FIELD (wrap-operation)": 3,
    "com/mojang/serialization/Codec#intRange @INVOKE (wrap-operation)": 1,
    "com/mojang/text2speech/Narrator#getNarrator @INVOKE (redirect)": 1,
    "com/mojang/text2speech/Narrator#getNarrator @INVOKE (wrap-operation)": 1,
    "com/moulberry/axiom/editor/CustomImGuiImplGlfw#init @INVOKE (redirect)": 1,
    "com/moulberry/axiom/editor/EditorUI#drawOverlayInternal @INVOKE": 1,
    "de/keksuccino/fancymenu/customization/ScreenCustomization#init @INVOKE": 1,
    "de/keksuccino/fancymenu/customization/background/backgrounds/image/ImageMenuBackground#extractRenderState @INVOKE": 1,
    "de/keksuccino/fancymenu/customization/element/ElementRegistry#getBuilders @INVOKE (redirect)": 1,
    "de/keksuccino/fancymenu/customization/element/elements/image/ImageElement#extractRenderState @INVOKE": 1,
    "de/keksuccino/fancymenu/customization/element/elements/progressbar/ProgressBarElement#extractRenderState @INVOKE": 1,
    "de/keksuccino/fancymenu/customization/layer/ScreenCustomizationLayer#onInitOrResizeScreenPre @INVOKE": 1,
    "de/keksuccino/fancymenu/customization/layout/LayoutHandler#getEnabledLayoutsForScreenIdentifier @INVOKE (redirect)": 1,
    "de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorScreen#init @INVOKE": 1,
    "de/keksuccino/fancymenu/util/rendering/SmoothImageRectangleRenderer#renderSmoothImageRectRoundAllCornersScaled @INVOKE (wrap-operation)": 1,
    "dev/isxander/controlify/virtualmouse/VirtualMouseHandler#handleControllerInput @FIELD": 1,
    "imgui/moulberry92/ImGui#preInputText @HEAD (modify-variable)": 2,
    "io/netty/bootstrap/Bootstrap#channel @INVOKE (modify-arg)": 1,
    "io/netty/bootstrap/Bootstrap#connect @INVOKE (wrap-operation)": 1,
    "io/netty/bootstrap/Bootstrap#group @INVOKE (modify-arg)": 1,
    "io/netty/bootstrap/ServerBootstrap#childHandler @INVOKE (modify-arg)": 1,
    "io/netty/bootstrap/ServerBootstrap#group @INVOKE (modify-arg)": 1,
    "io/netty/channel/Channel#flush @INVOKE (redirect)": 1,
    "io/netty/channel/Channel#isOpen @INVOKE (redirect)": 1,
    "io/netty/channel/ChannelFuture#awaitUninterruptibly @INVOKE (redirect)": 1,
    "io/netty/channel/EventLoop#execute @INVOKE (wrap-operation)": 1,
    "io/netty/util/ResourceLeakDetector#setLevel @INVOKE (redirect)": 1,
    "it/unimi/dsi/fastutil/ints/Int2ObjectMap#values @INVOKE (redirect)": 3,
    "it/unimi/dsi/fastutil/objects/Object2IntMap#put @INVOKE (wrap-operation)": 1,
    "java/lang/Class#isAssignableFrom @INVOKE (redirect)": 2,
    "java/lang/Math#max @INVOKE (modify-arg)": 1,
    "java/lang/Math#max @INVOKE (wrap-operation)": 1,
    "java/lang/Math#round @INVOKE (wrap-operation)": 1,
    "java/lang/Runnable#run @INVOKE (redirect)": 2,
    "java/lang/Runnable#run @INVOKE (wrap-with-condition)": 1,
    "java/lang/String#startsWith @INVOKE (wrap-operation)": 1,
    "java/lang/Thread#sleep @INVOKE (redirect)": 1,
    "java/net/InetAddress#getByName @INVOKE_ASSIGN (modify-variable)": 1,
    "java/nio/file/Path#resolve @INVOKE (wrap-operation)": 1,
    "java/nio/file/Path#resolveSibling @INVOKE (wrap-operation)": 1,
    "java/security/PublicKey#getEncoded @INVOKE (redirect)": 1,
    "java/time/LocalDate#now @INVOKE (redirect)": 1,
    "java/util/ArrayList#add @INVOKE (redirect)": 1,
    "java/util/ArrayList#contains @INVOKE (redirect)": 1,
    "java/util/Arrays#equals @INVOKE (redirect)": 1,
    "java/util/Collection#forEach @INVOKE (modify-arg)": 2,
    "java/util/Collection#isEmpty @INVOKE (wrap-operation)": 1,
    "java/util/Collections#emptyList @INVOKE (redirect)": 1,
    "java/util/EnumSet#noneOf @INVOKE (wrap-operation)": 2,
    "java/util/Iterator#hasNext @INVOKE (wrap-operation)": 1,
    "java/util/List#add @INVOKE (redirect)": 3,
    "java/util/List#add @INVOKE (wrap-operation)": 2,
    "java/util/List#addAll @INVOKE (wrap-operation)": 2,
    "java/util/List#clear @INVOKE (redirect)": 1,
    "java/util/List#clear @INVOKE (wrap-with-condition)": 4,
    "java/util/List#copyOf @INVOKE (redirect)": 2,
    "java/util/List#get @INVOKE (wrap-operation)": 1,
    "java/util/List#remove @INVOKE (wrap-operation)": 1,
    "java/util/List#size @INVOKE (redirect)": 2,
    "java/util/List#size @INVOKE (wrap-operation)": 1,
    "java/util/List#sort @INVOKE (wrap-operation)": 1,
    "java/util/Map#forEach @INVOKE (modify-args)": 1,
    "java/util/Map#forEach @INVOKE (redirect)": 3,
    "java/util/Map#get @INVOKE (redirect)": 2,
    "java/util/Map#get @INVOKE (wrap-operation)": 7,
    "java/util/Map#of @INVOKE (wrap-operation)": 1,
    "java/util/Map#remove @INVOKE (wrap-operation)": 1,
    "java/util/Map#values @INVOKE (wrap-operation)": 1,
    "java/util/Optional#ifPresent @INVOKE (redirect)": 2,
    "java/util/Set#add @INVOKE (redirect)": 2,
    "java/util/Set#contains @INVOKE (wrap-operation)": 1,
    "java/util/Set#iterator @INVOKE (redirect)": 2,
    "java/util/Set#remove @INVOKE (redirect)": 2,
    "java/util/Set#remove @INVOKE (wrap-operation)": 2,
    "java/util/Set#stream @INVOKE (redirect)": 1,
    "java/util/concurrent/CompletableFuture#supplyAsync @INVOKE (modify-arg)": 3,
    "java/util/concurrent/CompletableFuture#supplyAsync @INVOKE (redirect)": 1,
    "java/util/concurrent/CompletableFuture#thenApply @INVOKE (modify-arg)": 1,
    "java/util/concurrent/CompletableFuture#thenCompose @INVOKE (modify-arg)": 3,
    "java/util/concurrent/ForkJoinPool#<init> @INVOKE (modify-arg)": 1,
    "java/util/function/Predicate#and @INVOKE (redirect)": 2,
    "java/util/stream/Collectors#toMap @INVOKE (redirect)": 1,
    "java/util/stream/Stream#collect @INVOKE (modify-arg)": 1,
    "java/util/stream/Stream#collect @INVOKE (redirect)": 1,
    "java/util/stream/Stream#filter @INVOKE (modify-arg)": 1,
    "java/util/stream/Stream#limit @INVOKE (redirect)": 2,
    "net/blay09/mods/waystones/core/PlayerWaystoneManager#deactivateWaystone @HEAD (modify-variable)": 1,
    "net/caffeinemc/mods/sodium/client/gui/SodiumOptions$PerformanceSettings#useBlockFaceCulling:Z @FIELD (redirect)": 1,
    "net/caffeinemc/mods/sodium/client/gui/SodiumOptions$PerformanceSettings#useFogOcclusion:Z @FIELD (redirect)": 1,
    "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline#applyInsetPartialFaceVertex @HEAD (modify-variable)": 2,
    "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline#calculate @INVOKE": 1,
    "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline#gatherInsetFace @STORE (modify-variable)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer#<init> @INVOKE (modify-arg)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer#shouldDraw:[Z @FIELD (redirect)": 2,
    "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#needsUpdate @INVOKE (redirect)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#needsUpdate @INVOKE (wrap-operation)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#renderLists:Lnet/caffeinemc/mods/sodium/client/render/chunk/lists/SortedRenderLists; @FIELD (redirect)": 2,
    "net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer#begin @INVOKE (wrap-operation)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer#vertexFormat:Lcom/mojang/renderpearl/api/vertex/VertexFormat; @FIELD (redirect)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkBuilder#<init> @INVOKE (modify-arg)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer#bufferQuad @FIELD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer#renderModel @INVOKE": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer#updateQuad @INVOKE (modify-arg)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer#writeQuad @FIELD": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask#execute @INVOKE": 4,
    "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller#visitNeighbors @INVOKE (modify-args)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion#clearAllCachedBatches @INVOKE (redirect)": 3,
    "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion#clearCachedBatchFor @INVOKE (redirect)": 3,
    "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegionManager#createForChunk @INVOKE (redirect)": 1,
    "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkMeshFormats#getCurrent @OVERWRITE": 1,
    "net/caffeinemc/mods/sodium/client/render/model/AbstractBlockRenderContext#bufferDefaultModel @INVOKE": 1,
    "net/fabricmc/loader/impl/game/minecraft/Hooks#startClient @INVOKE (redirect)": 1,
    "net/irisshaders/iris/Iris#getShaderpacksDirectory @INVOKE (redirect)": 1,
    "net/irisshaders/iris/gl/IrisRenderSystem#framebufferTexture2D @INVOKE (redirect)": 1,
    "net/irisshaders/iris/uniforms/CommonUniforms#generalCommonUniforms @HEAD (modify-variable)": 1,
    "net/irisshaders/iris/uniforms/SystemTimeUniforms$Timer#beginFrame @HEAD (modify-variable)": 1,
    "net/minecraft/CrashReport#addCategory @INVOKE": 1,
    "net/minecraft/CrashReport#forThrowable @INVOKE (wrap-operation)": 1,
    "net/minecraft/CrashReport#getDetails @INVOKE": 1,
    "net/minecraft/CrashReport#saveToFile @INVOKE (redirect)": 1,
    "net/minecraft/client/Camera#alignWithEntity @INVOKE": 1,
    "net/minecraft/client/Camera#calculateFov @TAIL (modify-variable)": 1,
    "net/minecraft/client/Camera#move @INVOKE (redirect)": 1,
    "net/minecraft/client/Camera#prepareCullFrustum @NEW (wrap-operation)": 1,
    "net/minecraft/client/Camera#setRotation @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/Camera#setupPerspective @INVOKE (modify-arg)": 1,
    "net/minecraft/client/Camera#update @INVOKE": 1,
    "net/minecraft/client/KeyMapping#setDown @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/KeyboardHandler#keyPress @FIELD": 1,
    "net/minecraft/client/KeyboardHandler#keyPress @INVOKE": 3,
    "net/minecraft/client/Minecraft#<init> @FIELD": 2,
    "net/minecraft/client/Minecraft#<init> @INVOKE": 7,
    "net/minecraft/client/Minecraft#<init> @NEW (wrap-operation)": 1,
    "net/minecraft/client/Minecraft#Lnet/minecraft/client/Minecraft;disconnect @INVOKE": 1,
    "net/minecraft/client/Minecraft#clearClientLevel @INVOKE": 1,
    "net/minecraft/client/Minecraft#clearResourcePacksOnError @INVOKE": 1,
    "net/minecraft/client/Minecraft#close @INVOKE": 2,
    "net/minecraft/client/Minecraft#continueAttack @INVOKE (modify-arg)": 1,
    "net/minecraft/client/Minecraft#createUserApiService @OVERWRITE": 1,
    "net/minecraft/client/Minecraft#disconnect @FIELD": 1,
    "net/minecraft/client/Minecraft#disconnect @INVOKE": 1,
    "net/minecraft/client/Minecraft#exitWorldAndClose @INVOKE": 2,
    "net/minecraft/client/Minecraft#handleGlobalKeyPress @FIELD": 1,
    "net/minecraft/client/Minecraft#handleGlobalKeyPress @INVOKE": 1,
    "net/minecraft/client/Minecraft#handleKeybinds @INVOKE": 2,
    "net/minecraft/client/Minecraft#reloadResourcePacks @INVOKE (modify-arg)": 1,
    "net/minecraft/client/Minecraft#renderFrame @CONSTANT": 1,
    "net/minecraft/client/Minecraft#renderFrame @FIELD": 2,
    "net/minecraft/client/Minecraft#renderFrame @INVOKE": 6,
    "net/minecraft/client/Minecraft#renderFrame @INVOKE (modify-arg)": 1,
    "net/minecraft/client/Minecraft#renderFrame @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/Minecraft#run @INVOKE": 1,
    "net/minecraft/client/Minecraft#runTick @CONSTANT": 3,
    "net/minecraft/client/Minecraft#runTick @HEAD (modify-variable)": 1,
    "net/minecraft/client/Minecraft#runTick @INVOKE": 4,
    "net/minecraft/client/Minecraft#runTick @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/Minecraft#setScreenAndShow @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/Minecraft#startUseItem @INVOKE": 1,
    "net/minecraft/client/MouseHandler#onButton @INVOKE": 1,
    "net/minecraft/client/MouseHandler#onScroll @INVOKE": 2,
    "net/minecraft/client/MouseHandler#releaseMouse @INVOKE": 1,
    "net/minecraft/client/MouseHandler#turnPlayer @INVOKE (redirect)": 1,
    "net/minecraft/client/OptionInstance#get @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/OptionInstance$IntRange#<init> @INVOKE (modify-arg)": 1,
    "net/minecraft/client/Options#getCameraType @INVOKE (redirect)": 1,
    "net/minecraft/client/Options#getEffectiveRenderDistance @INVOKE (redirect)": 2,
    "net/minecraft/client/Options$OptionAccess#process @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/ScrollWheelHandler#getNextScrollWheelSelection @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/BundleMouseActions#toggleSelectedBundleItem @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/Font#width @INVOKE (modify-variable)": 1,
    "net/minecraft/client/gui/Gui#extractRenderState @INVOKE": 8,
    "net/minecraft/client/gui/Gui#overlay @INVOKE (wrap-operation)": 3,
    "net/minecraft/client/gui/Gui#overlay:Lnet/minecraft/client/gui/screens/Overlay; @FIELD (wrap-operation)": 2,
    "net/minecraft/client/gui/Gui#setOverlay @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/gui/Gui#setScreen @FIELD": 1,
    "net/minecraft/client/gui/Gui#setScreen @HEAD (modify-variable)": 3,
    "net/minecraft/client/gui/Gui#setScreen @INVOKE": 4,
    "net/minecraft/client/gui/Gui#setScreen @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/Gui#setScreen @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#blit @HEAD (modify-variable)": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#blit @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/gui/GuiGraphicsExtractor#blit @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @INVOKE": 2,
    "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @INVOKE (wrap-operation)": 4,
    "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#fill @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#fill @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#fill @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#innerBlit @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/gui/GuiGraphicsExtractor#setTooltipForNextFrame @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/GuiGraphicsExtractor#text @INVOKE (modify-arg)": 6,
    "net/minecraft/client/gui/Hud#extractCameraOverlays @INVOKE (redirect)": 1,
    "net/minecraft/client/gui/Hud#extractCrosshair @INVOKE (redirect)": 2,
    "net/minecraft/client/gui/Hud#extractHeart @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/Hud#extractSlot @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/Hud#extractVehicleHealth @STORE (modify-variable)": 1,
    "net/minecraft/client/gui/Hud#getAirBubbleYLine @HEAD (modify-variable)": 1,
    "net/minecraft/client/gui/Hud#getVehicleMaxHearts @INVOKE (redirect)": 1,
    "net/minecraft/client/gui/components/AbstractWidget#onClick @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/gui/components/ChatComponent#<init> @NEW (wrap-operation)": 1,
    "net/minecraft/client/gui/components/ChatComponent#addMessage @INVOKE": 1,
    "net/minecraft/client/gui/components/ChatComponent#addMessageToDisplayQueue @INVOKE (modify-arg)": 2,
    "net/minecraft/client/gui/components/ChatComponent#addMessageToDisplayQueue @STORE (modify-variable)": 1,
    "net/minecraft/client/gui/components/ChatComponent#addMessageToQueue @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/components/ChatComponent#addPlayerMessage @INVOKE (modify-arg)": 2,
    "net/minecraft/client/gui/components/ChatComponent#addServerSystemMessage @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/components/ChatComponent#extractRenderState @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/components/ChatComponent#extractRenderState @STORE (modify-variable)": 3,
    "net/minecraft/client/gui/components/ChatComponent#forEachLine @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/components/ChatComponent#forEachLine @STORE (modify-variable)": 3,
    "net/minecraft/client/gui/components/ChatComponent#refreshTrimmedMessages @INVOKE": 1,
    "net/minecraft/client/gui/components/ChatComponent#scrollChat @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/components/ChatComponent$1#accept @INVOKE": 3,
    "net/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess#fill @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess#handleMessage @INVOKE (modify-args)": 1,
    "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#extractRenderState @HEAD (modify-variable)": 1,
    "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#extractRenderState @INVOKE": 1,
    "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#extractRenderState @STORE (modify-variable)": 3,
    "net/minecraft/client/gui/components/DebugScreenOverlay#extractLines @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/components/DebugScreenOverlay#extractLines @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @INVOKE": 4,
    "net/minecraft/client/gui/components/EditBox#extractWidgetRenderState @STORE (modify-variable)": 2,
    "net/minecraft/client/gui/components/EditBox#setEditable @OVERWRITE": 1,
    "net/minecraft/client/gui/components/EditBox#setMaxLength @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/components/MultiLineEditBox$Builder#setY @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/components/MultilineTextField#getLineAtCursor @OVERWRITE": 1,
    "net/minecraft/client/gui/components/OptionsList#addSmall @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/components/StringWidget#setMaxWidth @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/components/debug/DebugEntrySimplePerformanceImpactors#display @INVOKE": 1,
    "net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> @STORE (modify-variable)": 1,
    "net/minecraft/client/gui/components/debug/DebugScreenEntryList#getCurrentlyEnabled @INVOKE (redirect)": 1,
    "net/minecraft/client/gui/components/debug/DebugScreenEntryList#isOverlayVisible @INVOKE (redirect)": 1,
    "net/minecraft/client/gui/components/tabs/MenuTabBar$Builder#addTabs @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/font/FontTexture#* @HEAD (modify-constant)": 4,
    "net/minecraft/client/gui/font/FontTexture#<init> @CTOR_HEAD": 2,
    "net/minecraft/client/gui/font/PlainTextRenderable#renderSprite @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/font/PlayerGlyphProvider$Instance#renderQuad @INVOKE (modify-arg)": 5,
    "net/minecraft/client/gui/font/providers/UnihexProvider$ByteContents#read @NEW": 1,
    "net/minecraft/client/gui/font/providers/UnihexProvider$ShortContents#read @NEW": 1,
    "net/minecraft/client/gui/layouts/LinearLayout#addChild @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/gui/render/GuiRenderer#prepareItemElements @INVOKE": 2,
    "net/minecraft/client/gui/render/pip/PictureInPictureRenderer#prepare @INVOKE": 1,
    "net/minecraft/client/gui/screens/ChatScreen#setInitialFocus @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/screens/LoadingOverlay#extractRenderState @HEAD (modify-constant)": 1,
    "net/minecraft/client/gui/screens/LoadingOverlay#extractRenderState @INVOKE": 1,
    "net/minecraft/client/gui/screens/LoadingOverlay#registerTextures @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/gui/screens/LoadingOverlay#tick @FIELD": 1,
    "net/minecraft/client/gui/screens/PauseScreen#createPauseMenu @INVOKE": 1,
    "net/minecraft/client/gui/screens/Screen#charTyped @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/Screen#extractRenderState @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/Screen#extractRenderStateWithTooltipAndSubtitles @INVOKE": 1,
    "net/minecraft/client/gui/screens/Screen#extractRenderStateWithTooltipAndSubtitles @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/screens/Screen#extractRenderStateWithTooltipAndSubtitles @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/Screen#extractRenderStateWithTooltipAndSubtitles @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/gui/screens/Screen#init @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/gui/screens/Screen#keyPressed @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/Screen#keyReleased @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/Screen#mouseClicked @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/Screen#mouseDragged @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/Screen#mouseReleased @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/Screen#mouseScrolled @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/Screen#removed @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/gui/screens/TitleScreen#extractRenderState @HEAD (modify-constant)": 1,
    "net/minecraft/client/gui/screens/TitleScreen#getHorizontalPosition @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractContents @INVOKE": 2,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractSlot @INVOKE": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#mouseDragged @INVOKE": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#mouseScrolled @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#addRenderableWidget @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#slotClicked @INVOKE": 2,
    "net/minecraft/client/gui/screens/inventory/InventoryScreen#extractEntityInInventoryFollowsMouse @INVOKE (modify-arg)": 5,
    "net/minecraft/client/gui/screens/inventory/MerchantScreen#extractContents @INVOKE": 1,
    "net/minecraft/client/gui/screens/inventory/StructureBlockEditScreen#init @INVOKE": 1,
    "net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipPositioner#positionTooltip @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList#updateNetworkServers @INVOKE": 1,
    "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList#updateOnlineServers @INVOKE": 1,
    "net/minecraft/client/gui/screens/options/VideoSettingsScreen#qualityOptions @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/options/controls/ControlsScreen#addOptions @INVOKE": 1,
    "net/minecraft/client/gui/screens/recipebook/RecipeBookComponent#pirateSpeechForThePeople @INVOKE": 1,
    "net/minecraft/client/gui/screens/social/PlayerEntry#extractContent @INVOKE": 1,
    "net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget#buildContent @INVOKE": 1,
    "net/minecraft/client/gui/screens/worldselection/CreateWorldScreen#tryApplyNewDataPacks @HEAD (modify-variable)": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#confirmWorldCreation @HEAD (modify-variable)": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#createLevelFromExistingSettings @INVOKE (modify-arg)": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#openWorldCheckVersionCompatibility @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#openWorldCheckWorldStemCompatibility @STORE (modify-variable)": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldSelectionList#fillLevels @INVOKE": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#* @INVOKE": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#editWorld @INVOKE": 1,
    "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#extractContent @INVOKE": 1,
    "net/minecraft/client/main/Main#main @INVOKE": 2,
    "net/minecraft/client/model/HumanoidModel#setupAnim @FIELD": 1,
    "net/minecraft/client/model/animal/bee/BeeStingerModel#<init> @INVOKE (modify-arg)": 1,
    "net/minecraft/client/model/geom/ModelPart#translateAndRotate @OVERWRITE": 2,
    "net/minecraft/client/model/geom/ModelPart$Cube#compile @INVOKE": 2,
    "net/minecraft/client/model/geom/ModelPart$Cube#minX:F @FIELD (redirect)": 2,
    "net/minecraft/client/model/geom/builders/CubeDefinition#bake @NEW (wrap-operation)": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#<init> @NEW (redirect)": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#drop @INVOKE": 2,
    "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @INVOKE": 3,
    "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/multiplayer/ClientChunkCache#updateViewRadius @FIELD": 1,
    "net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl#handleConfigurationFinished @INVOKE": 1,
    "net/minecraft/client/multiplayer/ClientLevel#addBreakingParticles @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/multiplayer/ClientLevel#addParticle @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/multiplayer/ClientLevel#addParticle @INVOKE (wrap-with-condition)": 2,
    "net/minecraft/client/multiplayer/ClientLevel#doAnimateTick @INVOKE": 1,
    "net/minecraft/client/multiplayer/ClientLevel#entitiesForRendering @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/multiplayer/ClientLevel#getHeightmapPos @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/multiplayer/ClientLevel#getPrecipitationAt @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/multiplayer/ClientLevel#playLocalSound @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/multiplayer/ClientLevel#playSeededSound @INVOKE": 1,
    "net/minecraft/client/multiplayer/ClientLevel#queueLightUpdate @INVOKE (modify-arg)": 1,
    "net/minecraft/client/multiplayer/ClientLevel#queueLightUpdate @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/multiplayer/ClientLevel#setBlock @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/multiplayer/ClientLevel#setServerVerifiedBlockState @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger @INVOKE": 2,
    "net/minecraft/client/multiplayer/ClientLevel#tickPassenger @INVOKE": 2,
    "net/minecraft/client/multiplayer/ClientLevel#tickWeatherEffects @FIELD": 1,
    "net/minecraft/client/multiplayer/ClientPacketListener#handleMoveEntity @RETURN (modify-variable)": 1,
    "net/minecraft/client/multiplayer/ClientPacketListener#handleSetEntityPassengersPacket @RETURN (modify-variable)": 1,
    "net/minecraft/client/multiplayer/ClientPacketListener#handleTeleportEntity @RETURN (modify-variable)": 1,
    "net/minecraft/client/multiplayer/ClientPacketListener#queueLightRemoval @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#continueDestroyBlock @INVOKE": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#dropItem @INVOKE": 2,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#getPlayerMode @INVOKE (redirect)": 2,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#hasExperience @INVOKE (redirect)": 1,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#lambda$startDestroyBlock$1 @INVOKE": 2,
    "net/minecraft/client/multiplayer/MultiPlayerGameMode#performUseItemOn @INVOKE": 1,
    "net/minecraft/client/multiplayer/ProfileKeyPairManager#create @OVERWRITE": 1,
    "net/minecraft/client/multiplayer/ServerStatusPinger$1#handleStatusResponse @INVOKE": 1,
    "net/minecraft/client/multiplayer/chat/ChatListener#handlePlayerChatMessage @INVOKE (modify-arg)": 1,
    "net/minecraft/client/multiplayer/chat/ChatListener#handleSystemMessage @INVOKE": 2,
    "net/minecraft/client/multiplayer/chat/ChatListener#showMessageToPlayer @INVOKE": 2,
    "net/minecraft/client/multiplayer/chat/GuiMessage#<init> @INVOKE (modify-arg)": 1,
    "net/minecraft/client/multiplayer/resolver/ServerAddressResolver#resolve @INVOKE (redirect)": 1,
    "net/minecraft/client/multiplayer/resolver/ServerNameResolver#<init> @INVOKE (modify-arg)": 1,
    "net/minecraft/client/particle/BubbleColumnUpParticle#tick @INVOKE": 1,
    "net/minecraft/client/particle/DripParticle#tick @FIELD": 1,
    "net/minecraft/client/particle/DripParticle$FallAndLandParticle#postMoveUpdate @INVOKE": 1,
    "net/minecraft/client/particle/HugeExplosionSeedParticle#tick @INVOKE": 1,
    "net/minecraft/client/particle/ParticleEngine#<init> @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/particle/ParticleEngine#add @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/particle/ParticleEngine#createParticle @INVOKE": 1,
    "net/minecraft/client/particle/ParticleEngine#createParticle @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/particle/ParticleEngine#makeParticle @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/particle/ParticleEngine#tick @INVOKE": 1,
    "net/minecraft/client/particle/ParticleEngine#tick @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/particle/ParticleGroup#<init> @HEAD (modify-constant)": 1,
    "net/minecraft/client/particle/ParticleGroup#tickParticle @INVOKE": 1,
    "net/minecraft/client/particle/ParticleGroup#tickParticle @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/particle/ParticleResources#lambda$reload$4 @INVOKE": 1,
    "net/minecraft/client/particle/QuadParticleGroup#extractRenderState @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/particle/SingleQuadParticle#extract @INVOKE": 2,
    "net/minecraft/client/particle/WaterCurrentDownParticle#<init> @HEAD (modify-variable)": 2,
    "net/minecraft/client/particle/WaterCurrentDownParticle#tick @HEAD (modify-constant)": 1,
    "net/minecraft/client/particle/WaterCurrentDownParticle#tick @INVOKE": 2,
    "net/minecraft/client/player/AbstractClientPlayer#getFieldOfViewModifier @HEAD (modify-variable)": 1,
    "net/minecraft/client/player/AbstractClientPlayer#getFieldOfViewModifier @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/player/ClientInput#hasForwardImpulse @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/player/ClientInput#tick @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/player/FirstPersonHandsAndItems#tick @INVOKE": 1,
    "net/minecraft/client/player/LocalPlayer#aiStep @INVOKE": 3,
    "net/minecraft/client/player/LocalPlayer#blockPosition @INVOKE (redirect)": 1,
    "net/minecraft/client/player/LocalPlayer#getAttackStrengthScale @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/player/LocalPlayer#getWaterVision @HEAD (modify-constant)": 1,
    "net/minecraft/client/player/LocalPlayer#jumpableVehicle @INVOKE (redirect)": 1,
    "net/minecraft/client/player/LocalPlayer#pick @INVOKE (redirect)": 1,
    "net/minecraft/client/player/LocalPlayer#pick @STORE (modify-variable)": 1,
    "net/minecraft/client/renderer/CloudRenderer#buildMesh @OVERWRITE": 2,
    "net/minecraft/client/renderer/CloudRenderer#prepare @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/EndFlashState#calculateFlashParameters @INVOKE": 1,
    "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem @HEAD (modify-variable)": 2,
    "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitHandsWithItems @INVOKE (redirect)": 1,
    "net/minecraft/client/renderer/GameRenderer#extract @INVOKE": 1,
    "net/minecraft/client/renderer/GameRenderer#nightVisionScale @INVOKE": 1,
    "net/minecraft/client/renderer/GameRenderer#registerPanoramaTextures @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/GameRenderer#render @INVOKE": 8,
    "net/minecraft/client/renderer/GameRenderer#render3dHud @INVOKE": 1,
    "net/minecraft/client/renderer/GameRenderer#render3dHud @INVOKE (redirect)": 1,
    "net/minecraft/client/renderer/GameRenderer#setSpectatedEntityPostEffect @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/GlobalSettingsUniform#update @INVOKE (modify-args)": 1,
    "net/minecraft/client/renderer/LevelRenderer#addSkyPass @INVOKE (modify-arg)": 1,
    "net/minecraft/client/renderer/LevelRenderer#entityOutlineTarget:Lcom/mojang/blaze3d/pipeline/RenderTarget; @FIELD (wrap-operation)": 2,
    "net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency @INVOKE": 1,
    "net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/LevelRenderer#hasRenderedAllSections @OVERWRITE": 2,
    "net/minecraft/client/renderer/LevelRenderer#isSectionCompiledAndVisible @OVERWRITE": 2,
    "net/minecraft/client/renderer/LevelRenderer#prepareChunkRenders @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/renderer/LevelRenderer#prepareChunkRenders @OVERWRITE": 1,
    "net/minecraft/client/renderer/LevelRenderer#render @HEAD (modify-variable)": 1,
    "net/minecraft/client/renderer/LevelRenderer#render @INVOKE": 7,
    "net/minecraft/client/renderer/LevelRenderer#render @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/LevelRenderer#submitHitOutline @INVOKE (modify-arg)": 1,
    "net/minecraft/client/renderer/LightmapRenderStateExtractor#extract @INVOKE": 1,
    "net/minecraft/client/renderer/PostChain#addToFrame @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/ProjectionMatrixBuffer#getBuffer @INVOKE (modify-arg)": 1,
    "net/minecraft/client/renderer/ProjectionMatrixBuffer#getBuffer @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/renderer/Rect2i#contains @INVOKE (redirect)": 1,
    "net/minecraft/client/renderer/Rect2i#contains @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/ScreenEffectRenderer#buildSpriteQuad @INVOKE (modify-arg)": 1,
    "net/minecraft/client/renderer/SectionBufferBuilderPool#allocate @INVOKE (redirect)": 2,
    "net/minecraft/client/renderer/ShaderManager$PostChainCache#loadPostChain @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/SkyRenderer#render @INVOKE": 1,
    "net/minecraft/client/renderer/SkyRenderer#render @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderDarkDisc @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderMoon @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderSkyDisc @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderStars @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderSun @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderSunMoonAndStars @INVOKE": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderSunMoonAndStars @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/SkyRenderer#renderTarget:Lcom/mojang/blaze3d/pipeline/RenderTarget; @FIELD (wrap-operation)": 1,
    "net/minecraft/client/renderer/StagedVertexBuffer$GpuBufferPool#tryRecycleBuffers @INVOKE (redirect)": 1,
    "net/minecraft/client/renderer/SubmitNodeCollection#submitModel @HEAD (modify-variable)": 1,
    "net/minecraft/client/renderer/SubmitNodeCollection#submitModel @INVOKE": 1,
    "net/minecraft/client/renderer/SubmitNodeCollector#submitCustomGeometry @INVOKE (modify-arg)": 3,
    "net/minecraft/client/renderer/SubmitNodeCollector#submitNameTag @INVOKE (modify-arg)": 1,
    "net/minecraft/client/renderer/SubmitNodeCollector#submitShadow @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/WeatherEffectRenderer#RAIN_LOCATION:Lnet/minecraft/resources/Identifier; @FIELD (wrap-operation)": 1,
    "net/minecraft/client/renderer/WeatherEffectRenderer#createRainColumnInstance @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#submit @INVOKE": 1,
    "net/minecraft/client/renderer/blockentity/SkullBlockRenderer#submitSkull @STORE (modify-variable)": 1,
    "net/minecraft/client/renderer/chunk/ChunkSectionsToRender#renderGroup @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/chunk/ChunkSectionsToRender#renderGroup @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/chunk/SectionRenderDispatcher#<init>* @HEAD (modify-variable)": 1,
    "net/minecraft/client/renderer/chunk/SectionRenderDispatcher#runTask @INVOKE": 1,
    "net/minecraft/client/renderer/chunk/SectionRenderDispatcher#schedule @INVOKE": 1,
    "net/minecraft/client/renderer/culling/Frustum#isVisible @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/culling/Frustum#pointInFrustum @INVOKE (redirect)": 1,
    "net/minecraft/client/renderer/culling/Frustum#pointInFrustum @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/entity/ArmorModelSet#bake @INVOKE (modify-arg)": 1,
    "net/minecraft/client/renderer/entity/EnderDragonRenderer#submitCrystalBeams @INVOKE": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer @OVERWRITE": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#renderers:Ljava/util/Map; @FIELD (redirect)": 1,
    "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @INVOKE": 3,
    "net/minecraft/client/renderer/entity/EntityRenderer#createRenderState @INVOKE": 1,
    "net/minecraft/client/renderer/entity/EntityRenderer#createRenderState @INVOKE_ASSIGN": 1,
    "net/minecraft/client/renderer/entity/ItemFrameRenderer#submit @INVOKE": 1,
    "net/minecraft/client/renderer/entity/LivingEntityRenderer#getTextureLocation @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/entity/layers/CapeLayer#submit @INVOKE": 1,
    "net/minecraft/client/renderer/entity/layers/CapeLayer#submit @INVOKE (redirect)": 1,
    "net/minecraft/client/renderer/entity/layers/DolphinCarryingItemLayer#submit @INVOKE": 1,
    "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers @FIELD": 1,
    "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers @INVOKE": 2,
    "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#renderLayers @HEAD (modify-variable)": 1,
    "net/minecraft/client/renderer/entity/layers/SimpleEquipmentLayer#submit @INVOKE": 1,
    "net/minecraft/client/renderer/entity/layers/WingsLayer#submit @INVOKE": 1,
    "net/minecraft/client/renderer/entity/player/AvatarRenderer#lambda$new$0 @NEW (wrap-operation)": 1,
    "net/minecraft/client/renderer/entity/player/AvatarRenderer#submitNameDisplay @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/extract/LevelExtractor#applyFrustum @INVOKE (redirect)": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#countRenderedSections @OVERWRITE": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#extract @INVOKE": 4,
    "net/minecraft/client/renderer/extract/LevelExtractor#setBlockDirty @OVERWRITE": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#setBlocksDirty @OVERWRITE": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#setSectionDirty @OVERWRITE": 2,
    "net/minecraft/client/renderer/extract/LevelExtractor#setSectionDirtyWithNeighbors @OVERWRITE": 2,
    "net/minecraft/client/renderer/feature/BlockModelFeatureRenderer#buildGroup @INVOKE": 1,
    "net/minecraft/client/renderer/feature/CustomFeatureRenderer#buildGroup @INVOKE": 1,
    "net/minecraft/client/renderer/feature/ModelFeatureRenderer#prepareModel @HEAD (modify-variable)": 1,
    "net/minecraft/client/renderer/feature/NameTagFeatureRenderer#getVertexBuilder @INVOKE (redirect)": 1,
    "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup @INVOKE": 2,
    "net/minecraft/client/renderer/feature/RenderTypeFeatureRenderer$Group#<init> @HEAD (modify-variable)": 2,
    "net/minecraft/client/renderer/feature/TextFeatureRenderer#buildGroup @INVOKE": 1,
    "net/minecraft/client/renderer/feature/TextFeatureRenderer#getVertexBuilder @INVOKE (redirect)": 2,
    "net/minecraft/client/renderer/feature/phase/SimpleFeatureRenderPhase#submit @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/renderer/fog/FogData#renderDistanceEnd:F @FIELD (wrap-operation)": 1,
    "net/minecraft/client/renderer/fog/FogRenderer#computeFogColor @HEAD (modify-variable)": 1,
    "net/minecraft/client/renderer/fog/FogRenderer#getBuffer @HEAD (modify-variable)": 1,
    "net/minecraft/client/renderer/fog/FogRenderer#setupFog @FIELD": 1,
    "net/minecraft/client/renderer/fog/FogRenderer#setupFog @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/fog/FogRenderer#updateBuffer @INVOKE (modify-args)": 1,
    "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#applyWeatherDarken @INVOKE (modify-arg)": 1,
    "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#getBaseColor @HEAD (modify-constant)": 1,
    "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#setupFog @HEAD (modify-constant)": 2,
    "net/minecraft/client/renderer/fog/environment/BlindnessFogEnvironment#setupFog @HEAD (modify-constant)": 1,
    "net/minecraft/client/renderer/fog/environment/DarknessFogEnvironment#setupFog @HEAD (modify-constant)": 1,
    "net/minecraft/client/renderer/fog/environment/FogEnvironment#setupFog @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/item/CuboidItemModelWrapper$Unbaked#bake @NEW (wrap-operation)": 1,
    "net/minecraft/client/renderer/item/ItemModelResolver#getItemModel @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/item/properties/numeric/CompassAngleState#getWrappedVisualRotationY @INVOKE (redirect)": 1,
    "net/minecraft/client/renderer/rendertype/RenderSetup#prepareTextures @HEAD (modify-variable)": 1,
    "net/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder#sortOnUpload @INVOKE (redirect)": 6,
    "net/minecraft/client/renderer/rendertype/RenderType#hasBlending @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/renderer/rendertype/RenderTypes#endGateway @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/rendertype/RenderTypes#entitySolid @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/rendertype/RenderTypes#entitySolidZOffsetForward @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/rendertype/RenderTypes#leash @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/state/gui/BlitRenderState#<init> @INVOKE (modify-args)": 1,
    "net/minecraft/client/renderer/texture/MipmapGenerator#generateMipLevels @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/texture/SpriteContents#createAnimationState @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#tick @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/renderer/texture/TextureAtlas#getSprite @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/renderer/texture/TextureAtlasSprite#createAnimationState @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/renderer/texture/TextureManager#register @INVOKE (wrap-operation)": 2,
    "net/minecraft/client/renderer/texture/atlas/SpriteSourceList#<init> @LOAD (modify-variable)": 1,
    "net/minecraft/client/renderer/texture/atlas/SpriteSourceList#list @INVOKE": 1,
    "net/minecraft/client/resources/MapTextureManager$MapInstance#updateTextureIfNeeded @INVOKE": 2,
    "net/minecraft/client/resources/language/ClientLanguage#<init> @INVOKE (modify-arg)": 1,
    "net/minecraft/client/resources/language/ClientLanguage#appendFrom @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/resources/language/I18n#get @INVOKE (wrap-operation)": 1,
    "net/minecraft/client/resources/language/LanguageManager#onResourceManagerReload @INVOKE": 1,
    "net/minecraft/client/resources/model/ModelBakery#lambda$bakeModels$0 @HEAD (modify-constant)": 1,
    "net/minecraft/client/resources/model/ModelManager#buildModelGroups @OVERWRITE": 1,
    "net/minecraft/client/resources/model/ModelManager#createBlockStateToModelDispatch @OVERWRITE": 1,
    "net/minecraft/client/resources/model/cuboid/FaceBakery#recalculateWinding @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/client/resources/model/sprite/AtlasManager#reload @INVOKE": 1,
    "net/minecraft/client/resources/server/ServerPackManager#pushNewPack @INVOKE": 1,
    "net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler#lambda$tick$1 @INVOKE": 1,
    "net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler#method_75840 @INVOKE": 1,
    "net/minecraft/client/server/IntegratedServer#isShutdown @INVOKE (redirect)": 1,
    "net/minecraft/client/server/IntegratedServer#tickServer @INVOKE": 1,
    "net/minecraft/client/sounds/SoundEngine#loadLibrary @INVOKE": 1,
    "net/minecraft/client/sounds/SoundEngine#tickInGameSound @INVOKE": 1,
    "net/minecraft/client/sounds/SoundManager#prepare @INVOKE": 1,
    "net/minecraft/client/tutorial/Tutorial#onOpenInventory @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/commands/Commands#<init> @INVOKE": 2,
    "net/minecraft/commands/Commands#performPrefixedCommand @INVOKE (redirect)": 1,
    "net/minecraft/core/AxisCycle$2#cycle @OVERWRITE": 2,
    "net/minecraft/core/AxisCycle$3#cycle @OVERWRITE": 2,
    "net/minecraft/core/BlockPos#above @OVERWRITE": 8,
    "net/minecraft/core/BlockPos#below @OVERWRITE": 8,
    "net/minecraft/core/BlockPos#betweenClosed @INVOKE (redirect)": 1,
    "net/minecraft/core/BlockPos#east @OVERWRITE": 8,
    "net/minecraft/core/BlockPos#north @OVERWRITE": 8,
    "net/minecraft/core/BlockPos#south @OVERWRITE": 8,
    "net/minecraft/core/BlockPos#west @OVERWRITE": 8,
    "net/minecraft/core/Direction#getApproximateNearest @OVERWRITE": 2,
    "net/minecraft/core/Direction#getOpposite @OVERWRITE": 2,
    "net/minecraft/core/Direction#getRandom @OVERWRITE": 2,
    "net/minecraft/core/Direction#getStepX @OVERWRITE": 2,
    "net/minecraft/core/Direction#getStepY @OVERWRITE": 2,
    "net/minecraft/core/Direction#getStepZ @OVERWRITE": 2,
    "net/minecraft/core/Direction#values @INVOKE (redirect)": 8,
    "net/minecraft/core/Direction$Axis#values @INVOKE (redirect)": 1,
    "net/minecraft/core/NonNullList#get @INVOKE (wrap-operation)": 1,
    "net/minecraft/core/Registry#get @INVOKE (modify-arg)": 1,
    "net/minecraft/core/dispenser/DispenseItemBehavior$13#execute @INVOKE": 1,
    "net/minecraft/core/dispenser/DispenseItemBehavior$3#execute @INVOKE": 1,
    "net/minecraft/core/dispenser/DispenseItemBehavior$4#execute @INVOKE": 1,
    "net/minecraft/core/dispenser/DispenseItemBehavior$9#execute @INVOKE": 1,
    "net/minecraft/core/dispenser/ShearsDispenseItemBehavior#tryShearEntity @INVOKE": 1,
    "net/minecraft/core/particles/ParticleTypes#CLOUD:Lnet/minecraft/core/particles/SimpleParticleType; @FIELD (wrap-operation)": 1,
    "net/minecraft/core/particles/ParticleTypes#ENTITY_EFFECT:Lnet/minecraft/core/particles/ParticleType; @FIELD (wrap-operation)": 1,
    "net/minecraft/core/particles/ParticleTypes#FIREFLY:Lnet/minecraft/core/particles/SimpleParticleType; @FIELD (wrap-operation)": 1,
    "net/minecraft/core/particles/ParticleTypes#LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType; @FIELD (wrap-operation)": 4,
    "net/minecraft/core/particles/ParticleTypes#SMOKE:Lnet/minecraft/core/particles/SimpleParticleType; @FIELD (wrap-operation)": 8,
    "net/minecraft/locale/DeprecatedTranslationsInfo#applyToMap @INVOKE (wrap-operation)": 1,
    "net/minecraft/locale/Language#loadFromJson @INVOKE (redirect)": 1,
    "net/minecraft/nbt/CompoundTag#<init> @INVOKE (modify-arg)": 2,
    "net/minecraft/nbt/CompoundTag#<init> @NEW (redirect)": 2,
    "net/minecraft/nbt/CompoundTag#copy @OVERWRITE": 2,
    "net/minecraft/nbt/NbtAccounter#defaultQuota @HEAD (modify-constant)": 1,
    "net/minecraft/nbt/NbtAccounter#quota:J @FIELD (redirect)": 1,
    "net/minecraft/network/CompressionDecoder#decode @HEAD (modify-constant)": 1,
    "net/minecraft/network/CompressionEncoder#encode @HEAD (modify-constant)": 1,
    "net/minecraft/network/Connection#createFrameEncoder @OVERWRITE": 1,
    "net/minecraft/network/Connection#setEncryptionKey @FIELD": 1,
    "net/minecraft/network/Connection#setEncryptionKey @INVOKE (redirect)": 1,
    "net/minecraft/network/Connection$1#initChannel @HEAD (modify-constant)": 1,
    "net/minecraft/network/FriendlyByteBuf#readIdentifier @HEAD (modify-constant)": 1,
    "net/minecraft/network/FriendlyByteBuf#readUtf @HEAD (modify-constant)": 1,
    "net/minecraft/network/FriendlyByteBuf#writeByte @INVOKE (modify-arg)": 1,
    "net/minecraft/network/FriendlyByteBuf#writeUtf @HEAD (modify-constant)": 1,
    "net/minecraft/network/PacketEncoder#encode @INVOKE": 1,
    "net/minecraft/network/Utf8String#write @OVERWRITE": 1,
    "net/minecraft/network/VarInt#getByteSize @HEAD (modify-constant)": 1,
    "net/minecraft/network/VarInt#getByteSize @OVERWRITE": 1,
    "net/minecraft/network/VarInt#read @HEAD (modify-constant)": 2,
    "net/minecraft/network/VarInt#write @OVERWRITE": 1,
    "net/minecraft/network/VarLong#getByteSize @HEAD (modify-constant)": 1,
    "net/minecraft/network/VarLong#read @HEAD (modify-constant)": 2,
    "net/minecraft/network/Varint21FrameDecoder#copyVarint @HEAD (modify-constant)": 1,
    "net/minecraft/network/Varint21FrameDecoder#decode @OVERWRITE": 1,
    "net/minecraft/network/Varint21LengthFieldPrepender#encode @HEAD (modify-constant)": 1,
    "net/minecraft/network/chat/contents/KeybindContents#getNestedComponent @INVOKE (wrap-operation)": 1,
    "net/minecraft/network/chat/contents/TranslatableContents#decomposedParts:Ljava/util/List; @FIELD (wrap-operation)": 2,
    "net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket#lambda$static$0 @HEAD (modify-constant)": 1,
    "net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket#lambda$static$2 @HEAD (modify-constant)": 1,
    "net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket#lambda$static$0 @HEAD (modify-constant)": 1,
    "net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData#<clinit> @HEAD (modify-constant)": 1,
    "net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket#runUpdates @INVOKE (wrap-operation)": 1,
    "net/minecraft/network/protocol/game/ClientboundSoundPacket#<init> @INVOKE (modify-arg)": 1,
    "net/minecraft/network/protocol/login/ClientboundCustomQueryPacket#readUnknownPayload @HEAD (modify-constant)": 2,
    "net/minecraft/network/protocol/login/ClientboundHelloPacket#getPublicKey @INVOKE (redirect)": 1,
    "net/minecraft/network/protocol/login/ServerboundCustomQueryAnswerPacket#readUnknownPayload @HEAD (modify-constant)": 2,
    "net/minecraft/network/protocol/login/ServerboundKeyPacket#getSecretKey @INVOKE (redirect)": 1,
    "net/minecraft/server/Bootstrap#bootStrap @FIELD": 1,
    "net/minecraft/server/MinecraftServer#computeNextAutosaveInterval @HEAD (modify-constant)": 1,
    "net/minecraft/server/MinecraftServer#playerIdleTimeout:I @FIELD (redirect)": 1,
    "net/minecraft/server/MinecraftServer#runServer @INVOKE": 3,
    "net/minecraft/server/MinecraftServer#saveAllChunks @INVOKE": 2,
    "net/minecraft/server/MinecraftServer#tickServer @INVOKE": 1,
    "net/minecraft/server/PlayerAdvancements#award @INVOKE": 1,
    "net/minecraft/server/ReloadableServerResources#loadResources @INVOKE (modify-arg)": 1,
    "net/minecraft/server/ServerFunctionManager#executeTagFunctions @INVOKE": 2,
    "net/minecraft/server/WorldLoader#load @INVOKE (modify-arg)": 3,
    "net/minecraft/server/commands/LocateCommand#locateStructure @INVOKE": 1,
    "net/minecraft/server/commands/data/EntityDataAccessor#setData @INVOKE": 2,
    "net/minecraft/server/level/ChunkHolder#updateFutures @INVOKE": 2,
    "net/minecraft/server/level/ChunkHolder$LevelChangeListener#onLevelChange @INVOKE (modify-arg)": 1,
    "net/minecraft/server/level/ChunkMap#<init> @INVOKE": 1,
    "net/minecraft/server/level/ChunkMap#<init> @NEW (redirect)": 1,
    "net/minecraft/server/level/ChunkMap#anyPlayerCloseEnoughForSpawning @OVERWRITE": 1,
    "net/minecraft/server/level/ChunkMap#applyChunkTrackingView @OVERWRITE": 1,
    "net/minecraft/server/level/ChunkMap#collectSpawningChunks @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/server/level/ChunkMap#forEachBlockTickingChunk @INVOKE (redirect)": 1,
    "net/minecraft/server/level/ChunkMap#getPlayers @OVERWRITE": 1,
    "net/minecraft/server/level/ChunkMap#getPlayersCloseForSpawning @OVERWRITE": 1,
    "net/minecraft/server/level/ChunkMap#isChunkTracked @INVOKE (redirect)": 1,
    "net/minecraft/server/level/ChunkMap#move @INVOKE": 1,
    "net/minecraft/server/level/ChunkMap#tick @OVERWRITE": 1,
    "net/minecraft/server/level/ChunkMap#updateChunkTracking @OVERWRITE": 1,
    "net/minecraft/server/level/ChunkMap$DistanceManager#forEachEntityTickingChunk @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/server/level/ChunkMap$TrackedEntity#broadcastRemoved @INVOKE (redirect)": 1,
    "net/minecraft/server/level/ChunkMap$TrackedEntity#getEffectiveRange @INVOKE (redirect)": 1,
    "net/minecraft/server/level/ChunkMap$TrackedEntity#updatePlayer @INVOKE": 1,
    "net/minecraft/server/level/ChunkMap$TrackedEntity#updatePlayers @INVOKE (redirect)": 1,
    "net/minecraft/server/level/ChunkTaskDispatcher#onLevelChange @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/server/level/ChunkTrackingView#isWithinDistance @OVERWRITE": 1,
    "net/minecraft/server/level/LoadingChunkTracker#runDistanceUpdates @INVOKE (redirect)": 1,
    "net/minecraft/server/level/PlayerMap#getAllPlayers @INVOKE (redirect)": 1,
    "net/minecraft/server/level/ServerChunkCache#getChunk @OVERWRITE": 2,
    "net/minecraft/server/level/ServerChunkCache#getChunkNow @INVOKE (redirect)": 2,
    "net/minecraft/server/level/ServerChunkCache#tickSpawningChunk @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/server/level/ServerLevel#getAllEntities @INVOKE (redirect)": 2,
    "net/minecraft/server/level/ServerLevel#getBiome @INVOKE (redirect)": 1,
    "net/minecraft/server/level/ServerLevel#getBlockRandomPos @INVOKE (redirect)": 2,
    "net/minecraft/server/level/ServerLevel#getBlockState @INVOKE (redirect)": 1,
    "net/minecraft/server/level/ServerLevel#getEntities @INVOKE (redirect)": 2,
    "net/minecraft/server/level/ServerLevel#getEntities @INVOKE (wrap-operation)": 2,
    "net/minecraft/server/level/ServerLevel#levelEvent @INVOKE (wrap-operation)": 1,
    "net/minecraft/server/level/ServerLevel#mayInteract @INVOKE (wrap-operation)": 1,
    "net/minecraft/server/level/ServerLevel#sendBlockUpdated @INVOKE": 2,
    "net/minecraft/server/level/ServerLevel#sendParticles @INVOKE (wrap-operation)": 5,
    "net/minecraft/server/level/ServerLevel#tick @INVOKE": 2,
    "net/minecraft/server/level/ServerLevel#tickPrecipitation @INVOKE": 2,
    "net/minecraft/server/level/ServerLevel#tryAddFreshEntityWithPassengers @INVOKE (modify-arg)": 1,
    "net/minecraft/server/level/ServerPlayer#setChunkTrackingView @INVOKE (redirect)": 1,
    "net/minecraft/server/level/ServerPlayer#setGameMode @INVOKE": 1,
    "net/minecraft/server/network/ServerCommonPacketListenerImpl#checkIfClosed @HEAD (modify-constant)": 1,
    "net/minecraft/server/network/ServerCommonPacketListenerImpl#keepConnectionAlive @HEAD (modify-constant)": 1,
    "net/minecraft/server/network/ServerConnectionListener$1#initChannel @HEAD (modify-constant)": 1,
    "net/minecraft/server/network/ServerGamePacketListenerImpl#handleMoveVehicle @INVOKE": 1,
    "net/minecraft/server/network/ServerGamePacketListenerImpl#handlePlayerPositionChange @INVOKE": 1,
    "net/minecraft/server/network/ServerLoginPacketListenerImpl#handleKey @INVOKE (modify-arg)": 1,
    "net/minecraft/server/network/ServerLoginPacketListenerImpl#handleKey @INVOKE (redirect)": 1,
    "net/minecraft/server/network/ServerLoginPacketListenerImpl#tick @HEAD (modify-constant)": 1,
    "net/minecraft/server/packs/repository/Pack#readPackMetadata @INVOKE": 1,
    "net/minecraft/server/packs/repository/PackRepository#<init> @INVOKE (modify-arg)": 3,
    "net/minecraft/server/packs/resources/MultiPackResourceManager#getResource @HEAD (modify-variable)": 1,
    "net/minecraft/server/packs/resources/MultiPackResourceManager#getResourceStack @HEAD (modify-variable)": 1,
    "net/minecraft/server/packs/resources/ProfiledReloadInstance#<init> @HEAD (modify-variable)": 1,
    "net/minecraft/server/packs/resources/ProfiledReloadInstance#finish @HEAD (modify-variable)": 1,
    "net/minecraft/server/packs/resources/ReloadableResourceManager#createReload @INVOKE": 1,
    "net/minecraft/server/packs/resources/SimpleReloadInstance#create @HEAD (modify-variable)": 1,
    "net/minecraft/server/players/PlayerList#deop @INVOKE": 1,
    "net/minecraft/server/players/PlayerList#op @INVOKE": 1,
    "net/minecraft/server/players/PlayerList#saveAll @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/server/players/UserBanList#isBanned @INVOKE (wrap-operation)": 1,
    "net/minecraft/sounds/SoundEvent#getRange @HEAD (modify-constant)": 1,
    "net/minecraft/stats/ServerRecipeBook#sendInitialRecipeBook @INVOKE": 1,
    "net/minecraft/tags/TagEntry#elementOrTag @OVERWRITE": 1,
    "net/minecraft/util/ARGB#color @INVOKE (wrap-operation)": 1,
    "net/minecraft/util/ARGB#setVector4fFromARGB32 @INVOKE (wrap-operation)": 1,
    "net/minecraft/util/BitStorage#getAll @INVOKE (modify-arg)": 4,
    "net/minecraft/util/ClassInstanceMultiMap#add @HEAD (modify-variable)": 2,
    "net/minecraft/util/ClassInstanceMultiMap#allInstances:Ljava/util/List; @FIELD (redirect)": 1,
    "net/minecraft/util/ClassInstanceMultiMap#byClass:Ljava/util/Map; @FIELD (redirect)": 1,
    "net/minecraft/util/ClassInstanceMultiMap#find @OVERWRITE": 3,
    "net/minecraft/util/ClassInstanceMultiMap#iterator @INVOKE (redirect)": 2,
    "net/minecraft/util/ClassInstanceMultiMap#remove @HEAD (modify-variable)": 2,
    "net/minecraft/util/Crypt#digestData @INVOKE (redirect)": 2,
    "net/minecraft/util/Crypt#encryptUsingKey @INVOKE (redirect)": 1,
    "net/minecraft/util/Crypt#getCipher @INVOKE (redirect)": 2,
    "net/minecraft/util/DirectoryLock#close @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/util/ExtraCodecs$TagOrElementLocation#decoratedId @OVERWRITE": 1,
    "net/minecraft/util/LightCoordsUtil#getLightCoords @INVOKE (wrap-operation)": 1,
    "net/minecraft/util/Mth#clamp @INVOKE (wrap-operation)": 2,
    "net/minecraft/util/Mth#cos @OVERWRITE": 2,
    "net/minecraft/util/Mth#sin @OVERWRITE": 2,
    "net/minecraft/util/ParticleUtils#spawnParticlesOnBlockFaces @INVOKE (wrap-operation)": 1,
    "net/minecraft/util/RandomSource#nextInt @INVOKE (redirect)": 1,
    "net/minecraft/util/SmoothDouble#getNewDeltaValue @INVOKE (modify-arg)": 1,
    "net/minecraft/util/Util#backgroundExecutor @INVOKE (redirect)": 3,
    "net/minecraft/util/Util#getMillis @INVOKE (redirect)": 3,
    "net/minecraft/util/Util#makeEnumMap @INVOKE (wrap-operation)": 2,
    "net/minecraft/util/Util#shuffle @INVOKE (redirect)": 1,
    "net/minecraft/util/datafix/DataFixTypes#update @INVOKE": 1,
    "net/minecraft/util/random/WeightedRandom#getRandomItem @INVOKE (wrap-operation)": 2,
    "net/minecraft/util/thread/ParallelMapTransform#schedule @INVOKE (redirect)": 1,
    "net/minecraft/world/RandomizableContainer#setLootTable @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/RandomizableContainer#setLootTableSeed @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/RandomizableContainer#unpackLootTable @INVOKE": 1,
    "net/minecraft/world/attribute/EnvironmentAttributeProbe#getValue @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/attribute/modifier/AttributeModifier#apply @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/effect/BadOmenMobEffect#<init> @INVOKE (modify-arg)": 1,
    "net/minecraft/world/effect/InfestedMobEffect#onMobHurt @INVOKE": 1,
    "net/minecraft/world/effect/MobEffectInstance#isAmbient @INVOKE (modify-variable)": 7,
    "net/minecraft/world/entity/AgeableMob#onSyncedDataUpdated @INVOKE": 2,
    "net/minecraft/world/entity/Avatar#getMaxHeadRotationRelativeToBody @INVOKE (redirect)": 1,
    "net/minecraft/world/entity/Entity#baseTick @INVOKE": 2,
    "net/minecraft/world/entity/Entity#canSpawnSprintParticle @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/Entity#checkSupportingBlock @INVOKE": 6,
    "net/minecraft/world/entity/Entity#checkSupportingBlock @INVOKE_ASSIGN": 2,
    "net/minecraft/world/entity/Entity#collectCollidersIgnoringWorldBorder @INVOKE (modify-arg)": 1,
    "net/minecraft/world/entity/Entity#collectCollidersIgnoringWorldBorder @INVOKE (modify-variable)": 1,
    "net/minecraft/world/entity/Entity#collideBoundingBox @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/Entity#collideBoundingBox @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/Entity#collideBoundingBox @OVERWRITE": 2,
    "net/minecraft/world/entity/Entity#commonTick @FIELD (wrap-with-condition)": 1,
    "net/minecraft/world/entity/Entity#doWaterSplashEffect @INVOKE": 1,
    "net/minecraft/world/entity/Entity#getInBlockState @INVOKE_ASSIGN": 2,
    "net/minecraft/world/entity/Entity#getIndirectPassengers @OVERWRITE": 2,
    "net/minecraft/world/entity/Entity#getIndirectPassengersStream @OVERWRITE": 2,
    "net/minecraft/world/entity/Entity#getPassengersAndSelf @OVERWRITE": 2,
    "net/minecraft/world/entity/Entity#getSelfAndPassengers @OVERWRITE": 2,
    "net/minecraft/world/entity/Entity#hurtOrSimulate @INVOKE": 1,
    "net/minecraft/world/entity/Entity#isDescending @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/entity/Entity#isInWall @INVOKE": 2,
    "net/minecraft/world/entity/Entity#move @INVOKE": 1,
    "net/minecraft/world/entity/Entity#placePortalTicket @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/Entity#rideTick @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/Entity#setPosRaw @INVOKE": 2,
    "net/minecraft/world/entity/Entity#tick @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/ExperienceOrb#canMerge @HEAD (modify-constant)": 1,
    "net/minecraft/world/entity/ExperienceOrb#merge @INVOKE": 1,
    "net/minecraft/world/entity/ExperienceOrb#playerTouch @INVOKE": 1,
    "net/minecraft/world/entity/ExperienceOrb#repairPlayerItems @INVOKE_ASSIGN": 1,
    "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#<init> @NEW (wrap-operation)": 2,
    "net/minecraft/world/entity/LivingEntity#breakItem @INVOKE": 1,
    "net/minecraft/world/entity/LivingEntity#createLivingAttributes @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/LivingEntity#detectEquipmentUpdates @INVOKE": 2,
    "net/minecraft/world/entity/LivingEntity#distanceTo @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/LivingEntity#getAttribute @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/LivingEntity#getBlockStateOnLegacy @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/LivingEntity#getItemInHand @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/LivingEntity#hasEffect @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/entity/LivingEntity#hurt @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/LivingEntity#hurtServer @HEAD (modify-variable)": 1,
    "net/minecraft/world/entity/LivingEntity#isInvisibleTo @INVOKE (redirect)": 1,
    "net/minecraft/world/entity/LivingEntity#knockback @HEAD (modify-variable)": 1,
    "net/minecraft/world/entity/LivingEntity#makeBrain @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/entity/LivingEntity#makePoofParticles @INVOKE": 1,
    "net/minecraft/world/entity/LivingEntity#playSound @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/LivingEntity#playSound @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/LivingEntity#spawnItemParticles @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/LivingEntity#startUsingItem @INVOKE": 1,
    "net/minecraft/world/entity/LivingEntity#tickDeath @FIELD": 1,
    "net/minecraft/world/entity/LivingEntity#updateFallFlying @INVOKE": 2,
    "net/minecraft/world/entity/Mob#baseTick @INVOKE": 1,
    "net/minecraft/world/entity/Mob#blockPosition @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/entity/Mob#checkDespawn @INVOKE": 2,
    "net/minecraft/world/entity/Mob#checkSpawnRules @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/Mob#finalizeSpawn @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/Mob#level @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/entity/Mob#mobInteract @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/Mob#setPersistenceRequired @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/entity/ai/Brain#eraseMemory @INVOKE": 2,
    "net/minecraft/world/entity/ai/Brain#setActiveActivity @INVOKE": 2,
    "net/minecraft/world/entity/ai/Brain#setMemory @INVOKE (wrap-with-condition)": 4,
    "net/minecraft/world/entity/ai/Brain#startEachNonRunningBehavior @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/Brain#stopAll @INVOKE": 2,
    "net/minecraft/world/entity/ai/Brain#tick @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/ai/Brain#tickEachRunningBehavior @INVOKE": 2,
    "net/minecraft/world/entity/ai/behavior/AcquirePoi#create @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/ai/behavior/Behavior#hasRequiredMemories @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/behavior/BehaviorControl#tryStart @INVOKE (modify-variable)": 2,
    "net/minecraft/world/entity/ai/behavior/GateBehavior#doStop @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/behavior/GateBehavior#tickOrStop @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/behavior/GateBehavior$RunningPolicy#apply @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos#start @INVOKE": 2,
    "net/minecraft/world/entity/ai/behavior/SleepInBed#checkExtraStartConditions @INVOKE": 1,
    "net/minecraft/world/entity/ai/behavior/TransportItemsBetweenContainers#<init> @INVOKE (modify-arg)": 1,
    "net/minecraft/world/entity/ai/behavior/VillagerGoalPackages#getWorkPackage @STORE (modify-variable)": 1,
    "net/minecraft/world/entity/ai/behavior/VillagerMakeLove#tick @INVOKE": 1,
    "net/minecraft/world/entity/ai/behavior/WorkAtComposter#compostItems @INVOKE": 2,
    "net/minecraft/world/entity/ai/behavior/WorkAtPoi#start @INVOKE": 1,
    "net/minecraft/world/entity/ai/goal/BreakDoorGoal#tick @INVOKE": 1,
    "net/minecraft/world/entity/ai/goal/BreedGoal#breed @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/ai/goal/RangedBowAttackGoal#tick @INVOKE": 1,
    "net/minecraft/world/entity/ai/goal/RemoveBlockGoal#findNearestBlock @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/ai/memory/MemorySlot#clear @INVOKE (wrap-operation)": 4,
    "net/minecraft/world/entity/ai/memory/MemorySlot#set @INVOKE (wrap-operation)": 4,
    "net/minecraft/world/entity/ai/navigation/PathNavigation#recomputePath @INVOKE_ASSIGN": 2,
    "net/minecraft/world/entity/ai/sensing/HoglinSpecificSensor#findNearestRepellent @INVOKE (redirect)": 1,
    "net/minecraft/world/entity/ai/sensing/HoglinSpecificSensor#findNearestRepellent @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/ai/sensing/PiglinSpecificSensor#findNearestRepellent @INVOKE (redirect)": 1,
    "net/minecraft/world/entity/ai/sensing/PiglinSpecificSensor#findNearestRepellent @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/ai/sensing/Sensor#isEntityAttackable @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/ai/sensing/TemptingSensor#doTick @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#ensureLoadedAndValid @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#find @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#find @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#findAllClosestFirstWithType @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#findClosest @OVERWRITE": 4,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#findClosestWithType @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#getCountInRange @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#getInRange @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#getRandom @INVOKE (redirect)": 4,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#getRandom @OVERWRITE": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiManager#take @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/ai/village/poi/PoiTypes#register @LOAD (modify-variable)": 1,
    "net/minecraft/world/entity/animal/AgeableWaterCreature#handleAirSupply @INVOKE (wrap-with-condition)": 2,
    "net/minecraft/world/entity/animal/Animal#setInLove @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/animal/Animal#spawnChildFromBreeding @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/animal/allay/Allay#mobInteract @INVOKE": 1,
    "net/minecraft/world/entity/animal/armadillo/Armadillo#brushOffScute @INVOKE": 1,
    "net/minecraft/world/entity/animal/bee/Bee#registerGoals @INVOKE": 1,
    "net/minecraft/world/entity/animal/chicken/Chicken#registerGoals @INVOKE": 1,
    "net/minecraft/world/entity/animal/cow/MushroomCow#mobInteract @INVOKE": 1,
    "net/minecraft/world/entity/animal/feline/Cat#snapTo @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/animal/feline/Cat#tickCount:I @FIELD (redirect)": 1,
    "net/minecraft/world/entity/animal/feline/Ocelot#tickCount:I @FIELD (redirect)": 1,
    "net/minecraft/world/entity/animal/frog/Frog#canEat @INVOKE (redirect)": 2,
    "net/minecraft/world/entity/animal/rabbit/Rabbit#registerGoals @INVOKE": 1,
    "net/minecraft/world/entity/decoration/ArmorStand#causeDamage @INVOKE": 1,
    "net/minecraft/world/entity/decoration/ArmorStand#hurtServer @INVOKE": 1,
    "net/minecraft/world/entity/decoration/ItemFrame#playSound @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/item/FallingBlockEntity#tick @INVOKE": 2,
    "net/minecraft/world/entity/item/ItemEntity#mergeWithNeighbours @HEAD (modify-constant)": 1,
    "net/minecraft/world/entity/item/ItemEntity#playerTouch @INVOKE": 1,
    "net/minecraft/world/entity/monster/Enderman#getCarriedBlock @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/npc/CatSpawner#spawnCat @INVOKE": 1,
    "net/minecraft/world/entity/npc/villager/Villager#addParticlesAroundSelf @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/player/Inventory#contains @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/player/Inventory#setSelectedSlot @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/entity/player/Player#Lnet/minecraft/world/entity/player/Player;actuallyHurt @INVOKE": 1,
    "net/minecraft/world/entity/player/Player#attack @INVOKE": 1,
    "net/minecraft/world/entity/player/Player#equals @INVOKE (modify-arg)": 1,
    "net/minecraft/world/entity/player/Player#getMaxHeadRotationRelativeToBody @HEAD (modify-constant)": 1,
    "net/minecraft/world/entity/player/Player#playSound @INVOKE (wrap-with-condition)": 2,
    "net/minecraft/world/entity/player/Player#sendOverlayMessage @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/player/Player#tick @INVOKE": 1,
    "net/minecraft/world/entity/projectile/FishingHook#pullEntity @INVOKE": 1,
    "net/minecraft/world/entity/projectile/ProjectileUtil#getEntityHitResult @INVOKE (modify-arg)": 1,
    "net/minecraft/world/entity/projectile/ShulkerBullet#onHitEntity @INVOKE": 1,
    "net/minecraft/world/entity/projectile/ShulkerBullet#tick @INVOKE": 1,
    "net/minecraft/world/entity/raid/Raid#getOminousBannerInstance @INVOKE (redirect)": 6,
    "net/minecraft/world/entity/raid/Raid#updateBossbar @OVERWRITE": 2,
    "net/minecraft/world/entity/raid/Raid$RaiderType#<init> @INVOKE (modify-arg)": 1,
    "net/minecraft/world/entity/vehicle/boat/AbstractBoat#controlBoat @INVOKE": 1,
    "net/minecraft/world/entity/vehicle/boat/AbstractBoat#controlBoat @STORE (modify-variable)": 1,
    "net/minecraft/world/entity/vehicle/boat/AbstractBoat#setInput @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/entity/vehicle/minecart/Minecart#positionRider @INVOKE": 1,
    "net/minecraft/world/inventory/AbstractContainerMenu#getRedstoneSignalFromContainer @INVOKE": 2,
    "net/minecraft/world/inventory/ContainerLevelAccess#execute @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/inventory/EnchantmentMenu#lambda$clickMenuButton$0 @INVOKE": 1,
    "net/minecraft/world/inventory/StonecutterMenu$2#lambda$onTake$0 @INVOKE": 1,
    "net/minecraft/world/item/BoneMealItem#addGrowthParticles @INVOKE": 2,
    "net/minecraft/world/item/BottleItem#use @INVOKE": 1,
    "net/minecraft/world/item/BowItem#use @INVOKE": 1,
    "net/minecraft/world/item/BucketItem#use @INVOKE": 2,
    "net/minecraft/world/item/BundleItem#getNumberOfItemsToShow @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/item/FlintAndSteelItem#useOn @FIELD": 1,
    "net/minecraft/world/item/FoodOnAStickItem#use @INVOKE": 1,
    "net/minecraft/world/item/ItemStack#getDestroySpeed @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/item/ItemStack#getTooltipLines @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/item/ItemStack#hurtAndBreak @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/item/ItemStack#isDamageableItem @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/item/ItemStack#isSameItemSameComponents @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/item/PotionItem#useOn @INVOKE": 1,
    "net/minecraft/world/item/SolidBucketItem#useOn @INVOKE": 1,
    "net/minecraft/world/item/SpawnEggItem#use @FIELD": 1,
    "net/minecraft/world/item/component/AttackRange#getClosesetHit @INVOKE (modify-arg)": 1,
    "net/minecraft/world/item/component/Consumable#onConsume @INVOKE": 1,
    "net/minecraft/world/item/enchantment/EnchantmentHelper#getRandomItemWith @INVOKE_ASSIGN (modify-variable)": 1,
    "net/minecraft/world/item/enchantment/EnchantmentHelper#tickEffects @INVOKE (wrap-with-condition)": 2,
    "net/minecraft/world/item/enchantment/ItemEnchantments#addToTooltip @INVOKE": 2,
    "net/minecraft/world/level/BaseSpawner#clientTick @INVOKE": 1,
    "net/minecraft/world/level/BaseSpawner#serverTick @INVOKE": 2,
    "net/minecraft/world/level/BlockGetter#clip @OVERWRITE": 2,
    "net/minecraft/world/level/BlockGetter#getFluidState @INVOKE (redirect)": 1,
    "net/minecraft/world/level/CardinalLighting#byFace @HEAD (modify-variable)": 1,
    "net/minecraft/world/level/EntityBasedExplosionDamageCalculator#getBlockExplosionResistance @OVERWRITE": 2,
    "net/minecraft/world/level/EntityGetter#getEntities @INVOKE (redirect)": 2,
    "net/minecraft/world/level/Level#addAlwaysVisibleParticle @INVOKE (wrap-operation)": 4,
    "net/minecraft/world/level/Level#addParticle @INVOKE (wrap-operation)": 5,
    "net/minecraft/world/level/Level#addParticle @INVOKE (wrap-with-condition)": 2,
    "net/minecraft/world/level/Level#clip @INVOKE (redirect)": 2,
    "net/minecraft/world/level/Level#gameEvent @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/level/Level#getBlockState @OVERWRITE": 2,
    "net/minecraft/world/level/Level#getChunk @INVOKE (redirect)": 1,
    "net/minecraft/world/level/Level#getChunk @OVERWRITE": 4,
    "net/minecraft/world/level/Level#getChunkAt @OVERWRITE": 2,
    "net/minecraft/world/level/Level#getEntities @INVOKE (redirect)": 12,
    "net/minecraft/world/level/Level#getEntities @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/Level#getEntitiesOfClass @INVOKE (redirect)": 2,
    "net/minecraft/world/level/Level#getEntityCollisions @INVOKE (redirect)": 2,
    "net/minecraft/world/level/Level#getNearestPlayer @INVOKE (redirect)": 1,
    "net/minecraft/world/level/Level#hasChunkAt @INVOKE (redirect)": 1,
    "net/minecraft/world/level/Level#isClientSide @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/Level#levelEvent @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/Level#playSound @INVOKE (modify-arg)": 2,
    "net/minecraft/world/level/Level#playSound @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/Level#setBlock @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/Level#shouldTickBlocksAt @INVOKE (redirect)": 2,
    "net/minecraft/world/level/Level#shouldTickBlocksAt @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/LevelReader#getChunk @INVOKE (redirect)": 3,
    "net/minecraft/world/level/LevelReader#getFluidState @INVOKE (redirect)": 1,
    "net/minecraft/world/level/LevelReader#getFluidState @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/LocalMobCapCalculator#addMob @OVERWRITE": 1,
    "net/minecraft/world/level/LocalMobCapCalculator#canSpawn @OVERWRITE": 1,
    "net/minecraft/world/level/LocalMobCapCalculator$MobCounts#add @OVERWRITE": 1,
    "net/minecraft/world/level/LocalMobCapCalculator$MobCounts#canSpawn @OVERWRITE": 1,
    "net/minecraft/world/level/NaturalSpawner#getFilteredSpawningCategories @HEAD (modify-variable)": 1,
    "net/minecraft/world/level/NaturalSpawner#isValidPositionForMob @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/PathNavigationRegion#getBlockState @OVERWRITE": 2,
    "net/minecraft/world/level/PathNavigationRegion#getFluidState @OVERWRITE": 2,
    "net/minecraft/world/level/ServerExplosion#calculateExplodedPositions @HEAD (modify-constant)": 2,
    "net/minecraft/world/level/ServerExplosion#calculateExplodedPositions @NEW (redirect)": 2,
    "net/minecraft/world/level/ServerExplosion#explode @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/ServerExplosion#getHitPlayers @INVOKE (modify-variable)": 2,
    "net/minecraft/world/level/ServerExplosion#getSeenPercent @NEW (redirect)": 2,
    "net/minecraft/world/level/ServerLevelAccessor#addFreshEntityWithPassengers @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/StructureManager#getAllStructuresAt @INVOKE (redirect)": 1,
    "net/minecraft/world/level/TicketStorage#addTicket @INVOKE": 2,
    "net/minecraft/world/level/TicketStorage#removeTicket @INVOKE": 2,
    "net/minecraft/world/level/TicketStorage#removeTicketIf @INVOKE": 2,
    "net/minecraft/world/level/biome/Biome#getFoliageColor @OVERWRITE": 2,
    "net/minecraft/world/level/biome/Biome#getGrassColor @OVERWRITE": 2,
    "net/minecraft/world/level/biome/Biome#getHeightAdjustedTemperature @HEAD (modify-variable)": 1,
    "net/minecraft/world/level/biome/Biome#getTemperature @OVERWRITE": 3,
    "net/minecraft/world/level/biome/Biome#shouldSnow @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/biome/Biome$TemperatureModifier$2#modifyTemperature @HEAD (modify-variable)": 1,
    "net/minecraft/world/level/biome/Climate$Parameter#* @NEW (redirect)": 1,
    "net/minecraft/world/level/block/AnvilBlock#damage @HEAD (modify-variable)": 1,
    "net/minecraft/world/level/block/BarrelBlock#useWithoutItem @FIELD": 1,
    "net/minecraft/world/level/block/BaseFireBlock#animateTick @INVOKE": 1,
    "net/minecraft/world/level/block/BeehiveBlock#useItemOn @INVOKE": 1,
    "net/minecraft/world/level/block/Block#animateTick @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/Block#boxZ @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/Block#column @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/Block#isShapeFullBlock @OVERWRITE": 2,
    "net/minecraft/world/level/block/Block#useWithoutItem @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/CakeBlock#eat @INVOKE": 1,
    "net/minecraft/world/level/block/CakeBlock#useWithoutItem @INVOKE": 1,
    "net/minecraft/world/level/block/ComposterBlock#useItemOn @INVOKE": 1,
    "net/minecraft/world/level/block/ComposterBlock$EmptyContainer#getSlotsForFace @OVERWRITE": 2,
    "net/minecraft/world/level/block/ComposterBlock$InputContainer#getSlotsForFace @OVERWRITE": 2,
    "net/minecraft/world/level/block/ComposterBlock$InputContainer#setChanged @INVOKE": 3,
    "net/minecraft/world/level/block/ComposterBlock$OutputContainer#getSlotsForFace @OVERWRITE": 2,
    "net/minecraft/world/level/block/DispenserBlock#dispenseFrom @INVOKE": 1,
    "net/minecraft/world/level/block/DriedGhastBlock#spawnGhastling @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/level/block/EntityBlock#newBlockEntity @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/FallingParticlesLeavesBlock#isFaceFull @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/FallingParticlesLeavesBlock#spawnFallingLeavesParticle @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/FlowerPotBlock#useItemOn @INVOKE": 2,
    "net/minecraft/world/level/block/FlowerPotBlock#useWithoutItem @INVOKE": 1,
    "net/minecraft/world/level/block/HopperBlock#onPlace @INVOKE": 2,
    "net/minecraft/world/level/block/LeavesBlock#randomTick @INVOKE": 2,
    "net/minecraft/world/level/block/LiquidBlock#shouldSpreadLiquid @INVOKE": 1,
    "net/minecraft/world/level/block/RedstoneWireBlock#affectNeighborsAfterRemoval @INVOKE": 1,
    "net/minecraft/world/level/block/RedstoneWireBlock#onPlace @INVOKE": 1,
    "net/minecraft/world/level/block/RepeaterBlock#useWithoutItem @INVOKE": 1,
    "net/minecraft/world/level/block/RespawnAnchorBlock#useItemOn @INVOKE": 1,
    "net/minecraft/world/level/block/RespawnAnchorBlock#useWithoutItem @FIELD": 1,
    "net/minecraft/world/level/block/SupportType#values @INVOKE (redirect)": 1,
    "net/minecraft/world/level/block/entity/BeaconBlockEntity#tick @FIELD": 1,
    "net/minecraft/world/level/block/entity/BlockEntity#saveWithId @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/entity/BlockEntity#setChanged @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/entity/BlockEntityType#isValid @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick @INVOKE": 2,
    "net/minecraft/world/level/block/entity/CampfireBlockEntity#placeFood @INVOKE": 2,
    "net/minecraft/world/level/block/entity/ChestBlockEntity#triggerEvent @INVOKE": 2,
    "net/minecraft/world/level/block/entity/EnderChestBlockEntity#triggerEvent @INVOKE": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#ejectItems @INVOKE": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#getAttachedContainer @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#getItemsAtAndAbove @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#getSourceContainer @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#inventoryFull @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#isEmpty @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#pushItemsTick @INVOKE": 2,
    "net/minecraft/world/level/block/entity/HopperBlockEntity#suckInItems @FIELD": 2,
    "net/minecraft/world/level/block/entity/SignText#getRenderMessages @FIELD": 2,
    "net/minecraft/world/level/block/entity/TickingBlockEntity#getPos @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/piston/PistonMovingBlockEntity#getCollisionShape @INVOKE": 2,
    "net/minecraft/world/level/block/piston/PistonMovingBlockEntity#moveCollidedEntities @INVOKE": 1,
    "net/minecraft/world/level/block/state/BlockState#getBlock @INVOKE (redirect)": 1,
    "net/minecraft/world/level/block/state/BlockState#getCollisionShape @INVOKE (modify-arg)": 1,
    "net/minecraft/world/level/block/state/BlockState#getLightDampening @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/state/BlockState#getOffset @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/block/state/BlockState#is @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/state/BlockState#isAir @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/state/BlockState#isCollisionShapeFullBlock @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/state/BlockState#isRedstoneConductor @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/block/state/BlockState#randomTick @INVOKE (modify-arg)": 2,
    "net/minecraft/world/level/block/state/StateDefinition#createMultiPropertyStates @STORE (modify-variable)": 1,
    "net/minecraft/world/level/block/state/StateHolder#initializeNeighbors @INVOKE (redirect)": 2,
    "net/minecraft/world/level/block/state/StateHolder#initializeNeighbors @OVERWRITE": 2,
    "net/minecraft/world/level/block/state/StateHolder#propertyValues:[Ljava/lang/Comparable; @FIELD (redirect)": 4,
    "net/minecraft/world/level/block/state/StateHolder#setValueInternal @OVERWRITE": 2,
    "net/minecraft/world/level/block/state/pattern/BlockPattern#find @INVOKE": 2,
    "net/minecraft/world/level/block/state/properties/Property#<init> @HEAD (modify-variable)": 1,
    "net/minecraft/world/level/block/state/properties/Property#equals @OVERWRITE": 1,
    "net/minecraft/world/level/border/WorldBorder$BorderExtent#update @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/chunk/ChunkAccess#getAllReferences @OVERWRITE": 1,
    "net/minecraft/world/level/chunk/ChunkAccess#getListenerRegistry @INVOKE (redirect)": 2,
    "net/minecraft/world/level/chunk/ChunkGeneratorStructureState#ensureStructuresGenerated @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/chunk/LevelChunk#<init> @INVOKE": 2,
    "net/minecraft/world/level/chunk/LevelChunk#getBlockState @INVOKE (redirect)": 2,
    "net/minecraft/world/level/chunk/LevelChunk#getBlockState @OVERWRITE": 2,
    "net/minecraft/world/level/chunk/LevelChunk#getFluidState @OVERWRITE": 2,
    "net/minecraft/world/level/chunk/LevelChunk#getListenerRegistry @FIELD": 2,
    "net/minecraft/world/level/chunk/LevelChunk#isEmpty @INVOKE (redirect)": 1,
    "net/minecraft/world/level/chunk/LevelChunk#isTicking @INVOKE (redirect)": 2,
    "net/minecraft/world/level/chunk/LevelChunk#lambda$updateBlockEntityTicker$0 @INVOKE": 4,
    "net/minecraft/world/level/chunk/LevelChunkSection#setBlockState @INVOKE (redirect)": 2,
    "net/minecraft/world/level/chunk/PalettedContainer#acquire @OVERWRITE": 5,
    "net/minecraft/world/level/chunk/PalettedContainer#count @INVOKE": 2,
    "net/minecraft/world/level/chunk/PalettedContainer#count @INVOKE (modify-arg)": 2,
    "net/minecraft/world/level/chunk/PalettedContainer#count @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/chunk/PalettedContainer#count @NEW (wrap-operation)": 2,
    "net/minecraft/world/level/chunk/PalettedContainer#pack @OVERWRITE": 2,
    "net/minecraft/world/level/chunk/PalettedContainer#read @FIELD": 1,
    "net/minecraft/world/level/chunk/PalettedContainer#release @OVERWRITE": 5,
    "net/minecraft/world/level/chunk/PalettedContainer$CountConsumer#accept @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/chunk/status/ChunkStatusTasks#lambda$full$0 @INVOKE": 1,
    "net/minecraft/world/level/chunk/storage/SerializableChunkData#parse @STORE (modify-variable)": 1,
    "net/minecraft/world/level/chunk/storage/SerializableChunkData#read @STORE (modify-variable)": 1,
    "net/minecraft/world/level/dimension/DimensionType#skybox @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/entity/EntitySection#updateChunkStatus @HEAD (modify-variable)": 2,
    "net/minecraft/world/level/entity/EntitySectionStorage#forEachAccessibleNonEmptySection @INVOKE_ASSIGN": 2,
    "net/minecraft/world/level/entity/EntityTickList#ensureActiveIsNotIterated @OVERWRITE": 2,
    "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove @INVOKE": 2,
    "net/minecraft/world/level/gameevent/GameEventListenerRegistry#visitInRangeListeners @INVOKE (redirect)": 2,
    "net/minecraft/world/level/levelgen/Heightmap#update @INVOKE (redirect)": 1,
    "net/minecraft/world/level/levelgen/Heightmap#update @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator#getSeaLevel @OVERWRITE": 2,
    "net/minecraft/world/level/levelgen/NoiseChunk#wrap @OVERWRITE": 1,
    "net/minecraft/world/level/levelgen/PatrolSpawner#spawnPatrolMember @INVOKE": 1,
    "net/minecraft/world/level/levelgen/PatrolSpawner#spawnPatrolMember @STORE (modify-variable)": 1,
    "net/minecraft/world/level/levelgen/PositionalRandomFactory#fromHashOf @INVOKE (modify-arg)": 1,
    "net/minecraft/world/level/levelgen/SurfaceRules$Context#getBiome @OVERWRITE": 1,
    "net/minecraft/world/level/levelgen/SurfaceRules$Context#updateY @OVERWRITE": 1,
    "net/minecraft/world/level/levelgen/SurfaceRules$SequenceRule#tryApply @OVERWRITE": 1,
    "net/minecraft/world/level/levelgen/blending/BlendingData#getHeightAtXZ @INVOKE": 1,
    "net/minecraft/world/level/levelgen/feature/BambooFeature#place @INVOKE": 1,
    "net/minecraft/world/level/levelgen/feature/SteppedColumnClusterFeature#canPlaceAt @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/levelgen/feature/VinesFeature#place @INVOKE": 1,
    "net/minecraft/world/level/levelgen/structure/StructurePiece#<init> @HEAD (modify-variable)": 1,
    "net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$EndCityPiece#handleDataMarker @INVOKE": 1,
    "net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor#finalizeProcessing @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor#processBlock @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate#placeInWorld @INVOKE": 3,
    "net/minecraft/world/level/lighting/ChunkSkyLightSources#fillFrom @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/level/lighting/ChunkSkyLightSources#update @INVOKE (redirect)": 2,
    "net/minecraft/world/level/lighting/LayerLightEventListener#getDataLayerData @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/lighting/LevelLightEngine#hasLightWork @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/lighting/LevelLightEngine#queueSectionData @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/lighting/LevelLightEngine#runLightUpdates @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/material/FlowingFluid#canPassThrough @OVERWRITE": 2,
    "net/minecraft/world/level/material/FlowingFluid#isWaterHole @OVERWRITE": 2,
    "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey#hashCode @OVERWRITE": 2,
    "net/minecraft/world/level/material/FluidState#is @INVOKE (redirect)": 1,
    "net/minecraft/world/level/material/FluidState#isEmpty @OVERWRITE": 2,
    "net/minecraft/world/level/material/FluidState#isRandomlyTicking @INVOKE (redirect)": 1,
    "net/minecraft/world/level/material/FluidState#randomTick @INVOKE (modify-arg)": 2,
    "net/minecraft/world/level/pathfinder/FlyNodeEvaluator#checkNeighbourBlocks @INVOKE (redirect)": 2,
    "net/minecraft/world/level/pathfinder/WalkNodeEvaluator#checkNeighbourBlocks @INVOKE": 2,
    "net/minecraft/world/level/pathfinder/WalkNodeEvaluator#checkNeighbourBlocks @INVOKE (redirect)": 2,
    "net/minecraft/world/level/pathfinder/WalkNodeEvaluator#getPathTypeFromState @INVOKE_ASSIGN": 2,
    "net/minecraft/world/level/portal/PortalForcer#findClosestPortalPosition @OVERWRITE": 2,
    "net/minecraft/world/level/saveddata/maps/MapItemSavedData#setDecorationsDirty @INVOKE (wrap-with-condition)": 1,
    "net/minecraft/world/level/saveddata/maps/MapItemSavedData#tickCarriedBy @INVOKE": 1,
    "net/minecraft/world/level/storage/LevelStorageSource#createAccess @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/level/storage/LevelStorageSource#lambda$loadLevelSummaries$0 @INVOKE": 1,
    "net/minecraft/world/level/storage/LevelStorageSource#validateAndCreateAccess @INVOKE (wrap-operation)": 2,
    "net/minecraft/world/level/storage/loot/LootTable#fill @INVOKE": 1,
    "net/minecraft/world/phys/AABB#inflate @INVOKE (modify-arg)": 1,
    "net/minecraft/world/phys/AABB#max @OVERWRITE": 2,
    "net/minecraft/world/phys/AABB#min @OVERWRITE": 2,
    "net/minecraft/world/phys/Vec3#add @INVOKE (modify-arg)": 1,
    "net/minecraft/world/phys/Vec3#add @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/phys/Vec3#distanceToSqr @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/phys/Vec3#subtract @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/phys/shapes/CubePointRange#getDouble @OVERWRITE": 2,
    "net/minecraft/world/phys/shapes/CubeVoxelShape#getCoords @OVERWRITE": 2,
    "net/minecraft/world/phys/shapes/EntityCollisionContext#<init> @HEAD (modify-constant)": 2,
    "net/minecraft/world/phys/shapes/EntityCollisionContext#<init> @INVOKE": 2,
    "net/minecraft/world/phys/shapes/Shapes#create @OVERWRITE": 2,
    "net/minecraft/world/phys/shapes/Shapes#createIndexMerger @NEW": 2,
    "net/minecraft/world/phys/shapes/Shapes#joinIsNotEmpty @INVOKE": 2,
    "net/minecraft/world/phys/shapes/Shapes#or @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/phys/shapes/Shapes#rotateHorizontal @INVOKE (wrap-operation)": 1,
    "net/minecraft/world/phys/shapes/VoxelShape#collideX @OVERWRITE": 2,
    "net/minecraft/world/phys/shapes/VoxelShape#findIndex @OVERWRITE": 2,
    "net/minecraft/world/ticks/LevelChunkTicks#count @OVERWRITE": 2,
    "net/minecraft/world/ticks/LevelChunkTicks#getAll @OVERWRITE": 2,
    "net/minecraft/world/ticks/LevelChunkTicks#hasScheduledTick @OVERWRITE": 2,
    "net/minecraft/world/ticks/LevelChunkTicks#pack @OVERWRITE": 2,
    "net/minecraft/world/ticks/LevelChunkTicks#removeIf @OVERWRITE": 2,
    "net/minecraft/world/ticks/LevelChunkTicks#schedule @OVERWRITE": 2,
    "net/minecraft/world/ticks/LevelChunkTicks#unpack @OVERWRITE": 2,
    "net/neoforged/fml/loading/ImmediateWindowHandler#setupMinecraftWindow @INVOKE (wrap-operation)": 1,
    "obro1961/chatpatches/ChatLog#addMessage @INVOKE (modify-arg)": 1,
    "org/apache/commons/lang3/Validate#inclusiveBetween @INVOKE (redirect)": 12,
    "org/joml/Matrix4f#mul @INVOKE (wrap-operation)": 1,
    "org/joml/Matrix4f#rotate @INVOKE (wrap-operation)": 1,
    "org/joml/Matrix4f#scale @INVOKE (wrap-operation)": 1,
    "org/joml/Matrix4f#translate @INVOKE (modify-arg)": 1,
    "org/joml/Matrix4fStack#translate @INVOKE (redirect)": 2,
    "org/joml/Quaternionf#rotationYXZ @INVOKE (modify-arg)": 2,
    "org/lwjgl/glfw/GLFW#glfwCreateWindow @INVOKE (redirect)": 1,
    "org/lwjgl/openal/ALC10#alcCreateContext @INVOKE (modify-args)": 1,
    "org/lwjgl/opengl/GL33C#glDrawBuffers @INVOKE (redirect)": 1,
    "org/lwjgl/opengl/GL33C#glDrawElements @INVOKE (redirect)": 1,
    "org/lwjgl/opengl/GL33C#glDrawElementsInstancedBaseVertex @INVOKE (modify-arg)": 1,
    "org/lwjgl/opengl/GL33C#glGetUniformBlockIndex @INVOKE (redirect)": 1,
    "org/lwjgl/opengl/GL33C#glViewport @INVOKE (wrap-with-condition)": 2,
    "org/lwjgl/opengl/GL33C#nglMultiDrawElementsBaseVertex @INVOKE (modify-arg)": 1,
    "org/lwjgl/sdl/SDLVideo#SDL_CreateWindow @INVOKE (redirect)": 1,
    "org/lwjgl/sdl/SDLVideo#SDL_GL_SetSwapInterval @INVOKE (wrap-operation)": 1,
    "org/lwjgl/sdl/SDLVideo#SDL_SetWindowMouseGrab @INVOKE (wrap-operation)": 1,
    "org/lwjgl/system/MemoryUtil#memPutByte @INVOKE (redirect)": 2,
    "org/lwjgl/system/MemoryUtil#memPutFloat @INVOKE (redirect)": 2,
    "org/lwjgl/system/MemoryUtil#memPutInt @INVOKE (redirect)": 2,
    "org/lwjgl/system/MemoryUtil#memPutShort @INVOKE (redirect)": 2,
    "org/lwjgl/vulkan/VkPipelineLayoutCreateInfo#pSetLayouts @INVOKE (wrap-operation)": 1,
    "org/quiltmc/loader/impl/entrypoint/minecraft/hooks/EntrypointClient#start @INVOKE (redirect)": 1,
    "org/slf4j/Logger#error @INVOKE (redirect)": 1,
    "org/slf4j/Logger#error @INVOKE (wrap-operation)": 1,
    "org/slf4j/Logger#info @INVOKE (redirect)": 2,
    "org/slf4j/Logger#warn @INVOKE (wrap-with-condition)": 1,
    "xaero/common/core/IPictureInPictureRenderer#xaero_mm_prepareTexturesAndProjection @INVOKE (wrap-with-condition)": 1,
    "xaero/common/graphics/renderer/multitexture/MultiTextureRenderTypeRendererProvider#draw @INVOKE (wrap-operation)": 1,
    "xaero/common/gui/GuiWaypoints#isOneSelected @INVOKE (redirect)": 1,
    "xaero/common/minimap/render/MinimapFBORenderer#renderChunksToFBO @INVOKE (modify-arg)": 1,
    "xaero/common/minimap/render/MinimapRendererHelper#addColoredLineToExistingBuffer @INVOKE (modify-arg)": 1,
    "xaero/common/minimap/waypoints/Waypoint#isThirdParty @INVOKE (wrap-operation)": 1,
    "xaero/common/mods/SupportXaeroWorldmap#drawMinimap @INVOKE": 1,
    "xaero/common/mods/SupportXaeroWorldmap#drawMinimap @INVOKE (wrap-operation)": 1,
    "xaero/common/mods/SupportXaeroWorldmap#renderSlimeChunks @INVOKE (wrap-with-condition)": 1,
    "xaero/common/mods/SupportXaeroWorldmap#tryToGetMultiworldId @INVOKE": 1,
    "xaero/hud/minimap/Minimap#checkCrashes @OVERWRITE": 1,
    "xaero/hud/minimap/element/render/over/MinimapElementOverMapRendererHandler#prepareRender @INVOKE (modify-arg)": 1,
    "xaero/hud/minimap/info/render/compile/InfoDisplayCompiler#addWords @INVOKE (wrap-operation)": 1,
    "xaero/hud/minimap/module/MinimapSession#getHideMinimapUnderScreen @INVOKE (redirect)": 1,
    "xaero/hud/minimap/render/MinimapPipRenderer#renderToTexture @INVOKE (wrap-with-condition)": 1,
    "xaero/hud/minimap/waypoint/WaypointSharingHandler#onShareConfirmationResult @INVOKE": 1,
    "xaero/hud/minimap/waypoint/WaypointTeleport#teleportToWaypoint @INVOKE": 2,
    "xaero/hud/minimap/waypoint/render/WaypointMapRenderer#renderElement @INVOKE": 1,
    "xaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer#renderElement @INVOKE": 1,
    "xaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer#renderIconWithLabels @INVOKE (modify-arg)": 2,
    "xaero/hud/minimap/world/state/MinimapWorldState#setAutoWorldPath @INVOKE (wrap-operation)": 1,
    "xaero/lib/client/graphics/XaeroBufferProvider#endBatch @INVOKE (wrap-operation)": 1,
    "xaero/lib/client/graphics/util/ImmediateRenderUtil#texturedRect @INVOKE (wrap-operation)": 1,
    "xaero/lib/client/graphics/util/TextureUtils#clearRenderTarget @INVOKE (wrap-operation)": 1,
    "xaero/lib/client/gui/ISettingEntry#createWidget @INVOKE (wrap-operation)": 1,
    "xaero/lib/client/gui/widget/online/WidgetLoadingHandler#loadWidget @OVERWRITE": 1,
    "xaero/map/CrashHandler#checkForCrashes @OVERWRITE": 1,
    "xaero/map/MapProcessor#currentWorldId:Ljava/lang/String; @FIELD (wrap-operation)": 1,
    "xaero/map/MapProcessor#getLeafMapRegion @INVOKE (wrap-operation)": 1,
    "xaero/map/MapProcessor#getLeafMapRegion @NEW (redirect)": 1,
    "xaero/map/MapProcessor#updateWorldSynced @INVOKE": 2,
    "xaero/map/MapWriter#loadPixel @INVOKE": 1,
    "xaero/map/cache/BlockStateShortShapeCache#ioThreadWaitingForSupplier:Ljava/util/function/Supplier; @FIELD (wrap-operation)": 1,
    "xaero/map/file/MapSaveLoad#saveRegion @INVOKE": 2,
    "xaero/map/file/MapSaveLoad#saveRegion @NEW (redirect)": 1,
    "xaero/map/graphics/CustomRenderTypes#MAP:Lnet/minecraft/client/renderer/rendertype/RenderType; @FIELD (wrap-operation)": 1,
    "xaero/map/graphics/CustomRenderTypes#MAP_FRAME:Lnet/minecraft/client/renderer/rendertype/RenderType; @FIELD (wrap-operation)": 1,
    "xaero/map/graphics/CustomRenderTypes#applyFixedOrder @INVOKE": 1,
    "xaero/map/graphics/MapRenderHelper#drawCenteredStringWithBackground @INVOKE (modify-arg)": 2,
    "xaero/map/graphics/MapRenderHelper#fillIntoExistingBuffer @INVOKE (wrap-with-condition)": 2,
    "xaero/map/graphics/renderer/multitexture/MultiTextureRenderTypeRendererProvider#draw @INVOKE (wrap-operation)": 2,
    "xaero/map/gui/GuiMap#applyZoomLimits @INVOKE (wrap-operation)": 2,
    "xaero/map/gui/GuiMap#cameraX:D @FIELD (redirect)": 1,
    "xaero/map/gui/GuiMap#cameraZ:D @FIELD (redirect)": 1,
    "xaero/map/gui/GuiMap#extractRenderState @FIELD": 2,
    "xaero/map/gui/GuiMap#extractRenderState @INVOKE": 5,
    "xaero/map/mods/gui/Waypoint#getAlpha @INVOKE (wrap-operation)": 1,
    "xaero/map/mods/gui/Waypoint#getName @INVOKE (wrap-operation)": 1,
    "xaero/map/mods/gui/WaypointSymbolCreator#getSymbolTexture @INVOKE (wrap-operation)": 1,
    "xaero/map/radar/tracker/PlayerTeleporter#teleport @INVOKE": 2,
    "xaero/map/region/LayeredRegionManager#getLayer @NEW (redirect)": 1,
    "xaero/map/region/LeveledRegion#saveCacheTextures @INVOKE": 1,
    "xaero/map/region/LeveledRegion#saveCacheTextures @NEW (redirect)": 1,
    "xaero/map/region/OverlayBuilder#isEmpty @INVOKE (wrap-operation)": 1,
    "xaero/map/teleport/MapTeleporter#teleport @INVOKE": 2,
    "xaero/map/world/MapWorld#currentDimensionId:Lnet/minecraft/resources/ResourceKey; @FIELD (wrap-operation)": 1,
    "xaero/map/world/MapWorld#getCurrentDimension @INVOKE (wrap-operation)": 3,
    "xaero/map/world/MapWorld#getCurrentDimension @OVERWRITE": 1,
    "xaero/map/world/MapWorld#getCurrentDimensionId @INVOKE (wrap-operation)": 1
  },
  "api": {
    "content:data": 51,
    "content:registries": 23,
    "hook:chunk_load": 2,
    "hook:net_from_client": 86,
    "hook:net_from_server": 101,
    "hook:register_commands": 32,
    "hook:server_tick": 20,
    "hook:tick": 61,
    "hook:tooltip_component": 3,
    "hook:world_lifecycle": 70
  },
  "mods": [
    {
      "mod_id": "skinlayers3d",
      "name": "3d-Skin-Layers",
      "version": "1.11.4",
      "license": "tr7zw Protective License",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/tr7zw/skinlayers/SkinLayersMod"
        },
        {
          "kind": "modmenu",
          "value": "dev/tr7zw/skinlayers/config/SkinLayersModMenu"
        }
      ],
      "mixin_configs": [
        "skinlayers3d.mixins.json"
      ],
      "depends": [],
      "classes": 76,
      "methods": 440,
      "sites": [
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/BlockEntityWithoutLevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/special/PlayerHeadSpecialRenderer"
          ],
          "handler": "extractArgument",
          "kind": "inject",
          "method": "extractArgument",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/special/PlayerHeadSpecialRenderer#extractArgument HEAD"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/CustomHeadLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/CustomHeadLayer"
          ],
          "handler": "resolveSkullRenderType",
          "kind": "inject",
          "method": "resolveSkullRenderType",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/CustomHeadLayer#resolveSkullRenderType HEAD"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/Deadmau5EarsLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/Deadmau5EarsLayer"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/Deadmau5EarsLayer#<init> TAIL"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/EMFModelPartMixin",
          "targets": [
            "traben/entity_model_features/models/parts/EMFModelPart"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at traben/entity_model_features/models/parts/EMFModelPart#render HEAD"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/ModelPartMixin",
          "targets": [
            "net/minecraft/client/model/geom/ModelPart"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "Lnet/minecraft/client/model/geom/ModelPart;render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/geom/ModelPart#Lnet/minecraft/client/model/geom/ModelPart;render HEAD"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/PlayerModelMixin",
          "targets": [
            "net/minecraft/client/model/player/PlayerModel"
          ],
          "handler": "setupAnim",
          "kind": "inject",
          "method": "setupAnim",
          "at": "TAIL",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/player/PlayerModel#setupAnim TAIL"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/PlayerRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "renderHandStart",
          "kind": "inject",
          "method": "renderHand",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/player/AvatarRenderer#renderHand HEAD"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/PlayerRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "markArmorModelAsIgnored",
          "kind": "wrap-operation",
          "method": "lambda$new$0",
          "at": "NEW",
          "at_target": "(Lnet/minecraft/client/model/geom/ModelPart;Z)Lnet/minecraft/client/model/player/PlayerModel;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/SkullBlockEntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/blockentity/SkullBlockRenderer"
          ],
          "handler": "extractRenderState",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/SkullBlockRenderer#extractRenderState HEAD"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/SkullBlockEntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/blockentity/SkullBlockRenderer"
          ],
          "handler": "submit",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/SkullBlockRenderer#submit HEAD"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/SkullBlockEntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/blockentity/SkullBlockRenderer"
          ],
          "handler": "submitSkull",
          "kind": "modify-variable",
          "method": "submitSkull",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "dev/tr7zw/skinlayers/mixin/SkullModelMixin",
          "targets": [
            "net/minecraft/client/model/object/skull/SkullModel"
          ],
          "handler": "setupAnim",
          "kind": "inject",
          "method": "setupAnim",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/object/skull/SkullModel#setupAnim HEAD"
        }
      ],
      "listening": 10,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/model/geom/ModelPart#Lnet/minecraft/client/model/geom/ModelPart;render @HEAD": 1,
        "net/minecraft/client/model/object/skull/SkullModel#setupAnim @HEAD": 1,
        "net/minecraft/client/model/player/PlayerModel#setupAnim @TAIL": 1,
        "net/minecraft/client/renderer/blockentity/SkullBlockRenderer#extractRenderState @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/SkullBlockRenderer#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/layers/CustomHeadLayer#resolveSkullRenderType @HEAD": 1,
        "net/minecraft/client/renderer/entity/layers/Deadmau5EarsLayer#<init> @TAIL": 1,
        "net/minecraft/client/renderer/entity/player/AvatarRenderer#renderHand @HEAD": 1,
        "net/minecraft/client/renderer/special/PlayerHeadSpecialRenderer#extractArgument @HEAD": 1,
        "traben/entity_model_features/models/parts/EMFModelPart#render @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/renderer/blockentity/SkullBlockRenderer#submitSkull @STORE (modify-variable)": 1,
        "net/minecraft/client/renderer/entity/player/AvatarRenderer#lambda$new$0 @NEW (wrap-operation)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 76,
        "features": {
          "mixin": 14
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 76,
        "methods": 269,
        "tried": 269,
        "completed": 193,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Ldev/tr7zw/skinlayers/versionless/util/Direction$Axis;#clone()Ljava/lang/Object;": 1,
          "[Ldev/tr7zw/skinlayers/versionless/util/Direction;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/Lists#newArrayList()Ljava/util/ArrayList;": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/mojang/blaze3d/platform/NativeImage#getHeight()I": 1,
          "com/mojang/blaze3d/platform/NativeImage#getWidth()I": 1,
          "dev/tr7zw/skinlayers/versionless/util/Direction#ordinal()I": 1,
          "dev/tr7zw/transition/mc/ItemUtil#getGameProfile(Lnet/minecraft/world/item/ItemStack;)Lcom/mojang/authlib/GameProfile;": 1,
          "dev/tr7zw/transition/mc/PlayerUtil#getPlayerSkin(Lnet/minecraft/world/entity/Avatar;)Lnet/minecraft/resources/Identifier;": 1,
          "java/io/File#exists()Z": 1,
          "java/lang/Double#doubleToRawLongBits(D)J": 1,
          "java/lang/Double#isNaN(D)Z": 1,
          "java/lang/Float#floatToIntBits(F)I": 2,
          "java/lang/StrictMath#log(D)D": 1,
          "java/util/WeakHashMap#clear()V": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/model/geom/ModelPart#getAllParts()Ljava/util/List;": 2,
          "net/minecraft/client/model/geom/PartPose#x()F": 1,
          "net/minecraft/client/model/geom/builders/CubeListBuilder#create()Lnet/minecraft/client/model/geom/builders/CubeListBuilder;": 1,
          "net/minecraft/core/BlockPos#getX()I": 1
        },
        "runs": [
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$UV",
            "method": "u",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$UV",
            "method": "v",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction$Axis$1",
            "method": "choose",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction$Axis$1",
            "method": "choose",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/mixin/PlayerModelMixin",
            "method": "hasThinArms",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$Position",
            "method": "x",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$Position",
            "method": "y",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$Position",
            "method": "z",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "u",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "v",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "mirror",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "x",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "y",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "z",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "width",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "height",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "depth",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "textureWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/BoxBuilder$BoxDefinition",
            "method": "textureHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/SkinUtil",
            "method": "setup3dLayers",
            "desc": "(Lcom/mojang/authlib/GameProfile;Ldev/tr7zw/skinlayers/accessor/SkullSettings;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/SkinUtil",
            "method": "setup3dLayers",
            "desc": "(Lnet/minecraft/resources/Identifier;Ldev/tr7zw/skinlayers/accessor/SkullSettings;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/mixin/ModelPartMixin",
            "method": "isVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/TextureData",
            "method": "getWidth",
            "desc": "()I",
            "value": "64"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/TextureData",
            "method": "getHeight",
            "desc": "()I",
            "value": "64"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Vector3",
            "method": "clone",
            "desc": "()Ldev/tr7zw/skinlayers/versionless/util/Vector3;",
            "value": "obj#62"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Vector3",
            "method": "div",
            "desc": "(F)Ldev/tr7zw/skinlayers/versionless/util/Vector3;",
            "value": "obj#66"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Vector3",
            "method": "mul",
            "desc": "(F)Ldev/tr7zw/skinlayers/versionless/util/Vector3;",
            "value": "obj#67"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Vector3",
            "method": "mul",
            "desc": "(FFF)Ldev/tr7zw/skinlayers/versionless/util/Vector3;",
            "value": "obj#68"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Vector3",
            "method": "normalize",
            "desc": "()Ldev/tr7zw/skinlayers/versionless/util/Vector3;",
            "value": "obj#69"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Vector3",
            "method": "rotateDegrees",
            "desc": "(F)Ldev/tr7zw/skinlayers/versionless/util/Vector3;",
            "value": "obj#71"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Vector3",
            "method": "sqrMagnitude",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Vector3",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#75"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "truncate",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "sqrt",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "floor",
            "desc": "(F)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "fastFloor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "floor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "lfloor",
            "desc": "(D)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "absFloor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "abs",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "abs",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "ceil",
            "desc": "(F)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "ceil",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "clamp",
            "desc": "(BBB)B",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "clamp",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "clamp",
            "desc": "(JJJ)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "clamp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "clamp",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "clampedLerp",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "clampedLerp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "absMax",
            "desc": "(DD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "equal",
            "desc": "(FF)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "equal",
            "desc": "(DD)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "positiveModulo",
            "desc": "(FF)F",
            "value": "NaNf"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "positiveModulo",
            "desc": "(DD)D",
            "value": "NaN"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "wrapDegrees",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "wrapDegrees",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "wrapDegrees",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "degreesDifference",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "degreesDifferenceAbs",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "rotateIfNecessary",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "approach",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "approachDegrees",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "getDouble",
            "desc": "(Ljava/lang/String;D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "getDouble",
            "desc": "(Ljava/lang/String;DD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "smallestEncompassingPowerOfTwo",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "isPowerOfTwo",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "ceillog2",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "log2",
            "desc": "(I)I",
            "value": "-1"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "color",
            "desc": "(FFF)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "color",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "colorMultiply",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "colorMultiply",
            "desc": "(IFFF)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "frac",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "frac",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "getSeed",
            "desc": "(III)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "inverseLerp",
            "desc": "(DDD)D",
            "value": "NaN"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "inverseLerp",
            "desc": "(FFF)F",
            "value": "NaNf"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "hsvToRgb",
            "desc": "(FFF)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "murmurHash3Mixer",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "murmurHash3Mixer",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "binarySearch",
            "desc": "(IILjava/util/function/IntPredicate;)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "lerp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "lerp",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "smoothstep",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "smoothstepDerivative",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "sign",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "rotLerp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "diffuseLight",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "rotlerp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "rotWrap",
            "desc": "(D)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "triangleWave",
            "desc": "(FF)F",
            "value": "NaNf"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "square",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "square",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "square",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "square",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "cube",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "lengthSquared",
            "desc": "(DD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "length",
            "desc": "(DD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "lengthSquared",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "length",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "quantize",
            "desc": "(DI)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "cos",
            "desc": "(F)F",
            "value": "1f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Mth",
            "method": "sin",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction",
            "method": "getStepX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction",
            "method": "getStepY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction",
            "method": "getStepZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction",
            "method": "getDirStep",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$VoxelPosition",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$VoxelPosition",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$VoxelPosition",
            "method": "z",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$Dimensions",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$Dimensions",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/wrapper/SolidPixelWrapper$Dimensions",
            "method": "depth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/Mesh$1",
            "method": "isVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/util/SodiumWorkaround",
            "method": "applySodiumWorkaround",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/SkullRendererCache$ItemSettings",
            "method": "initialized",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/render/CustomModelPart",
            "method": "isVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction$Axis$2",
            "method": "choose",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction$Axis$2",
            "method": "choose",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/render/CustomizableCubeListBuilder",
            "method": "textureSize",
            "desc": "(II)Ldev/tr7zw/skinlayers/versionless/util/wrapper/ModelBuilder;",
            "value": "obj#129"
          },
          {
            "class": "dev/tr7zw/skinlayers/render/CustomizableCubeListBuilder",
            "method": "uv",
            "desc": "(II)Ldev/tr7zw/skinlayers/versionless/util/wrapper/ModelBuilder;",
            "value": "obj#130"
          },
          {
            "class": "dev/tr7zw/skinlayers/render/CustomizableCubeListBuilder",
            "method": "mirror",
            "desc": "(Z)Ldev/tr7zw/skinlayers/versionless/util/wrapper/ModelBuilder;",
            "value": "obj#131"
          },
          {
            "class": "dev/tr7zw/skinlayers/render/CustomizableCubeListBuilder",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction$Axis$3",
            "method": "choose",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/versionless/util/Direction$Axis$3",
            "method": "choose",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/mixin/SkullBlockEntityMixin",
            "method": "initialized",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/Shape",
            "method": "yOffsetMagicValue",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/skinlayers/render/CustomizableModelPart",
            "method": "convertFloatColorToInteger",
            "desc": "(F)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/SkinLayersAPI",
            "method": "getMeshHelper",
            "desc": "()Ldev/tr7zw/skinlayers/api/MeshHelper;",
            "value": "obj#178"
          },
          {
            "class": "dev/tr7zw/skinlayers/api/SkinLayersAPI",
            "method": "getMeshProvider",
            "desc": "()Ldev/tr7zw/skinlayers/api/MeshProvider;",
            "value": "obj#179"
          },
          {
            "class": "dev/tr7zw/skinlayers/mixin/PlayerMixin",
            "method": "hasThinArms",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 3393
      },
      "verdict": "no",
      "summary": "none of its 12 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "immediatelyfast",
      "name": "ImmediatelyFast",
      "version": "1.16.5+26.2",
      "license": "LGPL-3.0-or-later",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [],
      "mixin_configs": [
        "immediatelyfast-common.mixins.json",
        "immediatelyfast-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 45,
      "methods": 179,
      "sites": [
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/avoid_redundant_framebuffer_switching/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/blaze3d/opengl/GlCommandEncoder"
          ],
          "handler": "dontUnbindFramebuffer",
          "kind": "wrap-with-condition",
          "method": "submitRenderPass",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/opengl/GlStateManager;_glBindFramebuffer(II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/avoid_redundant_framebuffer_switching/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/blaze3d/opengl/GlCommandEncoder"
          ],
          "handler": "unbindFramebufferBeforePresenting",
          "kind": "inject",
          "method": "presentTexture",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/opengl/GlCommandEncoder#presentTexture HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/avoid_redundant_framebuffer_switching/MixinGlSurface",
          "targets": [
            "com/mojang/blaze3d/opengl/GlSurface"
          ],
          "handler": "unbindFramebufferBeforeSwappingBuffers",
          "kind": "inject",
          "method": "present",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/opengl/GlSurface#present HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/batch_animated_item_updates/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "prepareAnimatedItemAtlas",
          "kind": "inject",
          "method": "prepareItemElements",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/render/GuiRenderer;prepareItemAtlas(Ljava/util/Set;I)Lnet/minecraft/client/gui/render/GuiItemAtlas;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#prepareItemElements INVOKE"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/batch_animated_item_updates/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "endAnimatedItemAtlasFrame",
          "kind": "inject",
          "method": "endFrame",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#endFrame RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/batch_animated_item_updates/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "invalidateAnimatedItemAtlas",
          "kind": "inject",
          "method": "invalidateItemAtlas",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#invalidateItemAtlas RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/batch_animated_item_updates/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "closeAnimatedItemAtlas",
          "kind": "inject",
          "method": "close",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#close RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/core/MixinDebugScreenEntries",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntries"
          ],
          "handler": "addImmediatelyFastEntry",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/core/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "hookRendererInit",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/systems/RenderSystem;initRenderer(Lcom/mojang/blaze3d/systems/GpuDevice;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init> INVOKE"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/core/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "hookConstructor",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "client_start",
          "why": "the client object is built"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/core/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "hookLevelChange",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_level_load",
          "why": "LevelEvent.Load: a level is set on the client"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/enhanced_batching/MixinRenderTypeFeatureRenderer_Group",
          "targets": [
            "net/minecraft/client/renderer/feature/RenderTypeFeatureRenderer$Group"
          ],
          "handler": "forceReorderability",
          "kind": "modify-variable",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/fast_text_lookup/MixinNameTagFeatureRenderer_GlyphRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/NameTagFeatureRenderer$GlyphRenderer"
          ],
          "handler": "reduceGetVertexBuilderCalls",
          "kind": "redirect",
          "method": "acceptRenderable",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/feature/NameTagFeatureRenderer;getVertexBuilder(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lcom/mojang/blaze3d/vertex/VertexConsumer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/fast_text_lookup/MixinTextFeatureRenderer_GlyphRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/TextFeatureRenderer$GlyphRenderer"
          ],
          "handler": "reduceGetVertexBuilderCalls",
          "kind": "redirect",
          "method": "acceptRenderable",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/feature/TextFeatureRenderer;getVertexBuilder(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lcom/mojang/blaze3d/vertex/VertexConsumer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/fix_slow_buffer_upload_on_apple_gpu/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/blaze3d/opengl/GlCommandEncoder"
          ],
          "handler": "fixSlowBufferUploadOnAppleGpu",
          "kind": "redirect",
          "method": "writeToBuffer",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/opengl/DirectStateAccess;bufferSubData(IJLjava/nio/ByteBuffer;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
          "targets": [
            "net/minecraft/client/gui/font/FontTexture"
          ],
          "handler": "cacheConfigState",
          "kind": "inject",
          "method": "<init>",
          "at": "CTOR_HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/FontTexture#<init> CTOR_HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
          "targets": [
            "net/minecraft/client/gui/font/FontTexture"
          ],
          "handler": "modifyTextureSize",
          "kind": "modify-constant",
          "method": "*",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
          "targets": [
            "net/minecraft/client/gui/font/FontTexture"
          ],
          "handler": "modifyTextureSize",
          "kind": "modify-constant",
          "method": "*",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinGuiGraphicsExtractor",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "modifyTextureCoordinates",
          "kind": "wrap-operation",
          "method": "map",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;innerBlit(Lcom/mojang/blaze3d/pipeline/RenderPipeline;Lcom/mojang/blaze3d/textures/GpuTextureView;Lcom/mojang/blaze3d/textures/GpuSampler;IIIIFFFFI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapRenderer",
          "targets": [
            "net/minecraft/client/renderer/MapRenderer"
          ],
          "handler": "modifyTextureCoordinates",
          "kind": "modify-arg",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitCustomGeometry(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/SubmitNodeCollector$CustomGeometryRenderer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapRenderer",
          "targets": [
            "net/minecraft/client/renderer/MapRenderer"
          ],
          "handler": "setAtlasParameters",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/MapRenderer#extractRenderState RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapTextureManager",
          "targets": [
            "net/minecraft/client/resources/MapTextureManager"
          ],
          "handler": "resetAtlases",
          "kind": "inject",
          "method": "resetData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/MapTextureManager#resetData RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapTextureManager",
          "targets": [
            "net/minecraft/client/resources/MapTextureManager"
          ],
          "handler": "ensureHasAtlasLocation",
          "kind": "inject",
          "method": "getOrCreateMapInstance",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/MapTextureManager#getOrCreateMapInstance HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapTextureManager_MapInstance",
          "targets": [
            "net/minecraft/client/resources/MapTextureManager$MapInstance"
          ],
          "handler": "getAtlasParameters",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/MapTextureManager$MapInstance#<init> RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapTextureManager_MapInstance",
          "targets": [
            "net/minecraft/client/resources/MapTextureManager$MapInstance"
          ],
          "handler": "updateAtlasTexture",
          "kind": "inject",
          "method": "updateTextureIfNeeded",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/DynamicTexture;upload()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/MapTextureManager$MapInstance#updateTextureIfNeeded INVOKE"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/print_additional_error_information/MixinGlDebug",
          "targets": [
            "com/mojang/blaze3d/opengl/GlDebug"
          ],
          "handler": "enableSyncDebug",
          "kind": "modify-variable",
          "method": "enableDebugCallback",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/print_additional_error_information/MixinGlDebug",
          "targets": [
            "com/mojang/blaze3d/opengl/GlDebug"
          ],
          "handler": "appendStackTrace",
          "kind": "redirect",
          "method": "printDebugLog",
          "at": "INVOKE",
          "at_target": "Lorg/slf4j/Logger;info(Ljava/lang/String;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/resource_pack_conflict_handling/MixinShaderManager",
          "targets": [
            "net/minecraft/client/renderer/ShaderManager"
          ],
          "handler": "checkForCoreShaderModifications",
          "kind": "inject",
          "method": "apply",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/ShaderManager#apply RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/sign_text_buffering/MixinAbstractSignRenderer",
          "targets": [
            "net/minecraft/client/renderer/blockentity/AbstractSignRenderer"
          ],
          "handler": "renderBufferedSignText",
          "kind": "inject",
          "method": "submitSignText",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/AbstractSignRenderer#submitSignText HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/sign_text_buffering/MixinSignText",
          "targets": [
            "net/minecraft/world/level/block/entity/SignText"
          ],
          "handler": "checkShouldCache",
          "kind": "inject",
          "method": "getRenderMessages",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SignText#getRenderMessages RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/sign_text_buffering/MixinSignText",
          "targets": [
            "net/minecraft/world/level/block/entity/SignText"
          ],
          "handler": "invalidateCache",
          "kind": "inject",
          "method": "getRenderMessages",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/block/entity/SignText;renderMessages:[Lnet/minecraft/util/FormattedCharSequence;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SignText#getRenderMessages FIELD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/skip_text_translucency_sorting/MixinRenderTypes",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "disableTranslucencySorting",
          "kind": "redirect",
          "method": "lambda$static$22",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;sortOnUpload()Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/skip_text_translucency_sorting/MixinRenderTypes",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "disableTranslucencySorting",
          "kind": "redirect",
          "method": "lambda$static$23",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;sortOnUpload()Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/skip_text_translucency_sorting/MixinRenderTypes",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "disableTranslucencySorting",
          "kind": "redirect",
          "method": "lambda$static$25",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;sortOnUpload()Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        }
      ],
      "listening": 15,
      "accessors": 0,
      "hooks": {
        "client_level_load": 1,
        "client_start": 1
      },
      "wanted": {
        "com/mojang/blaze3d/opengl/GlCommandEncoder#presentTexture @HEAD": 1,
        "com/mojang/blaze3d/opengl/GlSurface#present @HEAD": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> @RETURN": 1,
        "net/minecraft/client/gui/render/GuiRenderer#close @RETURN": 1,
        "net/minecraft/client/gui/render/GuiRenderer#endFrame @RETURN": 1,
        "net/minecraft/client/gui/render/GuiRenderer#invalidateItemAtlas @RETURN": 1,
        "net/minecraft/client/renderer/MapRenderer#extractRenderState @RETURN": 1,
        "net/minecraft/client/renderer/ShaderManager#apply @RETURN": 1,
        "net/minecraft/client/renderer/blockentity/AbstractSignRenderer#submitSignText @HEAD": 1,
        "net/minecraft/client/resources/MapTextureManager#getOrCreateMapInstance @HEAD": 1,
        "net/minecraft/client/resources/MapTextureManager#resetData @RETURN": 1,
        "net/minecraft/client/resources/MapTextureManager$MapInstance#<init> @RETURN": 1,
        "net/minecraft/world/level/block/entity/SignText#getRenderMessages @RETURN": 1
      },
      "wanted_calls": {
        "com/mojang/blaze3d/opengl/DirectStateAccess#bufferSubData @INVOKE (redirect)": 1,
        "com/mojang/blaze3d/opengl/GlDebug#enableDebugCallback @HEAD (modify-variable)": 1,
        "com/mojang/blaze3d/opengl/GlStateManager#_glBindFramebuffer @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/Minecraft#<init> @INVOKE": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#innerBlit @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/font/FontTexture#* @HEAD (modify-constant)": 2,
        "net/minecraft/client/gui/font/FontTexture#<init> @CTOR_HEAD": 1,
        "net/minecraft/client/gui/render/GuiRenderer#prepareItemElements @INVOKE": 1,
        "net/minecraft/client/renderer/SubmitNodeCollector#submitCustomGeometry @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/feature/NameTagFeatureRenderer#getVertexBuilder @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/feature/RenderTypeFeatureRenderer$Group#<init> @HEAD (modify-variable)": 1,
        "net/minecraft/client/renderer/feature/TextFeatureRenderer#getVertexBuilder @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder#sortOnUpload @INVOKE (redirect)": 3,
        "net/minecraft/client/resources/MapTextureManager$MapInstance#updateTextureIfNeeded @INVOKE": 1,
        "net/minecraft/world/level/block/entity/SignText#getRenderMessages @FIELD": 1,
        "org/slf4j/Logger#info @INVOKE (redirect)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 45,
        "features": {
          "renderer": 2,
          "mixin": 23
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 45,
        "methods": 85,
        "tried": 85,
        "completed": 50,
        "handlers_tried": 2,
        "handlers_completed": 1,
        "missing": {
          "com/google/common/cache/Cache#invalidateAll()V": 2,
          "com/mojang/blaze3d/opengl/GlStateManager#_glBindFramebuffer(II)V": 2,
          "com/mojang/blaze3d/systems/RenderSystem#getDevice()Lcom/mojang/blaze3d/systems/GpuDevice;": 1,
          "it/unimi/dsi/fastutil/ints/Int2ObjectMap#values()Lit/unimi/dsi/fastutil/objects/ObjectCollection;": 1,
          "java/util/Arrays#hashCode([Ljava/lang/Object;)I": 1,
          "java/util/ServiceLoader#load(Ljava/lang/Class;)Ljava/util/ServiceLoader;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/resources/Identifier#toDebugFileName()Ljava/lang/String;": 2,
          "net/minecraft/util/Mth#smallestSquareSide(I)I": 1,
          "net/minecraft/world/level/saveddata/maps/MapId#id()I": 1,
          "new it/unimi/dsi/fastutil/objects/ObjectOpenHashSet": 1,
          "org/slf4j/Logger#info(Ljava/lang/String;Ljava/lang/Object;)V": 1
        },
        "runs": [
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getAtlasIdFromLocation",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getAtlasXFromLocation",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getAtlasYFromLocation",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getNextLocation",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getMapCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget",
            "method": "getId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/enhanced_batching/MixinRenderTypeFeatureRenderer_Group",
            "method": "forceReorderability",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/enhanced_batching/MixinScissorState",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/enhanced_batching/MixinScissorState",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastDebugScreenEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/print_additional_error_information/MixinGlDebug",
            "method": "enableSyncDebug",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastRuntimeConfig",
            "method": "getInt",
            "desc": "(Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastRuntimeConfig",
            "method": "getLong",
            "desc": "(Ljava/lang/String;J)J",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/batch_animated_item_updates/AnimatedItemAtlas",
            "method": "getLastUsedSlotCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget$Slot",
            "method": "findSlot",
            "desc": "(II)Lnet/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget$Slot;",
            "value": "obj#58"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget$Slot",
            "method": "hasOccupiedSlot",
            "desc": "(Lnet/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget$Slot;)Z",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
            "method": "modifyTextureSize",
            "desc": "(I)I",
            "value": "256"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
            "method": "modifyTextureSize",
            "desc": "(F)F",
            "value": "256f"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/sign_text_buffering/MixinSignText",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastConfig",
            "method": "getBoolean",
            "desc": "(Ljava/lang/String;Z)Z",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastConfig",
            "method": "getInt",
            "desc": "(Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastConfig",
            "method": "getLong",
            "desc": "(Ljava/lang/String;J)J",
            "value": "0"
          }
        ],
        "insns": 550
      },
      "verdict": "no",
      "summary": "only 2 of 15 listening patch sites have a hook (13%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "advancementplaques",
      "name": "Advancement Plaques",
      "version": "1.7.3",
      "license": "CC BY-NC-ND 4.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/anthonyhilyard/advancementplaques/fabric/client/AdvancementPlaquesFabricClient"
        },
        {
          "kind": "main",
          "value": "com/anthonyhilyard/advancementplaques/fabric/AdvancementPlaquesFabric"
        }
      ],
      "mixin_configs": [],
      "depends": [
        "iceberg"
      ],
      "classes": 15,
      "methods": 51,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents$ClientStarted",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 15,
        "features": {
          "screen": 1,
          "events": 1
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 15,
        "methods": 30,
        "tried": 30,
        "completed": 4,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/anthonyhilyard/advancementplaques/config/AdvancementPlaquesConfig#configInstances": 7,
          "com/anthonyhilyard/prism/util/ConfigHelper#parseColor(Ljava/lang/Object;)Lcom/anthonyhilyard/prism/util/IColor;": 1,
          "com/natamus/advancementscreenshot_common_fabric/util/Util#takeScreenshot(Lnet/minecraft/network/chat/Component;)V": 1,
          "java/util/concurrent/locks/ReentrantLock#lock()V": 4,
          "mcp/mobius/waila/WailaClient#CONFIG": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientLifecycleEvents#CLIENT_STARTED": 1,
          "net/minecraft/advancements/AdvancementHolder#id()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/network/chat/TextColor#getValue()I": 1,
          "net/minecraft/util/Mth#clamp(FFF)F": 1,
          "net/minecraft/util/Util#getMillis()J": 1,
          "snownee/jade/Jade#config()Lsnownee/jade/impl/config/WailaConfig;": 2
        },
        "runs": [
          {
            "class": "com/anthonyhilyard/advancementplaques/ui/render/AdvancementPlaque",
            "method": "width",
            "desc": "()I",
            "value": "256"
          },
          {
            "class": "com/anthonyhilyard/advancementplaques/ui/render/AdvancementPlaque",
            "method": "height",
            "desc": "()I",
            "value": "32"
          },
          {
            "class": "architectury_inject_AdvancementPlaques_common_fdc2f51ef19c4510bf50d8e27e0b2281_ca15af41b41028499298310cfc055e196f01ffc763b9c172f2ab9499354dbe01AdvancementPlaques263common173jar/PlatformMethods",
            "method": "getCurrentTarget",
            "desc": "()Ljava/lang/String;",
            "value": "\"fabric\""
          }
        ],
        "insns": 108
      },
      "verdict": "works",
      "summary": "no patch sites: its content is carried over as a content mod"
    },
    {
      "mod_id": "alternate-current",
      "name": "Alternate Current",
      "version": "1.9.0",
      "license": "MIT Licence",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "alternate/current/AlternateCurrentMod"
        }
      ],
      "mixin_configs": [
        "alternate-current.mixins.json"
      ],
      "depends": [],
      "classes": 31,
      "methods": 197,
      "sites": [
        {
          "mixin": "alternate/current/mixin/CommandsMixin",
          "targets": [
            "net/minecraft/commands/Commands"
          ],
          "handler": "alternate_current$registerCommands",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/brigadier/CommandDispatcher;setConsumer(Lcom/mojang/brigadier/ResultConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/commands/Commands#<init> INVOKE"
        },
        {
          "mixin": "alternate/current/mixin/ExperimentalRedstoneUtilsMixin",
          "targets": [
            "net/minecraft/world/level/redstone/ExperimentalRedstoneUtils"
          ],
          "handler": "noRandomOrientation",
          "kind": "inject",
          "method": "initialOrientation",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/redstone/ExperimentalRedstoneUtils#initialOrientation RETURN"
        },
        {
          "mixin": "alternate/current/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "alternate_current$save",
          "kind": "inject",
          "method": "saveAllChunks",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#saveAllChunks HEAD"
        },
        {
          "mixin": "alternate/current/mixin/RedstoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedstoneWireBlock"
          ],
          "handler": "alternate_current$onUpdate",
          "kind": "inject",
          "method": "updatePowerStrength",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RedstoneWireBlock#updatePowerStrength HEAD"
        },
        {
          "mixin": "alternate/current/mixin/RedstoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedstoneWireBlock"
          ],
          "handler": "alternate_current$onPlace",
          "kind": "inject",
          "method": "onPlace",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/RedstoneWireBlock;updatePowerStrength(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/redstone/Orientation;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RedstoneWireBlock#onPlace INVOKE"
        },
        {
          "mixin": "alternate/current/mixin/RedstoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedstoneWireBlock"
          ],
          "handler": "alternate_current$onRemove",
          "kind": "inject",
          "method": "affectNeighborsAfterRemoval",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/RedstoneWireBlock;updatePowerStrength(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/redstone/Orientation;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RedstoneWireBlock#affectNeighborsAfterRemoval INVOKE"
        },
        {
          "mixin": "alternate/current/mixin/RedstoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedstoneWireBlock"
          ],
          "handler": "alternate_current$onNeighborChanged",
          "kind": "inject",
          "method": "neighborChanged",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RedstoneWireBlock#neighborChanged HEAD"
        },
        {
          "mixin": "alternate/current/mixin/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "alternate_current$parseConfig",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#<init> TAIL"
        }
      ],
      "listening": 5,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/server/MinecraftServer#saveAllChunks @HEAD": 1,
        "net/minecraft/server/level/ServerLevel#<init> @TAIL": 1,
        "net/minecraft/world/level/block/RedstoneWireBlock#neighborChanged @HEAD": 1,
        "net/minecraft/world/level/block/RedstoneWireBlock#updatePowerStrength @HEAD": 1,
        "net/minecraft/world/level/redstone/ExperimentalRedstoneUtils#initialOrientation @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/commands/Commands#<init> @INVOKE": 1,
        "net/minecraft/world/level/block/RedstoneWireBlock#affectNeighborsAfterRemoval @INVOKE": 1,
        "net/minecraft/world/level/block/RedstoneWireBlock#onPlace @INVOKE": 1
      },
      "api": [
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 31,
        "features": {
          "command": 1,
          "mixin": 5
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 31,
        "methods": 126,
        "tried": 126,
        "completed": 40,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lalternate/current/wire/UpdateOrder;#clone()Ljava/lang/Object;": 1,
          "alternate/current/wire/UpdateOrder#name()Ljava/lang/String;": 1,
          "com/mojang/brigadier/arguments/StringArgumentType#getString(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/util/Arrays#fill([Ljava/lang/Object;Ljava/lang/Object;)V": 2,
          "java/util/Locale#ENGLISH": 1,
          "java/util/Queue#isEmpty()Z": 3,
          "java/util/Queue#iterator()Ljava/util/Iterator;": 2,
          "java/util/Queue#offer(Ljava/lang/Object;)Z": 1,
          "net/minecraft/commands/CommandSourceStack#getLevel()Lnet/minecraft/server/level/ServerLevel;": 2,
          "net/minecraft/core/BlockPos#asLong()J": 6,
          "net/minecraft/core/BlockPos#getY()I": 1,
          "net/minecraft/core/BlockPos#hashCode()I": 1,
          "net/minecraft/server/level/ServerLevel#dimension()Lnet/minecraft/resources/ResourceKey;": 1,
          "net/minecraft/util/Mth#clamp(III)I": 1,
          "net/minecraft/world/level/block/Blocks#REDSTONE_WIRE": 1
        },
        "runs": [
          {
            "class": "alternate/current/AlternateCurrentMod",
            "method": "createProfiler",
            "desc": "()Lalternate/current/util/profiler/Profiler;",
            "value": "obj#51"
          },
          {
            "class": "alternate/current/wire/WireHandler$Directions",
            "method": "iOpposite",
            "desc": "(I)I",
            "value": "2"
          },
          {
            "class": "alternate/current/wire/SimpleQueue$SimpleIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "alternate/current/wire/WireNode",
            "method": "isWire",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "alternate/current/wire/WireNode",
            "method": "asWire",
            "desc": "()Lalternate/current/wire/WireNode;",
            "value": "obj#65"
          },
          {
            "class": "alternate/current/wire/WireNode",
            "method": "offerPower",
            "desc": "(II)Z",
            "value": "0"
          },
          {
            "class": "alternate/current/wire/Config$Primary",
            "method": "getEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "alternate/current/wire/SimpleQueue",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#78"
          },
          {
            "class": "alternate/current/wire/SimpleQueue",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "alternate/current/wire/Node",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "alternate/current/wire/Node",
            "method": "isWire",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "alternate/current/wire/Node",
            "method": "isConductor",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "alternate/current/wire/Node",
            "method": "isSignalSource",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "alternate/current/wire/PriorityQueue",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "alternate/current/wire/PriorityQueue",
            "method": "contains",
            "desc": "(Lalternate/current/wire/Node;)Z",
            "value": "1"
          }
        ],
        "insns": 1990
      },
      "verdict": "no",
      "summary": "none of its 8 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "appleskin",
      "name": "AppleSkin",
      "version": "3.0.10+mc26.3",
      "license": "Unlicense",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "squeek/appleskin/AppleSkin"
        },
        {
          "kind": "main",
          "value": "squeek/appleskin/AppleSkinCommon"
        },
        {
          "kind": "modmenu",
          "value": "squeek/appleskin/gui/ModMenuIntegration"
        },
        {
          "kind": "rei_client",
          "value": "squeek/appleskin/client/REITooltipPlugin"
        }
      ],
      "mixin_configs": [
        "appleskin.mixins.json",
        "appleskin.jei.mixins.json"
      ],
      "depends": [],
      "classes": 98,
      "methods": 589,
      "sites": [
        {
          "mixin": "squeek/appleskin/mixin/ClientTooltipComponentMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent"
          ],
          "handler": "AppleSkin_of",
          "kind": "inject",
          "method": "create",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent#create HEAD"
        },
        {
          "mixin": "squeek/appleskin/mixin/ClientTooltipComponentMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent"
          ],
          "handler": "AppleSkin_ofData",
          "kind": "inject",
          "method": "create",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent#create HEAD"
        },
        {
          "mixin": "squeek/appleskin/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "renderFoodPre",
          "kind": "inject",
          "method": "extractFood",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "squeek/appleskin/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "renderFoodPost",
          "kind": "inject",
          "method": "extractFood",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "squeek/appleskin/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "renderHealthPost",
          "kind": "inject",
          "method": "extractHearts",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "squeek/appleskin/mixin/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "getTooltipFromItem",
          "kind": "inject",
          "method": "getTooltipLines",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "tooltip",
          "why": "ItemTooltipEvent"
        },
        {
          "mixin": "squeek/appleskin/mixin/JEIRenderHelperMixin",
          "targets": [
            "mezz/jei/fabric/platform/RenderHelper"
          ],
          "handler": "renderFoodPre",
          "kind": "inject",
          "method": "renderTooltip",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at mezz/jei/fabric/platform/RenderHelper#renderTooltip HEAD"
        },
        {
          "mixin": "squeek/appleskin/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "squeek/appleskin/mixin/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "onPlayerConnect",
          "kind": "inject",
          "method": "placeNewPlayer",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "player_logged_in",
          "why": "PlayerEvent.PlayerLoggedInEvent"
        },
        {
          "mixin": "squeek/appleskin/mixin/ServerPlayerMixin",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "onUpdate",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerPlayer#tick HEAD"
        }
      ],
      "listening": 10,
      "accessors": 0,
      "hooks": {
        "hud": 3,
        "player_logged_in": 1,
        "tick": 1,
        "tooltip": 1
      },
      "wanted": {
        "mezz/jei/fabric/platform/RenderHelper#renderTooltip @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent#create @HEAD": 2,
        "net/minecraft/server/level/ServerPlayer#tick @HEAD": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EventFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerTickEvents",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "ServerTickEvents$EndLevelTick",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        }
      ],
      "code": {
        "classes": 98,
        "features": {
          "network": 3,
          "events": 2,
          "mixin": 8
        },
        "events": [
          "Event",
          "EventFactory"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 98,
        "methods": 391,
        "tried": 391,
        "completed": 200,
        "handlers_tried": 6,
        "handlers_completed": 3,
        "missing": {
          "[Lsqueek/appleskin/client/TooltipOverlayHandler$FoodOutline;#clone()Ljava/lang/Object;": 1,
          "[Lsqueek/appleskin/helpers/TextureHelper$FoodType;#clone()Ljava/lang/Object;": 1,
          "[Lsqueek/appleskin/helpers/TextureHelper$HeartType;#clone()Ljava/lang/Object;": 1,
          "com/mrcrayfish/configured/api/ActionResult#success()Lcom/mrcrayfish/configured/api/ActionResult;": 1,
          "com/mrcrayfish/configured/api/ConfigType#CLIENT": 1,
          "java/io/Writer#append(Ljava/lang/CharSequence;)Ljava/io/Writer;": 4,
          "java/io/Writer#write(Ljava/lang/String;)V": 4,
          "java/lang/Character#isBmpCodePoint(I)Z": 2,
          "java/lang/Character#isUnicodeIdentifierPart(I)Z": 1,
          "java/lang/Character#isWhitespace(I)Z": 1,
          "java/lang/Character#toChars(I)[C": 1,
          "java/lang/Class#isInterface()Z": 1,
          "java/lang/Exception#getMessage()Ljava/lang/String;": 1,
          "java/lang/Float#isFinite(F)Z": 1,
          "java/lang/Integer#toHexString(I)Ljava/lang/String;": 1,
          "java/lang/String#split(Ljava/lang/String;)[Ljava/lang/String;": 2,
          "java/math/BigDecimal#toString()Ljava/lang/String;": 1,
          "java/math/BigInteger#toString(I)Ljava/lang/String;": 1,
          "java/nio/charset/Charset#forName(Ljava/lang/String;)Ljava/nio/charset/Charset;": 4,
          "java/nio/charset/StandardCharsets#UTF_8": 4,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 1,
          "java/util/Deque#peek()Ljava/lang/Object;": 1,
          "java/util/Deque#push(Ljava/lang/Object;)V": 1,
          "java/util/List#hashCode()I": 2,
          "java/util/List#of()Ljava/util/List;": 1,
          "java/util/ListIterator#add(Ljava/lang/Object;)V": 2,
          "java/util/ListIterator#hasNext()Z": 1,
          "java/util/ListIterator#hasPrevious()Z": 1,
          "java/util/ListIterator#next()Ljava/lang/Object;": 2,
          "java/util/ListIterator#nextIndex()I": 1,
          "java/util/ListIterator#previous()Ljava/lang/Object;": 2,
          "java/util/ListIterator#previousIndex()I": 1,
          "java/util/ListIterator#remove()V": 1,
          "java/util/ListIterator#set(Ljava/lang/Object;)V": 2,
          "java/util/Locale#ROOT": 2,
          "me/shedaniel/rei/api/common/entry/type/VanillaEntryTypes#ITEM": 1,
          "net/fabricmc/fabric/api/networking/v1/PayloadTypeRegistry#clientboundPlay()Lnet/fabricmc/fabric/api/networking/v1/PayloadTypeRegistry;": 2,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/core/component/DataComponents#FOOD": 3,
          "net/minecraft/network/FriendlyByteBuf#writeBoolean(Z)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/network/FriendlyByteBuf#writeFloat(F)Lnet/minecraft/network/FriendlyByteBuf;": 2,
          "net/minecraft/network/chat/Style#EMPTY": 3,
          "net/minecraft/network/chat/contents/PlainTextContents#EMPTY": 2,
          "net/minecraft/server/level/ServerLevel#getGameRules()Lnet/minecraft/world/level/gamerules/GameRules;": 1,
          "net/minecraft/server/level/ServerPlayer#getUUID()Ljava/util/UUID;": 5,
          "net/minecraft/util/Mth#floor(D)I": 1,
          "net/minecraft/world/entity/player/Player#getFoodData()Lnet/minecraft/world/food/FoodData;": 2,
          "net/minecraft/world/entity/player/Player#getMainHandItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/player/Player#getMaxHealth()F": 1,
          "net/minecraft/world/entity/player/Player#isHurt()Z": 1,
          "net/minecraft/world/food/FoodProperties#canAlwaysEat()Z": 1,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 1,
          "net/minecraft/world/item/component/Consumable#onConsumeEffects()Ljava/util/List;": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#getReturnValue()Ljava/lang/Object;": 1,
          "squeek/appleskin/client/TooltipOverlayHandler$FoodOutline#ordinal()I": 1,
          "squeek/appleskin/helpers/TextureHelper$FoodType#ordinal()I": 1,
          "squeek/appleskin/helpers/TextureHelper$HeartType#ordinal()I": 1
        },
        "runs": [
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/StringParserContext",
            "method": "consume",
            "desc": "(ILsqueek/appleskin/shadowed/blue/endless/jankson/Jankson;)Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/StringParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/client/TooltipOverlayHandler$EmptyText",
            "method": "getSiblings",
            "desc": "()Ljava/util/List;",
            "value": "obj#10"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$FloatVal",
            "method": "isValid",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/api/SyntaxError",
            "method": "getLineMessage",
            "desc": "()Ljava/lang/String;",
            "value": "\"Started at line 1, column 1; Errored at line 1, column 1\""
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/NumberParserContext",
            "method": "consume",
            "desc": "(ILsqueek/appleskin/shadowed/blue/endless/jankson/Jankson;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/NumberParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/TokenParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/TokenParserContext",
            "method": "getResult",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#41"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/TokenParserContext",
            "method": "getResult",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#43"
          },
          {
            "class": "squeek/appleskin/client/TooltipOverlayHandler$FoodOutline",
            "method": "get",
            "desc": "(III)Lsqueek/appleskin/client/TooltipOverlayHandler$FoodOutline;",
            "value": "obj#46"
          },
          {
            "class": "squeek/appleskin/mixin/FoodDataMixin",
            "method": "getExhaustion",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar",
            "method": "hasComments",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar",
            "method": "shouldOutputWhitespace",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar",
            "method": "builder",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#82"
          },
          {
            "class": "squeek/appleskin/client/HUDOverlayHandler$OffsetsCache",
            "method": "healthBarOffsets",
            "desc": "(ILnet/minecraft/world/entity/player/Player;)Ljava/util/Vector;",
            "value": "obj#92"
          },
          {
            "class": "squeek/appleskin/client/HUDOverlayHandler$OffsetsCache",
            "method": "foodBarOffsets",
            "desc": "(ILnet/minecraft/world/entity/player/Player;)Ljava/util/Vector;",
            "value": "obj#95"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "withComments",
            "desc": "(Z)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#103"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "printWhitespace",
            "desc": "(Z)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#105"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "printCommas",
            "desc": "(Z)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#107"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "printTrailingCommas",
            "desc": "(Z)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#109"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "bareSpecialNumerics",
            "desc": "(Z)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#111"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "bareRootObject",
            "desc": "(Z)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#113"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "printUnquotedKeys",
            "desc": "(Z)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#115"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "build",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonGrammar;",
            "value": "obj#118"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$ConfiguredModConfig",
            "method": "isChanged",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$ConfiguredModConfig",
            "method": "createRootEntry",
            "desc": "()Lcom/mrcrayfish/configured/api/IConfigEntry;",
            "value": "obj#122"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$SimpleValue",
            "method": "isValid",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$SimpleValue",
            "method": "isDefault",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$SimpleValue",
            "method": "isChanged",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$SimpleValue",
            "method": "requiresWorldRestart",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$SimpleValue",
            "method": "requiresGameRestart",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/client/TooltipOverlayHandler$FoodOverlay",
            "method": "shouldRenderHungerBars",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/client/TooltipOverlayHandler$FoodOverlay",
            "method": "getHeight",
            "desc": "(Lnet/minecraft/client/gui/Font;)I",
            "value": "20"
          },
          {
            "class": "squeek/appleskin/client/TooltipOverlayHandler$FoodOverlay",
            "method": "getWidth",
            "desc": "(Lnet/minecraft/client/gui/Font;)I",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/network/NaturalRegenerationSyncPayload",
            "method": "naturalRegeneration",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray$Entry",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray$Entry",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonNull",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonNull",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonNull",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonNull",
            "method": "toJson",
            "desc": "(ZZI)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonNull",
            "method": "clone",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonNull;",
            "value": "obj#173"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonNull",
            "method": "clone",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonElement;",
            "value": "obj#174"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonNull",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#175"
          },
          {
            "class": "squeek/appleskin/network/ExhaustionSyncPayload",
            "method": "getExhaustion",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "squeek/appleskin/network/ExhaustionSyncPayload",
            "method": "exhaustion",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asBoolean",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asByte",
            "desc": "(B)B",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asChar",
            "desc": "(C)C",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asShort",
            "desc": "(S)S",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asInt",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asLong",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asFloat",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asDouble",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "clone",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#220"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "of",
            "desc": "(Ljava/lang/String;)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#221"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "of",
            "desc": "(Ljava/lang/Double;)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#224"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "of",
            "desc": "(Ljava/lang/Long;)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#225"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "of",
            "desc": "(Ljava/lang/Boolean;)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#226"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "clone",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonElement;",
            "value": "obj#228"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#230"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/CommentParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$RootEntry",
            "method": "isRoot",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$RootEntry",
            "method": "isLeaf",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "add",
            "desc": "(Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonElement;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "clone",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonArray;",
            "value": "obj#330"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "add",
            "desc": "(Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonElement;)Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "contains",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "remove",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "toArray",
            "desc": "()[Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonElement;",
            "value": "obj#370"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#377"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "addAll",
            "desc": "(ILjava/util/Collection;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "indexOf",
            "desc": "(Ljava/lang/Object;)I",
            "value": "-1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "lastIndexOf",
            "desc": "(Ljava/lang/Object;)I",
            "value": "-1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "listIterator",
            "desc": "()Ljava/util/ListIterator;",
            "value": "obj#395"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "listIterator",
            "desc": "(I)Ljava/util/ListIterator;",
            "value": "obj#400"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "clone",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonElement;",
            "value": "obj#416"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#423"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "add",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonArray",
            "method": "toArray",
            "desc": "()[Ljava/lang/Object;",
            "value": "obj#448"
          },
          {
            "class": "squeek/appleskin/network/SaturationSyncPayload",
            "method": "getSaturation",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "squeek/appleskin/network/SaturationSyncPayload",
            "method": "saturation",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "squeek/appleskin/client/TooltipOverlayHandler$FoodOverlayTextComponent",
            "method": "getVisualOrderText",
            "desc": "()Lnet/minecraft/util/FormattedCharSequence;",
            "value": "obj#459"
          },
          {
            "class": "squeek/appleskin/client/TooltipOverlayHandler$FoodOverlayTextComponent",
            "method": "getSiblings",
            "desc": "()Ljava/util/List;",
            "value": "obj#10"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/ArrayParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/ArrayParserContext",
            "method": "getResult",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonArray;",
            "value": "obj#547"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/ArrayParserContext",
            "method": "getResult",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#551"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/Jankson$Builder",
            "method": "allowBareRootObject",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/Jankson$Builder;",
            "value": "obj#565"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/Jankson$Builder",
            "method": "build",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/Jankson;",
            "value": "obj#569"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$LeafEntry",
            "method": "isRoot",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/gui/ConfiguredConfigProvider$LeafEntry",
            "method": "isLeaf",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "getDelta",
            "desc": "(Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonObject;)Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonObject;",
            "value": "obj#637"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "getBoolean",
            "desc": "(Ljava/lang/String;Z)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "getByte",
            "desc": "(Ljava/lang/String;B)B",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "getChar",
            "desc": "(Ljava/lang/String;C)C",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "getShort",
            "desc": "(Ljava/lang/String;S)S",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "getInt",
            "desc": "(Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "getLong",
            "desc": "(Ljava/lang/String;J)J",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "getFloat",
            "desc": "(Ljava/lang/String;F)F",
            "value": "0f"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "getDouble",
            "desc": "(Ljava/lang/String;D)D",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "clone",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonObject;",
            "value": "obj#712"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "containsValue",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "entrySet",
            "desc": "()Ljava/util/Set;",
            "value": "obj#733"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "keySet",
            "desc": "()Ljava/util/Set;",
            "value": "obj#744"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "values",
            "desc": "()Ljava/util/Collection;",
            "value": "obj#758"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "clone",
            "desc": "()Lsqueek/appleskin/shadowed/blue/endless/jankson/JsonElement;",
            "value": "obj#764"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#771"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/ElementParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/impl/ObjectParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject$Entry",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "squeek/appleskin/shadowed/blue/endless/jankson/JsonObject$Entry",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 7257
      },
      "verdict": "partly",
      "summary": "6 of 10 listening patch sites land on a Horizon hook (60%); of 10 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "attributefix",
      "name": "AttributeFix",
      "version": "26.3.0.1",
      "license": "LGPL 2.1",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "net/darkhax/attributefix/fabric/AttributeFixFabricClient"
        },
        {
          "kind": "main",
          "value": "net/darkhax/attributefix/fabric/AttributeFixFabric"
        }
      ],
      "mixin_configs": [
        "attributefix.common.mixins.json",
        "attributefix.fabric.mixins.json"
      ],
      "depends": [
        "prickle"
      ],
      "classes": 5,
      "methods": 13,
      "sites": [],
      "listening": 0,
      "accessors": 2,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents$ClientStarted",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarted",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        }
      ],
      "code": {
        "classes": 5,
        "features": {
          "events": 1,
          "mixin": 1
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 5,
        "methods": 3,
        "tried": 3,
        "completed": 1,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientLifecycleEvents#CLIENT_STARTED": 1,
          "net/fabricmc/fabric/api/event/lifecycle/v1/ServerLifecycleEvents#SERVER_STARTED": 1
        },
        "runs": [
          {
            "class": "net/darkhax/attributefix/common/impl/AttributeFixMod",
            "method": "getInstance",
            "desc": "()Lnet/darkhax/attributefix/common/impl/AttributeFixMod;",
            "value": "obj#0"
          }
        ],
        "insns": 22
      },
      "verdict": "no",
      "summary": "no patch sites and no content: nothing to convert"
    },
    {
      "mod_id": "badoptimizations",
      "name": "BadOptimizations",
      "version": "2.4.1",
      "license": "",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "modmenu",
          "value": "me/thosea/badoptimizations/fabric/modmenu/BadOptimizationsModMenu"
        }
      ],
      "mixin_configs": [
        "badoptimizations.mixins.json"
      ],
      "depends": [],
      "classes": 35,
      "methods": 128,
      "sites": [
        {
          "mixin": "me/thosea/badoptimizations/mixin/MixinDebugHud_AddText",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntries"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> RETURN"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/MixinParticleManager",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "extract",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#extract HEAD"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/debug/MixinDebugRenderer",
          "targets": [
            "net/minecraft/client/renderer/debug/DebugRenderer"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "emitGizmos",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/debug/DebugRenderer#emitGizmos HEAD"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/renderer/blockentity/MixinBlockEntityRenderDispatcher",
          "targets": [
            "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher"
          ],
          "handler": "afterReload",
          "kind": "inject",
          "method": "onResourceManagerReload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#onResourceManagerReload RETURN"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/renderer/entity/MixinEntity",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "afterInit",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#<init> TAIL"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/renderer/entity/MixinEntityRendererDispatcher",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "getRenderer",
          "kind": "overwrite",
          "method": "getRenderer",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/renderer/entity/MixinEntityRendererDispatcher",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "afterReload",
          "kind": "inject",
          "method": "onResourceManagerReload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#onResourceManagerReload RETURN"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/tick/MixinCamera",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "getPlayerFov",
          "kind": "wrap-operation",
          "method": "tickFov",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/AbstractClientPlayer;getFieldOfViewModifier(ZF)F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/tick/MixinLightmapExtractor",
          "targets": [
            "net/minecraft/client/renderer/LightmapRenderStateExtractor"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LightmapRenderStateExtractor#<init> TAIL"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/tick/MixinLightmapExtractor",
          "targets": [
            "net/minecraft/client/renderer/LightmapRenderStateExtractor"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LightmapRenderStateExtractor#tick HEAD"
        },
        {
          "mixin": "me/thosea/badoptimizations/mixin/tick/MixinTutorial",
          "targets": [
            "net/minecraft/client/tutorial/Tutorial"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/tutorial/Tutorial#tick HEAD"
        }
      ],
      "listening": 9,
      "accessors": 2,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> @RETURN": 1,
        "net/minecraft/client/particle/ParticleEngine#extract @HEAD": 1,
        "net/minecraft/client/renderer/LightmapRenderStateExtractor#<init> @TAIL": 1,
        "net/minecraft/client/renderer/LightmapRenderStateExtractor#tick @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#onResourceManagerReload @RETURN": 1,
        "net/minecraft/client/renderer/debug/DebugRenderer#emitGizmos @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#onResourceManagerReload @RETURN": 1,
        "net/minecraft/client/tutorial/Tutorial#tick @HEAD": 1,
        "net/minecraft/world/entity/Entity#<init> @TAIL": 1
      },
      "wanted_calls": {
        "net/minecraft/client/player/AbstractClientPlayer#getFieldOfViewModifier @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer @OVERWRITE": 1
      },
      "api": [
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvArray",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 35,
        "features": {
          "screen": 1,
          "mixin": 16
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 35,
        "methods": 70,
        "tried": 70,
        "completed": 24,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "java/lang/Boolean#toString(Z)Ljava/lang/String;": 1,
          "java/nio/file/Files#exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/nio/file/Files#newInputStream(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;": 1,
          "java/util/Deque#isEmpty()Z": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 6,
          "net/minecraft/client/Minecraft#isDemo()Z": 1,
          "net/minecraft/client/gui/components/debug/DebugScreenDisplayer#addLine(Ljava/lang/String;)V": 1,
          "net/minecraft/client/renderer/GameRenderer#mainCamera()Lnet/minecraft/client/Camera;": 1,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/world/entity/player/PlayerModelType#WIDE": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#getType()Lnet/minecraft/world/level/block/entity/BlockEntityType;": 1,
          "org/slf4j/Logger#info(Ljava/lang/String;)V": 1,
          "org/slf4j/Logger#info(Ljava/lang/String;Ljava/lang/Object;)V": 1,
          "org/slf4j/Logger#warn(Ljava/lang/String;)V": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfo#cancel()V": 2
        },
        "runs": [
          {
            "class": "me/thosea/badoptimizations/config/ModIncompatibilities",
            "method": "isIncompatible",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "architectury_inject_BadOptimizations_common_eb5c47e6319548229146508c5f408a97_82d4f51f3c5f2750cd7edb6c4678fa4de73b384bfa94cb919207830ccbd38d7cBadOptimizationscommon241devjar/PlatformMethods",
            "method": "getCurrentTarget",
            "desc": "()Ljava/lang/String;",
            "value": "\"fabric\""
          },
          {
            "class": "me/thosea/badoptimizations/config/ModIncompatibilities$IncompatibleMod",
            "method": "builtIn",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/thosea/badoptimizations/mixin/MixinDebugHud_AddText$1",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "me/thosea/badoptimizations/config/ConfigLoadContext",
            "method": "boolOrDefault",
            "desc": "(Ljava/lang/String;Z)Z",
            "value": "0"
          },
          {
            "class": "me/thosea/badoptimizations/config/ConfigLoadContext",
            "method": "intOrDefault",
            "desc": "(Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "me/thosea/badoptimizations/config/ConfigLoadContext",
            "method": "fromExistingFile",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/thosea/badoptimizations/config/ConfigLoadContext",
            "method": "option",
            "desc": "(Ljava/lang/String;Z)Z",
            "value": "0"
          },
          {
            "class": "me/thosea/badoptimizations/config/ConfigLoadContext",
            "method": "option",
            "desc": "(Ljava/lang/String;ZZ)Z",
            "value": "0"
          }
        ],
        "insns": 1151
      },
      "verdict": "no",
      "summary": "none of its 11 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "betteradvancements",
      "name": "Better Advancements",
      "version": "0.6.0.81",
      "license": "\"Don't Be a Jerk\" non-commercial care-free license",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "betteradvancements/fabric/BetterAdvancements"
        },
        {
          "kind": "modmenu",
          "value": "betteradvancements/fabric/config/BetterAdvancementsModMenu"
        }
      ],
      "mixin_configs": [
        "betteradvancements.mixins.json"
      ],
      "depends": [],
      "classes": 40,
      "methods": 208,
      "sites": [
        {
          "mixin": "betteradvancements/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "swapAdvancementsScreen",
          "kind": "modify-variable",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/gui/Gui#setScreen @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Screens",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 40,
        "features": {
          "screen": 2,
          "events": 1,
          "mixin": 1
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 40,
        "methods": 117,
        "tried": 117,
        "completed": 63,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lbetteradvancements/common/util/CriteriaDetail;#clone()Ljava/lang/Object;": 5,
          "com/google/gson/JsonObject#has(Ljava/lang/String;)Z": 1,
          "java/lang/Integer#toHexString(I)Ljava/lang/String;": 1,
          "java/util/Map#copyOf(Ljava/util/Map;)Ljava/util/Map;": 1,
          "java/util/ServiceLoader#load(Ljava/lang/Class;)Ljava/util/ServiceLoader;": 1,
          "net/fabricmc/fabric/api/client/screen/v1/ScreenEvents#AFTER_INIT": 1,
          "net/minecraft/advancements/AdvancementHolder#id()Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraft/advancements/AdvancementNode#advancement()Lnet/minecraft/advancements/Advancement;": 4,
          "net/minecraft/advancements/AdvancementNode#holder()Lnet/minecraft/advancements/AdvancementHolder;": 4,
          "net/minecraft/advancements/AdvancementNode#parent()Lnet/minecraft/advancements/AdvancementNode;": 1,
          "net/minecraft/advancements/AdvancementNode#root()Lnet/minecraft/advancements/AdvancementNode;": 2,
          "net/minecraft/advancements/DisplayInfo#hidden()Z": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/screens/Screen#mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z": 1,
          "net/minecraft/client/gui/screens/advancements/AdvancementTabType#ordinal()I": 3,
          "net/minecraft/client/gui/screens/advancements/AdvancementWidgetType#OBTAINED": 2,
          "net/minecraft/client/input/MouseButtonEvent#button()I": 1,
          "net/minecraft/client/multiplayer/ClientAdvancements#setListener(Lnet/minecraft/client/multiplayer/ClientAdvancements$Listener;)V": 1,
          "net/minecraft/network/chat/Component#getString()Ljava/lang/String;": 1,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1
        },
        "runs": [
          {
            "class": "betteradvancements/common/gui/BetterAdvancementWidget",
            "method": "getY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/gui/BetterAdvancementWidget",
            "method": "getX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/util/CriterionGrid$Column",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/util/CriterionGrid",
            "method": "hasPages",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "betteradvancements/api/fabric/event/AdvancementMovedEvent",
            "method": "getX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/api/fabric/event/AdvancementMovedEvent",
            "method": "getY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/fabric/FabricPlatformHelper",
            "method": "getEventHelper",
            "desc": "()Lbetteradvancements/common/platform/IEventHelper;",
            "value": "obj#35"
          },
          {
            "class": "betteradvancements/fabric/FabricPlatformHelper",
            "method": "getAdvancementVisitor",
            "desc": "()Lbetteradvancements/common/platform/IAdvancementVisitor;",
            "value": "obj#39"
          },
          {
            "class": "betteradvancements/common/util/CriteriaDetail",
            "method": "showObtained",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/util/CriteriaDetail",
            "method": "showUnobtained",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "getCompletedIconColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "getUnCompletedIconColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "getCompletedTitleColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "getUnCompletedTitleColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "drawDirectLines",
            "desc": "()Ljava/lang/Boolean;",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "getCompletedLineColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "getUnCompletedLineColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "hideLines",
            "desc": "()Ljava/lang/Boolean;",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "allowDragging",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "hasCustomIconColor",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "hasCustomTitleColor",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "getIconYMultiplier",
            "desc": "(Lnet/minecraft/client/gui/screens/advancements/AdvancementWidgetType;)I",
            "value": "2"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "defaultIconColor",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "betteradvancements/common/advancements/BetterDisplayInfo",
            "method": "getTitleYMultiplier",
            "desc": "(Lnet/minecraft/client/gui/screens/advancements/AdvancementWidgetType;)I",
            "value": "3"
          },
          {
            "class": "betteradvancements/common/util/ColorHelper",
            "method": "RGB",
            "desc": "(III)I",
            "value": "-16777216"
          },
          {
            "class": "betteradvancements/common/util/ColorHelper",
            "method": "RGBA",
            "desc": "(IIII)I",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/util/ColorHelper",
            "method": "RGB",
            "desc": "(FFF)I",
            "value": "-16777216"
          },
          {
            "class": "betteradvancements/common/util/ColorHelper",
            "method": "RGB",
            "desc": "(FFFF)I",
            "value": "0"
          },
          {
            "class": "betteradvancements/fabric/FabricEventHelper",
            "method": "postAdvancementDrawConnectionsEvent",
            "desc": "(Lnet/minecraft/advancements/AdvancementNode;)Lbetteradvancements/common/api/event/IAdvancementDrawConnectionsEvent;",
            "value": "obj#81"
          },
          {
            "class": "betteradvancements/common/api/IBetterDisplayInfo",
            "method": "getCompletedIconColor",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "betteradvancements/common/api/IBetterDisplayInfo",
            "method": "getUnCompletedIconColor",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "betteradvancements/common/api/IBetterDisplayInfo",
            "method": "getCompletedTitleColor",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "betteradvancements/common/api/IBetterDisplayInfo",
            "method": "getUnCompletedTitleColor",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "betteradvancements/common/api/IBetterDisplayInfo",
            "method": "getCompletedLineColor",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "betteradvancements/common/api/IBetterDisplayInfo",
            "method": "getUnCompletedLineColor",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "betteradvancements/common/api/IBetterDisplayInfo",
            "method": "allowDragging",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "betteradvancements/common/gui/BetterAdvancementsScreen",
            "method": "mouseScrolled",
            "desc": "(DDDD)Z",
            "value": "0"
          }
        ],
        "insns": 1356
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "bettermounthud",
      "name": "Better Mount HUD",
      "version": "1.3.1",
      "license": "GPL-3.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [],
      "mixin_configs": [
        "bettermounthud.mixins.json"
      ],
      "depends": [],
      "classes": 1,
      "methods": 8,
      "sites": [
        {
          "mixin": "me/lortseam/bettermounthud/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "bettermounthud$moveMountHealthUp",
          "kind": "modify-variable",
          "method": "extractVehicleHealth",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "me/lortseam/bettermounthud/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "bettermounthud$alwaysRenderFood",
          "kind": "redirect",
          "method": "extractPlayerHealth",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;getVehicleMaxHearts(Lnet/minecraft/world/entity/LivingEntity;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/lortseam/bettermounthud/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "bettermounthud$moveAirUp",
          "kind": "modify-variable",
          "method": "getAirBubbleYLine",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "me/lortseam/bettermounthud/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "bettermounthud$switchBar",
          "kind": "redirect",
          "method": "nextContextualInfoState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/LocalPlayer;jumpableVehicle()Lnet/minecraft/world/entity/PlayerRideableJumping;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/lortseam/bettermounthud/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "bettermounthud$renderExperienceLevel",
          "kind": "redirect",
          "method": "extractHotbarAndDecorations",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;hasExperience()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/gui/Hud#extractVehicleHealth @STORE (modify-variable)": 1,
        "net/minecraft/client/gui/Hud#getAirBubbleYLine @HEAD (modify-variable)": 1,
        "net/minecraft/client/gui/Hud#getVehicleMaxHearts @INVOKE (redirect)": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#hasExperience @INVOKE (redirect)": 1,
        "net/minecraft/client/player/LocalPlayer#jumpableVehicle @INVOKE (redirect)": 1
      },
      "api": [],
      "code": {
        "classes": 1,
        "features": {
          "mixin": 1
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 1,
        "methods": 2,
        "tried": 2,
        "completed": 2,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {},
        "runs": [
          {
            "class": "me/lortseam/bettermounthud/mixin/HudMixin",
            "method": "getVehicleMaxHearts",
            "desc": "(Lnet/minecraft/world/entity/LivingEntity;)I",
            "value": "0"
          }
        ],
        "insns": 10
      },
      "verdict": "no",
      "summary": "none of its 5 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "betterstats",
      "name": "Better Statistics Screen",
      "version": "5.8.0+neoforge-26.3",
      "license": "All rights reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/thecsdev/betterstats/fabric/BetterStatsFabric"
        },
        {
          "kind": "main",
          "value": "com/thecsdev/betterstats/fabric/BetterStatsFabric"
        },
        {
          "kind": "modmenu",
          "value": "com/thecsdev/betterstats/fabric/client/BetterStatsModmenu"
        },
        {
          "kind": "server",
          "value": "com/thecsdev/betterstats/fabric/BetterStatsFabric"
        }
      ],
      "mixin_configs": [
        "betterstats.mixin.hooks.json"
      ],
      "depends": [
        "tcdcommons"
      ],
      "classes": 111,
      "methods": 777,
      "sites": [],
      "listening": 0,
      "accessors": 1,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DedicatedServerModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 111,
        "features": {
          "command": 1,
          "mixin": 1
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 111,
        "methods": 328,
        "tried": 328,
        "completed": 121,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/thecsdev/betterstats/mcbs/view/statsview/StatsViewBlocks$GroupBy;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/betterstats/mcbs/view/statsview/StatsViewGeneral$DistanceUnit;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/betterstats/mcbs/view/statsview/StatsViewGeneral$GroupBy;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/betterstats/mcbs/view/statsview/StatsViewGeneral$SortBy;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/betterstats/mcbs/view/statsview/StatsViewGeneral$TimeUnit;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/betterstats/mcbs/view/statsview/StatsViewGoals$SortBy;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/betterstats/mcbs/view/statsview/StatsViewItems$GroupBy;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/betterstats/mcbs/view/statsview/StatsViewMobs$GroupBy;#clone()Ljava/lang/Object;": 1,
          "com/mojang/serialization/DynamicOps#getMap(Ljava/lang/Object;)Lcom/mojang/serialization/DataResult;": 2,
          "com/thecsdev/betterstats/api/client/gui/screen/AbstractMcbsGoalEditScreen#add(Lcom/thecsdev/common/scene/Node;)Z": 1,
          "com/thecsdev/betterstats/api/client/gui/screen/AbstractMcbsGoalEditScreen$Interface#getParent()Lcom/thecsdev/common/scene/Node;": 1,
          "com/thecsdev/betterstats/api/client/gui/screen/BetterStatsConfigScreen$PageButton#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 2,
          "com/thecsdev/betterstats/api/client/gui/screen/BetterStatsConfigScreen$RowElement#isHoveredOrFocused()Z": 3,
          "com/thecsdev/betterstats/api/client/gui/screen/BetterStatsScreen#getClient()Lnet/minecraft/client/Minecraft;": 1,
          "com/thecsdev/betterstats/api/client/gui/screen/BetterStatsScreenWrapper#getTargetTScreen()Lcom/thecsdev/commonmc/api/client/gui/screen/TScreen;": 1,
          "com/thecsdev/betterstats/api/mcbs/view/McbsEditorGUI$TabbedDocumentInterface#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 4,
          "com/thecsdev/betterstats/api/mcbs/view/tab/McbsEditorFileTabGUI$FiltersPanel#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 4,
          "com/thecsdev/betterstats/api/mcbs/view/tab/McbsEditorFileTabGUI$StatsPanel#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 4,
          "com/thecsdev/betterstats/client/gui/panel/PersonalHomePanel$ModSummaryPanel#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 1,
          "com/thecsdev/betterstats/client/gui/panel/StatsPageChooser#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 1,
          "com/thecsdev/betterstats/client/gui/panel/StatsSummaryPanel#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 1,
          "com/thecsdev/betterstats/client/gui/widget/BGoalProgressBar#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 2,
          "com/thecsdev/betterstats/mcbs/view/editor/MenubarPanel#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 4,
          "com/thecsdev/betterstats/mcbs/view/editor/MenubarPanel$Button#getLabel()Lcom/thecsdev/commonmc/api/client/gui/label/TLabelElement;": 1,
          "com/thecsdev/betterstats/mcbs/view/editor/MenubarPanel$Button#isHoveredOrFocused()Z": 2,
          "com/thecsdev/betterstats/mcbs/view/editor/TabStripPanel#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 4,
          "com/thecsdev/betterstats/mcbs/view/editor/TabStripPanel$EntryElement#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 2,
          "com/thecsdev/betterstats/mcbs/view/statsview/StatsViewGoals$ListedGoalGui#getBounds()Lcom/thecsdev/common/math/Bounds2i;": 2,
          "com/thecsdev/common/properties/DoubleProperty#getD()D": 1,
          "com/thecsdev/commonmc/TCDCommons#getConfig()Lcom/thecsdev/commonmc/TCDCommonsConfig;": 1,
          "com/thecsdev/commonmc/TCDCommonsConfig#FLAG_DEV_ENV": 1,
          "com/thecsdev/commonmc/api/client/gui/TElement#<init>()V": 2,
          "com/thecsdev/commonmc/api/client/gui/label/TLabelElement#fontProperty()Lcom/thecsdev/common/properties/NotNullProperty;": 1,
          "com/thecsdev/commonmc/api/client/gui/misc/TFillColorElement#<init>(II)V": 2,
          "com/thecsdev/commonmc/api/client/gui/screen/TScreenWrapper#<init>(Lcom/thecsdev/commonmc/api/client/gui/screen/TScreen;)V": 2,
          "com/thecsdev/commonmc/api/client/stats/LocalPlayerStatsProvider#ofCurrentLocalPlayer()Lcom/thecsdev/commonmc/api/client/stats/LocalPlayerStatsProvider;": 1,
          "com/thecsdev/commonmc/api/stats/IStatsProvider#getBlockStatTypes()Ljava/util/List;": 1,
          "com/thecsdev/commonmc/api/stats/IStatsProvider#getEntityStatTypes()Ljava/util/List;": 1,
          "com/thecsdev/commonmc/api/stats/IStatsProvider#getIntValue(Lnet/minecraft/stats/Stat;)I": 1,
          "com/thecsdev/commonmc/api/stats/IStatsProvider#getIntValue(Lnet/minecraft/stats/StatType;Ljava/lang/Object;)I": 1,
          "com/thecsdev/commonmc/api/stats/IStatsProvider#getItemStatTypes()Ljava/util/List;": 1,
          "com/thecsdev/commonmc/resource/TLanguage#gui_fileChooser_quickAccess()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "java/lang/System#identityHashCode(Ljava/lang/Object;)I": 3,
          "java/net/URI#create(Ljava/lang/String;)Ljava/net/URI;": 1,
          "java/nio/file/Files#exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/nio/file/Files#newInputStream(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;": 1,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 2,
          "java/util/concurrent/CompletableFuture#state()Ljava/util/concurrent/Future$State;": 2,
          "java/util/concurrent/ConcurrentHashMap#clear()V": 1,
          "java/util/concurrent/ConcurrentHashMap#values()Ljava/util/Collection;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/core/Registry#getKey(Ljava/lang/Object;)Lnet/minecraft/resources/Identifier;": 4,
          "net/minecraft/core/registries/BuiltInRegistries#STAT_TYPE": 2,
          "net/minecraft/stats/Stat#getType()Lnet/minecraft/stats/StatType;": 2,
          "new com/thecsdev/commonmc/api/client/gui/misc/TTextureElement": 1,
          "new com/thecsdev/commonmc/api/client/gui/panel/TPanelElement$Paintable": 2
        },
        "runs": [
          {
            "class": "com/thecsdev/betterstats/api/mcbs/controller/McbsEditor",
            "method": "hashCode",
            "desc": "()I",
            "value": "2"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/controller/McbsEditor",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/controller/McbsEditor",
            "method": "getEditCount",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/resource/dto/credits/CreditsEntry",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/resource/dto/credits/CreditsEntry",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/controller/tab/McbsEditorFileTab",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/controller/tab/McbsEditorFileTab",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/BetterStatsConfig",
            "method": "canRegisterCommands",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/BetterStatsConfig",
            "method": "getGuiMobsFollowCursor",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/BetterStatsConfig",
            "method": "allowsChatPsaMessages",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/mcbs/view/statsview/StatsViewBlocks$SortBy",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/mcbs/view/statsview/StatsViewBlocks$SortBy",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/resource/dto/BetterStatsRestAPI",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/resource/dto/BetterStatsRestAPI",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/model/McbsStats",
            "method": "getIntValues",
            "desc": "()Ljava/util/concurrent/ConcurrentHashMap;",
            "value": "obj#98"
          },
          {
            "class": "com/thecsdev/betterstats/api/client/gui/screen/BetterStatsConfigScreen",
            "method": "isAllowingInGameHud",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/mcbs/view/statsview/StatsViewItems$SortBy",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/mcbs/view/statsview/StatsViewItems$SortBy",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/client/gui/screen/BetterStatsScreen",
            "method": "isAllowingInGameHud",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/controller/tab/McbsEditorSettingsTab",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/mcbs/view/goal/McbsSivGoalGUI",
            "method": "isEditable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/thecsdev/betterstats/client/gui/panel/PersonalHomePanel$1RankedStat",
            "method": "weight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/client/BetterStatsClient",
            "method": "getLastLoginTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/controller/tab/McbsEditorHomepageTab",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/controller/tab/McbsEditorNullTab",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/model/goal/McbsSivGoal",
            "method": "getFromValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/model/goal/McbsSivGoal",
            "method": "getTargetValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/mcbs/view/statsview/StatsViewMobs$SortBy",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/mcbs/view/statsview/StatsViewMobs$SortBy",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/view/goal/McbsGoalGUI",
            "method": "isEditable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/client/gui/screen/AbstractMcbsGoalEditScreen",
            "method": "isAllowingInGameHud",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/betterstats/api/mcbs/controller/tab/McbsEditorTab",
            "method": "getEditCount",
            "desc": "()J",
            "value": "0"
          }
        ],
        "insns": 2107
      },
      "verdict": "works",
      "summary": "no patch sites: its content is carried over as a content mod"
    },
    {
      "mod_id": "betterf3",
      "name": "BetterF3",
      "version": "20.0.0",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/cominixo/betterf3/BetterF3Fabric"
        },
        {
          "kind": "modmenu",
          "value": "me/cominixo/betterf3/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "betterf3.mixins.json",
        "betterf3.fabric.mixins.json"
      ],
      "depends": [
        "cloth-config"
      ],
      "classes": 208,
      "methods": 1568,
      "sites": [
        {
          "mixin": "me/cominixo/betterf3/mixin/FabricDebugMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "drawText",
          "kind": "inject",
          "method": "extractLines",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractLines HEAD"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/DebugMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "renderBefore",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState HEAD"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/DebugMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "renderAfter",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState TAIL"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/DebugMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "currentlyEnabled",
          "kind": "redirect",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;getCurrentlyEnabled()Ljava/util/Collection;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/DebugMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "isF3Visible",
          "kind": "redirect",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;isOverlayVisible()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/DebugMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "renderFontScaleBefore",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;getCurrentlyEnabled()Ljava/util/Collection;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState INVOKE"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/DebugMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "renderAnimation",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/profiling/ProfilerFiller;push(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState INVOKE"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/DebugScreenEntryListMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntryList"
          ],
          "handler": "onSetOverlayVisible",
          "kind": "inject",
          "method": "setOverlayVisible",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntryList#setOverlayVisible HEAD"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/KeyboardMixin",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "processF3",
          "kind": "inject",
          "method": "handleDebugKeys",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#handleDebugKeys HEAD"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/autof3/DebugOptionMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "addAutomaticDebugOption",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#<init> RETURN"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/autof3/DebugOptionMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "automaticF3",
          "kind": "inject",
          "method": "reset",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#reset RETURN"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/autof3/DebugOptionMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "shouldRenderDebug",
          "kind": "inject",
          "method": "showDebugScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#showDebugScreen HEAD"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/bossbar/BossbarMixin",
          "targets": [
            "net/minecraft/client/gui/components/BossHealthOverlay"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/BossHealthOverlay#extractRenderState HEAD"
        },
        {
          "mixin": "me/cominixo/betterf3/mixin/scoreboard/ScoreboardMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "displayScoreboardSidebar",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        }
      ],
      "listening": 10,
      "accessors": 0,
      "hooks": {
        "hud": 1
      },
      "wanted": {
        "net/minecraft/client/KeyboardHandler#handleDebugKeys @HEAD": 1,
        "net/minecraft/client/gui/components/BossHealthOverlay#extractRenderState @HEAD": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#<init> @RETURN": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractLines @HEAD": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @HEAD": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @TAIL": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#reset @RETURN": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#showDebugScreen @HEAD": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntryList#setOverlayVisible @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @INVOKE": 2,
        "net/minecraft/client/gui/components/debug/DebugScreenEntryList#getCurrentlyEnabled @INVOKE (redirect)": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntryList#isOverlayVisible @INVOKE (redirect)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 208,
        "features": {
          "screen": 4,
          "mixin": 9
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 208,
        "methods": 1151,
        "tried": 600,
        "completed": 117,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lme/cominixo/betterf3/config/ModConfigFile$FileType;#clone()Ljava/lang/Object;": 1,
          "[Lme/cominixo/betterf3/libs/nightconfig/core/ConfigSpec$CorrectionAction;#clone()Ljava/lang/Object;": 1,
          "[Lme/cominixo/betterf3/libs/nightconfig/core/EnumGetMethod;#clone()Ljava/lang/Object;": 1,
          "[Lme/cominixo/betterf3/libs/nightconfig/core/io/NewlineStyle;#clone()Ljava/lang/Object;": 1,
          "[Lme/cominixo/betterf3/utils/FpsEnum;#clone()Ljava/lang/Object;": 1,
          "java/io/File#toPath()Ljava/nio/file/Path;": 6,
          "java/io/Reader#read()I": 2,
          "java/io/Writer#write(I)V": 1,
          "java/io/Writer#write([CII)V": 2,
          "java/lang/Boolean#hashCode(Z)I": 2,
          "java/lang/Class#getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;": 1,
          "java/lang/Comparable#compareTo(Ljava/lang/Object;)I": 4,
          "java/lang/Enum#getDeclaringClass()Ljava/lang/Class;": 8,
          "java/lang/Integer#highestOneBit(I)I": 1,
          "java/lang/String#toCharArray()[C": 2,
          "java/lang/System#arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V": 1,
          "java/lang/System#getProperty(Ljava/lang/String;)Ljava/lang/String;": 2,
          "java/lang/reflect/Array#getLength(Ljava/lang/Object;)I": 1,
          "java/nio/charset/StandardCharsets#UTF_8": 3,
          "java/nio/file/Path#getFileName()Ljava/nio/file/Path;": 3,
          "java/nio/file/Paths#get(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;": 6,
          "java/time/LocalDateTime#now()Ljava/time/LocalDateTime;": 1,
          "java/util/Arrays#copyOfRange([CII)[C": 2,
          "java/util/Collections#emptyMap()Ljava/util/Map;": 2,
          "java/util/Collections#singletonList(Ljava/lang/Object;)Ljava/util/List;": 4,
          "java/util/HashSet#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/Iterator#forEachRemaining(Ljava/util/function/Consumer;)V": 1,
          "java/util/Iterator#remove()V": 2,
          "java/util/Objects#hashCode(Ljava/lang/Object;)I": 1,
          "java/util/Spliterator#characteristics()I": 1,
          "java/util/Spliterator#estimateSize()J": 1,
          "java/util/Spliterator#getExactSizeIfKnown()J": 1,
          "java/util/Spliterator#hasCharacteristics(I)Z": 1,
          "java/util/Spliterator#trySplit()Ljava/util/Spliterator;": 1,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 8,
          "me/cominixo/betterf3/config/gui/modules/ModuleListWidget#clearEntries()V": 2,
          "me/cominixo/betterf3/libs/nightconfig/core/CommentedConfig#configFormat()Lme/cominixo/betterf3/libs/nightconfig/core/ConfigFormat;": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/CommentedConfig#contains(Ljava/util/List;)Z": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/CommentedConfig#containsComment(Ljava/util/List;)Z": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/CommentedConfig#getComment(Ljava/util/List;)Ljava/lang/String;": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/CommentedConfig#getComments()Ljava/util/Map;": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/CommentedConfig#getRaw(Ljava/util/List;)Ljava/lang/Object;": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/CommentedConfig#size()I": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/CommentedConfig#valueMap()Ljava/util/Map;": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/Config#configFormat()Lme/cominixo/betterf3/libs/nightconfig/core/ConfigFormat;": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/Config#contains(Ljava/util/List;)Z": 3,
          "me/cominixo/betterf3/libs/nightconfig/core/Config#getOrElse(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "me/cominixo/betterf3/libs/nightconfig/core/Config#getRaw(Ljava/util/List;)Ljava/lang/Object;": 5,
          "me/cominixo/betterf3/libs/nightconfig/core/Config#size()I": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/Config$Entry#getKey()Ljava/lang/String;": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/InMemoryFormat#createConfig()Lme/cominixo/betterf3/libs/nightconfig/core/Config;": 1,
          "me/cominixo/betterf3/libs/nightconfig/core/conversion/ObjectBinder$BoundConfig#set(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat#createConcurrentConfig()Lme/cominixo/betterf3/libs/nightconfig/core/Config;": 1,
          "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat#createConfig()Lme/cominixo/betterf3/libs/nightconfig/core/Config;": 1,
          "me/cominixo/betterf3/utils/PositionEnum#ordinal()I": 1,
          "net/minecraft/ChatFormatting#GREEN": 1,
          "net/minecraft/client/Minecraft#getCameraEntity()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/client/Minecraft#getFps()I": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/Minecraft#getSoundManager()Lnet/minecraft/client/sounds/SoundManager;": 1,
          "net/minecraft/client/gui/components/ObjectSelectionList#getRowWidth()I": 1,
          "net/minecraft/client/gui/components/ObjectSelectionList#scrollBarX()I": 1,
          "net/minecraft/client/gui/components/ObjectSelectionList$Entry#<init>()V": 1,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 2,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/TextColor#fromLegacyFormat(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/TextColor;": 1,
          "net/minecraft/network/chat/TextColor#getValue()I": 8,
          "net/minecraft/world/level/block/state/properties/Property$Value#property()Lnet/minecraft/world/level/block/state/properties/Property;": 1
        },
        "runs": [
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/NullObject",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"NULL_OBJECT\""
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/NullObject",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/NullObject",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/TransformingIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/TransformingIterator",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/TransformingIterator",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/TransformingIterator",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/file/CommentedFileConfig",
            "method": "checked",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/file/CommentedFileConfig;",
            "value": "obj#84"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/file/CommentedFileConfig",
            "method": "checked",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/CommentedConfig;",
            "value": "obj#96"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/file/CommentedFileConfig",
            "method": "checked",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/Config;",
            "value": "obj#98"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/file/CommentedFileConfig",
            "method": "checked",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/file/FileConfig;",
            "value": "obj#100"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat$3",
            "method": "createParser",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/io/ConfigParser;",
            "value": "obj#165"
          },
          {
            "class": "me/cominixo/betterf3/modules/GraphicsModule",
            "method": "updatesEveryFrame",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/modules/SystemModule",
            "method": "allocationRate",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat",
            "method": "fancyInstance",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/json/JsonFormat;",
            "value": "obj#186"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat",
            "method": "minimalInstance",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/json/JsonFormat;",
            "value": "obj#187"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat",
            "method": "emptyTolerantInstance",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/json/JsonFormat;",
            "value": "obj#188"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat",
            "method": "minimalEmptyTolerantInstance",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/json/JsonFormat;",
            "value": "obj#189"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat",
            "method": "supportsComments",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/FancyJsonWriter",
            "method": "setIndentObjectElementsPredicate",
            "desc": "(Ljava/util/function/Predicate;)Lme/cominixo/betterf3/libs/nightconfig/json/FancyJsonWriter;",
            "value": "obj#252"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/FancyJsonWriter",
            "method": "setIndentArrayElementsPredicate",
            "desc": "(Ljava/util/function/Predicate;)Lme/cominixo/betterf3/libs/nightconfig/json/FancyJsonWriter;",
            "value": "obj#253"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/FancyJsonWriter",
            "method": "setNewlineAfterObjectStart",
            "desc": "(Z)Lme/cominixo/betterf3/libs/nightconfig/json/FancyJsonWriter;",
            "value": "obj#254"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/ObservedIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/ObservedIterator",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/ObservedIterator",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/InMemoryCommentedFormat",
            "method": "defaultInstance",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/InMemoryCommentedFormat;",
            "value": "obj#271"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/InMemoryCommentedFormat",
            "method": "withSupport",
            "desc": "(Ljava/util/function/Predicate;)Lme/cominixo/betterf3/libs/nightconfig/core/InMemoryCommentedFormat;",
            "value": "obj#273"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/InMemoryCommentedFormat",
            "method": "supportsComments",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/InMemoryCommentedFormat",
            "method": "supportsType",
            "desc": "(Ljava/lang/Class;)Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/InMemoryCommentedFormat",
            "method": "isInMemory",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/conversion/ObjectBinder$BoundSearchResult",
            "method": "hasFieldInfos",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/conversion/ObjectBinder$BoundSearchResult",
            "method": "hasSubConfig",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/FakeUnmodifiableCommentedConfig",
            "method": "containsComment",
            "desc": "(Ljava/util/List;)Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/utils/Utils",
            "method": "fpsColor",
            "desc": "(I)Lme/cominixo/betterf3/utils/FpsEnum;",
            "value": "obj#47"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/TransformingSpliterator",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/TransformingSpliterator",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/TransformingSpliterator",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/InMemoryFormat",
            "method": "withSupport",
            "desc": "(Ljava/util/function/Predicate;)Lme/cominixo/betterf3/libs/nightconfig/core/InMemoryFormat;",
            "value": "obj#339"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/InMemoryFormat",
            "method": "supportsComments",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/InMemoryFormat",
            "method": "isInMemory",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/IntDeque",
            "method": "isPowerOfTwo",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/IntDeque",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/IntDeque",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/AbstractCommentedConfig$CommentedEntryWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/modules/BaseModule",
            "method": "needsUpdate",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/modules/BaseModule",
            "method": "updatesEveryFrame",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat$4",
            "method": "createWriter",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/json/MinimalJsonWriter;",
            "value": "obj#554"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat$4",
            "method": "createParser",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/io/ConfigParser;",
            "value": "obj#556"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/json/JsonFormat$4",
            "method": "createWriter",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/io/ConfigWriter;",
            "value": "obj#558"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/EnumGetMethod",
            "method": "isCaseSensitive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/EnumGetMethod",
            "method": "isOrdinalOk",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/conversion/ConversionTable",
            "method": "contains",
            "desc": "(Ljava/lang/Class;)Z",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/conversion/ConversionTable",
            "method": "clone",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/conversion/ConversionTable;",
            "value": "obj#633"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/conversion/ConversionTable",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"ConversionTable: obj#637\""
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/conversion/ConversionTable",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#644"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/file/CheckedCommentedFileConfig",
            "method": "checked",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/file/CommentedFileConfig;",
            "value": "obj#662"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/file/CheckedCommentedFileConfig",
            "method": "checked",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/CommentedConfig;",
            "value": "obj#674"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/file/CheckedCommentedFileConfig",
            "method": "checked",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/Config;",
            "value": "obj#675"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/file/CheckedCommentedFileConfig",
            "method": "checked",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/file/FileConfig;",
            "value": "obj#676"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/UnmodifiableConfigWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/utils/UnmodifiableConfigWrapper",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/conversion/ObjectBinder$BoundConfig",
            "method": "createSubConfig",
            "desc": "()Lme/cominixo/betterf3/libs/nightconfig/core/Config;",
            "value": "obj#714"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/conversion/ObjectBinder$BoundConfig",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/conversion/ObjectBinder$BoundConfig",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"BoundConfig{object=null, dataMap=null}\""
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/io/CharsWrapper$Builder",
            "method": "length",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/io/CharsWrapper$Builder",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "obj#763"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/io/CharsWrapper$Builder",
            "method": "toString",
            "desc": "(I)Ljava/lang/String;",
            "value": "obj#765"
          },
          {
            "class": "me/cominixo/betterf3/libs/nightconfig/core/io/CharsWrapper$Builder",
            "method": "toString",
            "desc": "(II)Ljava/lang/String;",
            "value": "obj#767"
          },
          {
            "class": "me/cominixo/betterf3/modules/EmptyModule",
            "method": "updatesEveryFrame",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 11029
      },
      "verdict": "no",
      "summary": "only 1 of 10 listening patch sites have a hook (10%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "betternether",
      "name": "Better Nether",
      "version": "26.302.1",
      "license": "MIT (CC BY-NC-SA 4.0 for some Assets)",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "org/betterx/betternether/client/BetterNetherClient"
        },
        {
          "kind": "emi_disabled",
          "value": "org/betterx/betternether/integrations/emi/EMIPlugin"
        },
        {
          "kind": "fabric-datagen",
          "value": "org/betterx/datagen/betternether/BetterNetherDatagen"
        },
        {
          "kind": "jei_mod_plugin",
          "value": "org/betterx/betternether/integrations/jei/JeiPlugin"
        },
        {
          "kind": "main",
          "value": "org/betterx/betternether/BetterNether"
        },
        {
          "kind": "wover.block.definitions",
          "value": "org/betterx/datagen/betternether/blocks/NetherBlockDefinitions"
        },
        {
          "kind": "wover.blocks",
          "value": "org/betterx/betternether/registry/NetherClassification"
        }
      ],
      "mixin_configs": [
        "betternether.mixins.common.json",
        "betternether.mixins.client.json"
      ],
      "depends": [
        "bclib",
        "wover",
        "wunderlib"
      ],
      "classes": 612,
      "methods": 3440,
      "sites": [
        {
          "mixin": "org/betterx/betternether/mixin/client/LavaFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/LavaFluid"
          ],
          "handler": "displayTick",
          "kind": "inject",
          "method": "animateTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/material/LavaFluid#animateTick HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/client/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>*",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init>* TAIL"
        },
        {
          "mixin": "org/betterx/betternether/mixin/client/PlayerArmorMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "bn_useThinArmorLayers",
          "kind": "modify-arg",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/entity/ArmorModelSet;bake(Lnet/minecraft/client/renderer/entity/ArmorModelSet;Lnet/minecraft/client/model/geom/EntityModelSet;Ljava/util/function/Function;)Lnet/minecraft/client/renderer/entity/ArmorModelSet;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/betterx/betternether/mixin/client/StandArmorMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/ArmorStandRenderer"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>*",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/ArmorStandRenderer#<init>* RETURN"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/AbstractFurnaceBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity"
          ],
          "handler": "betternether$creditCrystalBurn",
          "kind": "inject",
          "method": "getBurnDuration",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#getBurnDuration RETURN"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/AbstractFurnaceBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity"
          ],
          "handler": "betternether$getTotalCookTime",
          "kind": "inject",
          "method": "getTotalCookTime",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#getTotalCookTime RETURN"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/BlockAgeProcessorMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/BlockAgeProcessor"
          ],
          "handler": "bn_processBlock",
          "kind": "inject",
          "method": "processBlock",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/templatesystem/BlockAgeProcessor#processBlock HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/BlockBehaviourMixin",
          "targets": [
            "net/minecraft/world/level/block/Block"
          ],
          "handler": "bn_getDrops",
          "kind": "inject",
          "method": "dropResources",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/Block#dropResources HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/CopperGolemAiMixin",
          "targets": [
            "net/minecraft/world/entity/animal/golem/CopperGolemAi"
          ],
          "handler": "bn_acceptWoodenChests",
          "kind": "modify-arg",
          "method": "initIdleActivity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/TransportItemsBetweenContainers;<init>(FLjava/util/function/Predicate;Ljava/util/function/Predicate;IILjava/util/Map;Ljava/util/function/Consumer;Ljava/util/function/Predicate;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/CraftingScreenHandlerMixin",
          "targets": [
            "net/minecraft/world/inventory/CraftingMenu"
          ],
          "handler": "canUse",
          "kind": "inject",
          "method": "stillValid",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/CraftingMenu#stillValid HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/DefaultAttributeRegistryMixin",
          "targets": [
            "net/minecraft/world/entity/ai/attributes/DefaultAttributes"
          ],
          "handler": "getAttribute",
          "kind": "inject",
          "method": "getSupplier",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/attributes/DefaultAttributes#getSupplier HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/DefaultAttributeRegistryMixin",
          "targets": [
            "net/minecraft/world/entity/ai/attributes/DefaultAttributes"
          ],
          "handler": "hasDefinition",
          "kind": "inject",
          "method": "hasSupplier",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/attributes/DefaultAttributes#hasSupplier HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/DeltaFeatureMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/DeltaFeature"
          ],
          "handler": "checkBlock",
          "kind": "inject",
          "method": "isClear",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/feature/DeltaFeature#isClear HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/FlatLevelGeneratorPresetsMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/flat/FlatLevelGeneratorPresets$Bootstrap"
          ],
          "handler": "bcl_run",
          "kind": "inject",
          "method": "run",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/flat/FlatLevelGeneratorPresets$Bootstrap#run HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/LightningRodBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/LightningRodBlock"
          ],
          "handler": "bn_onLightningStrike",
          "kind": "inject",
          "method": "onLightningStrike",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/LightningRodBlock#onLightningStrike TAIL"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/LiquidBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/LiquidBlock"
          ],
          "handler": "bn_shouldSpreadLiquid",
          "kind": "inject",
          "method": "shouldSpreadLiquid",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;setBlockAndUpdate(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/LiquidBlock#shouldSpreadLiquid INVOKE"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/MapMixin",
          "targets": [
            "net/minecraft/world/item/MapItem"
          ],
          "handler": "bn_update",
          "kind": "inject",
          "method": "update",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/MapItem#update HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/MappedRegistryMixin",
          "targets": [
            "net/minecraft/core/MappedRegistry"
          ],
          "handler": "bn_debug",
          "kind": "inject",
          "method": "freeze",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/MappedRegistry#freeze HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/MushroomMixin",
          "targets": [
            "net/minecraft/world/level/block/MushroomBlock"
          ],
          "handler": "canStay",
          "kind": "inject",
          "method": "canSurvive",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/MushroomBlock#canSurvive RETURN"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/MushroomMixin",
          "targets": [
            "net/minecraft/world/level/block/MushroomBlock"
          ],
          "handler": "growStructure",
          "kind": "inject",
          "method": "performBonemeal",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/MushroomBlock#performBonemeal HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/NetherWartMixin",
          "targets": [
            "net/minecraft/world/level/block/NetherWartBlock"
          ],
          "handler": "canStay",
          "kind": "inject",
          "method": "mayPlaceOn",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/NetherWartBlock#mayPlaceOn RETURN"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/NetherWartMixin",
          "targets": [
            "net/minecraft/world/level/block/NetherWartBlock"
          ],
          "handler": "bn_randomTick",
          "kind": "inject",
          "method": "randomTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/NetherWartBlock#randomTick HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/PlayerEntityMixin",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "bn_statueRespawn",
          "kind": "inject",
          "method": "findRespawnPositionAndUseSpawnBlock",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerPlayer#findRespawnPositionAndUseSpawnBlock HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/PortalShapeMixin",
          "targets": [
            "net/minecraft/world/level/portal/PortalShape"
          ],
          "handler": "bn_findAnyShape",
          "kind": "inject",
          "method": "findAnyShape",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/portal/PortalShape#findAnyShape RETURN"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/PortalShapeMixin",
          "targets": [
            "net/minecraft/world/level/portal/PortalShape"
          ],
          "handler": "bn_isValid",
          "kind": "inject",
          "method": "isValid",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/portal/PortalShape#isValid HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/PortalShapeMixin",
          "targets": [
            "net/minecraft/world/level/portal/PortalShape"
          ],
          "handler": "bn_isComplete",
          "kind": "inject",
          "method": "isComplete",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/portal/PortalShape#isComplete HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/PortalShapeMixin",
          "targets": [
            "net/minecraft/world/level/portal/PortalShape"
          ],
          "handler": "bn_createPortalBlocks",
          "kind": "inject",
          "method": "createPortalBlocks",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/portal/PortalShape#createPortalBlocks HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/obsidian_breaker/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "wover_test_createAttributes",
          "kind": "wrap-operation",
          "method": "createAttributes",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;createLivingAttributes()Lnet/minecraft/world/entity/ai/attributes/AttributeSupplier$Builder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/obsidian_breaker/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "wover_test_getDestroySpeed",
          "kind": "wrap-operation",
          "method": "getDestroySpeed",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;getDestroySpeed(Lnet/minecraft/world/level/block/state/BlockState;)F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/piglin/PiglinAiMixin",
          "targets": [
            "net/minecraft/world/entity/monster/piglin/PiglinAi"
          ],
          "handler": "bn_isWearingSafeArmor",
          "kind": "inject",
          "method": "isWearingSafeArmor",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/monster/piglin/PiglinAi#isWearingSafeArmor HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/piglin/PiglinBruteMixin",
          "targets": [
            "net/minecraft/world/entity/monster/piglin/PiglinBrute"
          ],
          "handler": "bn_populateDefaultEquipmentSlots",
          "kind": "inject",
          "method": "populateDefaultEquipmentSlots",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/monster/piglin/PiglinBrute#populateDefaultEquipmentSlots HEAD"
        },
        {
          "mixin": "org/betterx/betternether/mixin/common/piglin/PiglinMixin",
          "targets": [
            "net/minecraft/world/entity/monster/piglin/Piglin"
          ],
          "handler": "bn_populateDefaultEquipmentSlots",
          "kind": "inject",
          "method": "populateDefaultEquipmentSlots",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/monster/piglin/Piglin#populateDefaultEquipmentSlots HEAD"
        }
      ],
      "listening": 27,
      "accessors": 4,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/Minecraft#<init>* @TAIL": 1,
        "net/minecraft/client/renderer/entity/ArmorStandRenderer#<init>* @RETURN": 1,
        "net/minecraft/core/MappedRegistry#freeze @HEAD": 1,
        "net/minecraft/server/level/ServerPlayer#findRespawnPositionAndUseSpawnBlock @HEAD": 1,
        "net/minecraft/world/entity/ai/attributes/DefaultAttributes#getSupplier @HEAD": 1,
        "net/minecraft/world/entity/ai/attributes/DefaultAttributes#hasSupplier @HEAD": 1,
        "net/minecraft/world/entity/monster/piglin/Piglin#populateDefaultEquipmentSlots @HEAD": 1,
        "net/minecraft/world/entity/monster/piglin/PiglinAi#isWearingSafeArmor @HEAD": 1,
        "net/minecraft/world/entity/monster/piglin/PiglinBrute#populateDefaultEquipmentSlots @HEAD": 1,
        "net/minecraft/world/inventory/CraftingMenu#stillValid @HEAD": 1,
        "net/minecraft/world/item/MapItem#update @HEAD": 1,
        "net/minecraft/world/level/block/Block#dropResources @HEAD": 1,
        "net/minecraft/world/level/block/LightningRodBlock#onLightningStrike @TAIL": 1,
        "net/minecraft/world/level/block/MushroomBlock#canSurvive @RETURN": 1,
        "net/minecraft/world/level/block/MushroomBlock#performBonemeal @HEAD": 1,
        "net/minecraft/world/level/block/NetherWartBlock#mayPlaceOn @RETURN": 1,
        "net/minecraft/world/level/block/NetherWartBlock#randomTick @HEAD": 1,
        "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#getBurnDuration @RETURN": 1,
        "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#getTotalCookTime @RETURN": 1,
        "net/minecraft/world/level/levelgen/feature/DeltaFeature#isClear @HEAD": 1,
        "net/minecraft/world/level/levelgen/flat/FlatLevelGeneratorPresets$Bootstrap#run @HEAD": 1,
        "net/minecraft/world/level/levelgen/structure/templatesystem/BlockAgeProcessor#processBlock @HEAD": 1,
        "net/minecraft/world/level/material/LavaFluid#animateTick @HEAD": 1,
        "net/minecraft/world/level/portal/PortalShape#createPortalBlocks @HEAD": 1,
        "net/minecraft/world/level/portal/PortalShape#findAnyShape @RETURN": 1,
        "net/minecraft/world/level/portal/PortalShape#isComplete @HEAD": 1,
        "net/minecraft/world/level/portal/PortalShape#isValid @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/renderer/entity/ArmorModelSet#bake @INVOKE (modify-arg)": 1,
        "net/minecraft/world/entity/LivingEntity#createLivingAttributes @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/ai/behavior/TransportItemsBetweenContainers#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/world/item/ItemStack#getDestroySpeed @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/LiquidBlock#shouldSpreadLiquid @INVOKE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "BlockSetTypeBuilder",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "EntityRendererRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricBlockEntityTypeBuilder",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FabricBlockEntityTypeBuilder$Factory",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack$RegistryDependentFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDefaultAttributeRegistry",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "GameRuleBuilder",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "GameRuleBuilder$BooleanRuleBuilder",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLayerRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLayerRegistry$TexturedLayerDefinitionProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry$PendingParticleProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "WoodTypeBuilder",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        }
      ],
      "code": {
        "classes": 612,
        "features": {
          "block-behaviour": 77,
          "block-shape": 7,
          "item-behaviour": 10,
          "block-entity": 4,
          "entity": 16,
          "renderer": 21,
          "worldgen": 7,
          "particle": 3,
          "command": 1,
          "events": 1,
          "mixin": 27
        },
        "events": [
          "Event"
        ],
        "examples": {
          "BNBrewingStand": [
            "affectNeighborsAfterRemoval",
            "getTicker",
            "newBlockEntity",
            "useItemOn"
          ],
          "BNLeaves": [
            "isRandomlyTicking",
            "randomTick",
            "tick"
          ],
          "BNObsidian": [
            "neighborChanged",
            "onLightningUpdate"
          ],
          "BNObsidianBase": [
            "neighborChanged"
          ],
          "BaseBlockCommonSapling": [
            "canGrowTerrain",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BaseBlockMold": [
            "randomTick"
          ],
          "BlockAgave": [
            "canGrowTerrain",
            "canSurvive",
            "entityInside",
            "getAgeProperty",
            "getMaxAge",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockAnchorTreeVine": [
            "getLuminance",
            "getOffsetType"
          ],
          "BlockBNPot": [
            "useItemOn"
          ],
          "BlockBNPot$Metal": [
            "useItemOn"
          ],
          "BlockBNPot$Stone": [
            "useItemOn"
          ],
          "BlockBNPot$Wood": [
            "useItemOn"
          ],
          "BlockBarrelCactus": [
            "canGrowTerrain",
            "canSurvive",
            "entityInside",
            "getAgeProperty",
            "getMaxAge",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockBlackApple": [
            "canGrowTerrain",
            "canSurvive",
            "getAgeProperty",
            "getMaxAge",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockBlackAppleSeed": [
            "canGrowTerrain",
            "canSurvive",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockBlackBush": [
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "BlockBoneMushroom": [
            "canSurvive",
            "randomTick"
          ],
          "BlockBrownLargeMushroom": [
            "getRotationIndex",
            "getStateIfSame",
            "rotOffset"
          ],
          "BlockChestOfDrawers": [
            "getDrops",
            "newBlockEntity",
            "useItemOn"
          ],
          "BlockCincinnasiteForge": [
            "getLuminance",
            "getTicker",
            "newBlockEntity",
            "openContainer"
          ],
          "BlockCommonPlant": [
            "canGrowTerrain",
            "canSurvive",
            "getAgeProperty",
            "getMaxAge",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockCommonSapling": [
            "canGrowTerrain",
            "canSurvive",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockEggPlant": [
            "canGrowTerrain",
            "canSurvive",
            "entityInside",
            "getAgeProperty",
            "getMaxAge",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockEyeBase": [
            "allowsSpawning"
          ],
          "BlockEyeSeed": [
            "canGrowRandomly",
            "canSurvive",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockEyeball": [
            "allowsSpawning",
            "randomTick"
          ],
          "BlockEyeballSmall": [
            "allowsSpawning",
            "canSuffocate",
            "isSimpleFullBlock"
          ],
          "BlockFeatherFern": [
            "canGrowTerrain",
            "canSurvive",
            "getAgeProperty",
            "getMaxAge",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockFireBowl": [
            "getLuminance",
            "stepOn",
            "useItemOn"
          ],
          "BlockFireBowl$Metal": [
            "getLuminance",
            "stepOn",
            "useItemOn"
          ],
          "BlockFireBowl$Stone": [
            "getLuminance",
            "stepOn",
            "useItemOn"
          ],
          "BlockFireBowl$Wood": [
            "getLuminance",
            "stepOn",
            "useItemOn"
          ],
          "BlockGeyser": [
            "canSurvive",
            "stepOn"
          ],
          "BlockGiantMoldSapling": [
            "canGrowRandomly",
            "canSurvive",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockGloomsculkCrystal": [
            "canSurvive"
          ],
          "BlockGloomsculkGeode": [
            "playerDestroy",
            "randomTick"
          ],
          "BlockGloomwispVine": [
            "base",
            "canSurvive",
            "drain",
            "entityInside",
            "head",
            "randomTick",
            "shapeAt",
            "shedExperience",
            "stateAwareOffset",
            "tick",
            "useItemOn"
          ],
          "BlockGrayMold": [
            "canSurvive",
            "randomTick"
          ],
          "BlockHookMushroom": [
            "canSurvive",
            "randomTick"
          ],
          "BlockInkBush": [
            "canGrowTerrain",
            "canSurvive",
            "getAgeProperty",
            "getMaxAge",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockInkBushSeed": [
            "canGrowTerrain",
            "canSurvive",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockJellyfishMushroom": [
            "fallOn",
            "stepOn"
          ],
          "BlockJellyfishMushroomSapling": [
            "canGrowRandomly",
            "canSurvive",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockLucisSpore": [
            "canGrowRandomly",
            "canSurvive",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockLumabusSeed": [
            "canGrowRandomly",
            "canSurvive",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockMagmaFlower": [
            "canGrowTerrain",
            "canSurvive",
            "getAgeProperty",
            "getMaxAge",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockMold": [
            "canSurvive",
            "randomTick"
          ],
          "BlockMoltenGloomsculk": [
            "getCoverFeature",
            "getHostBlock",
            "isValidBonemealTarget",
            "setVegetationFeature"
          ],
          "BlockMossCover": [
            "canSurvive",
            "randomTick"
          ],
          "BlockMushroomFir": [
            "canSurvive",
            "tick"
          ],
          "BlockNetherCactus": [
            "canSurvive",
            "entityInside",
            "randomTick"
          ],
          "BlockNetherFurnace": [
            "getLuminance",
            "getTicker",
            "newBlockEntity",
            "openContainer"
          ],
          "BlockNetherMycelium": [
            "getCoverFeature",
            "getHostBlock",
            "isValidBonemealTarget",
            "setVegetationFeature"
          ],
          "BlockNetherReed": [
            "canSurvive",
            "randomTick"
          ],
          "BlockNetherSakuraLeaves": [
            "getColor",
            "isRandomlyTicking",
            "randomTick",
            "tick"
          ],
          "BlockOrangeMushroom": [
            "canGrowTerrain",
            "canSurvive",
            "getAgeProperty",
            "getMaxAge",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockPottedPlant": [
            "canSurvive",
            "getLuminance",
            "getPlant"
          ],
          "BlockRedMold": [
            "canSurvive",
            "randomTick"
          ],
          "BlockRubeusCone": [
            "canSurvive"
          ],
          "BlockSmallLantern": [
            "canSurvive"
          ],
          "BlockSmallLantern$Metal": [
            "canSurvive"
          ],
          "BlockSmoker": [
            "canSurvive"
          ],
          "BlockSoulLily": [
            "canGrow",
            "canSurvive",
            "getRotationIndex",
            "isAirSides",
            "randomTick",
            "rotOffset"
          ],
          "BlockSoulLilySapling": [
            "canGrowTerrain",
            "canSurvive",
            "grow",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "BlockSoulVein": [
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "setPlacedBy"
          ],
          "BlockStalactite": [
            "canPlace",
            "canSurvive",
            "destroy",
            "setPlacedBy"
          ],
          "BlockStalagnateBowl": [
            "canSurvive"
          ],
          "BlockStatueRespawner": [
            "canSurvive",
            "getHelpMessage",
            "playerWillDestroy",
            "setPlacedBy",
            "useWithoutItem"
          ],
          "BlockTerrain": [
            "getCoverFeature",
            "getHostBlock",
            "isValidBonemealTarget",
            "setVegetationFeature"
          ],
          "BlockWartSeed": [
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "BlockWillowBranch": [
            "getLuminance"
          ],
          "BlockWillowLeaves": [
            "isRandomlyTicking",
            "randomTick",
            "tick"
          ],
          "BlockWillowTorch": [
            "canSurvive"
          ],
          "BlueCryingObsidianBlock": [
            "neighborChanged"
          ],
          "BlueWeepingObsidianBlock": [
            "neighborChanged"
          ],
          "ItemBlackApple": [
            "finishUsingItem"
          ],
          "ItemBowlFood": [
            "finishUsingItem",
            "useOn"
          ],
          "ItemBowlMedicine": [
            "finishUsingItem"
          ],
          "NetherArmor": [
            "setupItemStack"
          ],
          "NetherAxe": [
            "setupItemStack"
          ],
          "NetherHoe": [
            "setupItemStack"
          ],
          "NetherPickaxe": [
            "setupItemStack"
          ],
          "NetherShovel": [
            "setupItemStack"
          ],
          "NetherSpear": [
            "setupItemStack"
          ],
          "NetherSword": [
            "setupItemStack"
          ],
          "RedstoneOreBlock": [
            "litBlockEmission"
          ],
          "VanillaWeepingObsidianBlock": [
            "neighborChanged"
          ]
        }
      },
      "interp": {
        "classes": 612,
        "methods": 2060,
        "tried": 600,
        "completed": 174,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lorg/betterx/betternether/blocks/BNBlockProperties$FoodShape;#clone()Ljava/lang/Object;": 1,
          "[Lorg/betterx/betternether/blocks/BNBlockProperties$WillowBranchShape;#clone()Ljava/lang/Object;": 1,
          "[Lorg/betterx/betternether/blocks/BlockMushroomFir$MushroomFirShape;#clone()Ljava/lang/Object;": 1,
          "[Lorg/betterx/betternether/blocks/WispRotation;#clone()Ljava/lang/Object;": 1,
          "[Lorg/betterx/betternether/registry/NetherEntities$KnownSpawnTypes;#clone()Ljava/lang/Object;": 1,
          "[Lorg/betterx/betternether/world/tree/decay/DecayRepair;#clone()Ljava/lang/Object;": 1,
          "com/mojang/brigadier/context/CommandContext#getSource()Ljava/lang/Object;": 4,
          "de/ambertation/wover/block/api/BlockRegistry#forMod(Lde/ambertation/wover/core/api/ModCore;)Lde/ambertation/wover/block/api/BlockRegistry;": 4,
          "de/ambertation/wover/block/api/FeatureSaplingBlock#isValidBonemealTarget(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/BonemealSource;)Z": 1,
          "de/ambertation/wover/block/api/classify/BlockKey#block()Lnet/minecraft/world/level/block/Block;": 2,
          "de/ambertation/wover/block/api/classify/BlockKey#defineAs(Lde/ambertation/wover/item/api/classify/DefinitionContext;Lde/ambertation/wover/block/api/classify/Kind;Lde/ambertation/wover/block/api/classify/MaterialInstance;)Lde/ambertation/wover/block/api/BlockDefinition;": 1,
          "de/ambertation/wover/block/api/classify/Classifications#of(Lnet/minecraft/world/level/block/Block;)Ljava/util/Optional;": 1,
          "de/ambertation/wover/block/api/classify/MaterialValues#SOUND": 1,
          "de/ambertation/wover/block/api/classify/Plant#SAPLING": 1,
          "de/ambertation/wover/block/api/classify/ResolveContext#input(Lde/ambertation/wover/block/api/classify/InputKey;)Ljava/lang/Object;": 1,
          "de/ambertation/wover/block/api/classify/Structural#BARK": 2,
          "de/ambertation/wover/block/api/classify/Structural#CUBE": 6,
          "de/ambertation/wover/block/api/classify/Structural#PILLAR": 5,
          "de/ambertation/wover/block/api/classify/Structural#SLAB": 1,
          "de/ambertation/wover/block/api/classify/Survival#survivesOn(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/state/BlockState;)Z": 1,
          "de/ambertation/wover/block/impl/classify/TagsTrait#builder()Lde/ambertation/wover/block/impl/classify/TagsTrait$Builder;": 1,
          "de/ambertation/wover/complex/api/equipment/ArmorSlot#HELMET_SLOT": 1,
          "de/ambertation/wover/complex/api/equipment/ToolSlot#PICKAXE_SLOT": 1,
          "de/ambertation/wover/config/api/Configs#saveConfigs()V": 1,
          "de/ambertation/wover/core/api/ModCore#isLoaded()Z": 1,
          "de/ambertation/wover/core/api/template/Template0#from()Lde/ambertation/wover/core/api/template/TemplateCall;": 30,
          "de/ambertation/wover/core/api/template/Template1#from(Ljava/lang/Object;)Lde/ambertation/wover/core/api/template/TemplateCall;": 2,
          "de/ambertation/wover/datagen/api/provider/WoverModelProvider$ModelOverides#create()Lde/ambertation/wover/datagen/api/provider/WoverModelProvider$ModelOverides;": 1,
          "de/ambertation/wover/enchantment/api/EnchantmentKey#key()Lnet/minecraft/resources/ResourceKey;": 3,
          "de/ambertation/wover/feature/api/WriteZone#of(Lnet/minecraft/world/level/LevelAccessor;)Lde/ambertation/wover/feature/api/WriteZone;": 1,
          "de/ambertation/wover/feature/api/configured/FeatureKey#bootstrap(Lnet/minecraft/data/worldgen/BootstrapContext;)Lde/ambertation/wover/feature/api/configured/configurators/FeatureConfigurator;": 1,
          "de/ambertation/wover/feature/api/placed/BoundPlacedFeatureKey#place(Lnet/minecraft/data/worldgen/BootstrapContext;)Lde/ambertation/wover/feature/api/placed/FeaturePlacementBuilder;": 1,
          "de/ambertation/wover/item/api/ItemRegistry#forMod(Lde/ambertation/wover/core/api/ModCore;)Lde/ambertation/wover/item/api/ItemRegistry;": 2,
          "de/ambertation/wover/item/api/classify/Vehicle#BOAT": 1,
          "de/ambertation/wover/loot/api/LootLookupProvider#blockLookup()Lnet/minecraft/core/HolderLookup$RegistryLookup;": 3,
          "de/ambertation/wover/sets/api/classify/BlockSet#key(Lde/ambertation/wover/block/api/classify/Kind;)Lde/ambertation/wover/sets/api/classify/SetKey;": 1,
          "de/ambertation/wover/sets/api/classify/BlockSet#key(Lde/ambertation/wover/block/api/classify/Kind;Lde/ambertation/wover/block/api/classify/Finish;)Lde/ambertation/wover/sets/api/classify/SetKey;": 1,
          "de/ambertation/wover/sets/api/classify/BlockSet#register(Lde/ambertation/wover/item/api/classify/DefinitionContext;)Lde/ambertation/wover/sets/api/classify/BlockSet;": 1,
          "de/ambertation/wover/structure/api/StructureKey$Simple#type()Lnet/minecraft/world/level/levelgen/structure/StructureType;": 2,
          "de/ambertation/wover/surface/api/conditions/SurfaceRulesContext#getBlockX()I": 1,
          "de/ambertation/wover/surface/impl/BaseSurfaceRuleBuilder#STEEP_SURFACE_PRIORITY": 4,
          "de/ambertation/wover/tag/api/TagManager#BLOCKS": 1,
          "de/ambertation/wover/tag/api/predefined/CommonBlockTags#NETHERRACK": 1,
          "de/ambertation/wover/tag/api/predefined/CommonBlockTags#NETHER_MYCELIUM": 1,
          "de/ambertation/wover/tag/api/predefined/CommonBlockTags#NETHER_STONES": 4,
          "de/ambertation/wover/tag/api/predefined/CommonBlockTags#SCULK_LIKE": 1,
          "de/ambertation/wover/tag/api/predefined/CommonBlockTags#SOUL_GROUND": 2,
          "de/ambertation/wunderlib/ui/vanilla/ConfigScreen#onClose()V": 1,
          "java/util/List#copyOf(Ljava/util/Collection;)Ljava/util/List;": 1,
          "java/util/List#of()Ljava/util/List;": 1,
          "java/util/List#of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/command/v2/CommandRegistrationCallback#EVENT": 1,
          "net/minecraft/advancements/predicates/ItemPredicate$Builder#item()Lnet/minecraft/advancements/predicates/ItemPredicate$Builder;": 1,
          "net/minecraft/advancements/triggers/PlayerTrigger#trigger(Lnet/minecraft/server/level/ServerPlayer;)V": 1,
          "net/minecraft/client/data/models/model/TextureMapping#getItemTexture(Lnet/minecraft/world/item/Item;)Lnet/minecraft/client/resources/model/sprite/Material;": 1,
          "net/minecraft/client/model/EntityModel#setupAnim(Ljava/lang/Object;)V": 4,
          "net/minecraft/client/model/geom/ModelPart#storePose()Lnet/minecraft/client/model/geom/PartPose;": 1,
          "net/minecraft/client/renderer/entity/MobRenderer#extractRenderState(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;F)V": 9,
          "net/minecraft/client/renderer/entity/MobRenderer#getBlockLightLevel(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/BlockPos;)I": 2,
          "net/minecraft/client/renderer/entity/state/LivingEntityRenderState#<init>()V": 8,
          "net/minecraft/core/BlockPos#above()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/BlockPos#below()Lnet/minecraft/core/BlockPos;": 9,
          "net/minecraft/core/BlockPos#below(I)Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/BlockPos#getX()I": 4,
          "net/minecraft/core/BlockPos#north()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/Direction#UP": 1,
          "net/minecraft/core/Direction#getOpposite()Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/core/NonNullList#clear()V": 1,
          "net/minecraft/core/NonNullList#get(I)Ljava/lang/Object;": 3,
          "net/minecraft/core/NonNullList#iterator()Ljava/util/Iterator;": 1,
          "net/minecraft/core/NonNullList#size()I": 3,
          "net/minecraft/core/Vec3i#getX()I": 2,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/server/level/ServerPlayer#getRespawnConfig()Lnet/minecraft/server/level/ServerPlayer$RespawnConfig;": 1,
          "net/minecraft/server/level/ServerPlayer#level()Lnet/minecraft/server/level/ServerLevel;": 1,
          "net/minecraft/tags/BlockTags#NYLIUM": 1,
          "net/minecraft/tags/EntityTypeTags#UNDEAD": 1,
          "net/minecraft/util/RandomSource#nextBoolean()Z": 2,
          "net/minecraft/util/RandomSource#nextDouble()D": 1,
          "net/minecraft/util/RandomSource#nextFloat()F": 3,
          "net/minecraft/util/RandomSource#nextInt(I)I": 6,
          "net/minecraft/world/ContainerHelper#removeItem(Ljava/util/List;II)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/ContainerHelper#takeItem(Ljava/util/List;I)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/Entity#fireImmune()Z": 1,
          "net/minecraft/world/entity/ai/goal/Goal#tick()V": 2,
          "net/minecraft/world/entity/item/ItemEntity#isAlive()Z": 2,
          "net/minecraft/world/item/Item$Properties#fireResistant()Lnet/minecraft/world/item/Item$Properties;": 1,
          "net/minecraft/world/item/ItemStack#getCount()I": 1,
          "net/minecraft/world/item/ShearsItem#createToolProperties()Lnet/minecraft/world/item/component/Tool;": 1,
          "net/minecraft/world/item/crafting/RecipeType#SMELTING": 1,
          "net/minecraft/world/level/Level#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/world/level/LevelAccessor#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 3,
          "net/minecraft/world/level/LevelAccessor#getMinY()I": 2,
          "net/minecraft/world/level/LevelAccessor#setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z": 2,
          "net/minecraft/world/level/biome/Biomes#CRIMSON_FOREST": 1,
          "net/minecraft/world/level/biome/Biomes#SOUL_SAND_VALLEY": 1,
          "net/minecraft/world/level/block/Block#randomTick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V": 3,
          "net/minecraft/world/level/block/Blocks#ANCIENT_DEBRIS": 1,
          "net/minecraft/world/level/block/Blocks#SOUL_SAND": 1,
          "net/minecraft/world/level/block/RotatedPillarBlock#createBlockStateDefinition(Lnet/minecraft/world/level/block/state/StateDefinition$Builder;)V": 1,
          "net/minecraft/world/level/block/Rotation#NONE": 1,
          "net/minecraft/world/level/block/Rotation#ordinal()I": 1,
          "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#getBurnDuration(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/item/ItemStack;)I": 1,
          "net/minecraft/world/level/block/state/BlockState#canSurvive(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 4,
          "net/minecraft/world/level/block/state/BlockState#getOffset(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/Vec3;": 2,
          "net/minecraft/world/level/block/state/BlockState#getOptionalValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/util/Optional;": 4,
          "net/minecraft/world/level/block/state/BlockState#getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;": 18,
          "net/minecraft/world/level/block/state/BlockState#is(Lnet/minecraft/tags/TagKey;)Z": 2,
          "net/minecraft/world/level/block/state/StateDefinition$Builder#add([Lnet/minecraft/world/level/block/state/properties/Property;)Lnet/minecraft/world/level/block/state/StateDefinition$Builder;": 8,
          "net/minecraft/world/level/block/state/properties/BlockSetType#OAK": 2,
          "net/minecraft/world/level/block/state/properties/BlockStateProperties#LIT": 1,
          "net/minecraft/world/level/levelgen/structure/BoundingBox#isInside(Lnet/minecraft/core/Vec3i;)Z": 2,
          "net/minecraft/world/level/levelgen/structure/BoundingBox#minX()I": 1,
          "net/minecraft/world/level/material/MapColor#COLOR_LIGHT_GREEN": 1,
          "net/minecraft/world/level/material/MapColor#TERRACOTTA_RED": 1,
          "net/minecraft/world/level/storage/loot/LootPool#lootPool()Lnet/minecraft/world/level/storage/loot/LootPool$Builder;": 1,
          "new net/minecraft/core/BlockPos": 2,
          "new net/minecraft/core/BlockPos$MutableBlockPos": 2,
          "new net/minecraft/world/effect/MobEffectInstance": 1,
          "new net/minecraft/world/inventory/BrewingStandMenu": 1,
          "new net/minecraft/world/inventory/FurnaceMenu": 1,
          "new net/minecraft/world/item/Item$Properties": 1,
          "new net/minecraft/world/item/ItemStack": 4,
          "new net/minecraft/world/item/ItemStackTemplate": 1,
          "new net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$StructureBlockInfo": 1,
          "org/betterx/bclib/classify/Furniture#TABURET": 1,
          "org/betterx/betternether/blocks/BlockCincinnasiteForge#LIT": 1,
          "org/betterx/betternether/blocks/BlockCincinnasiteForge#createFurnaceTicker(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/block/entity/BlockEntityType;Lnet/minecraft/world/level/block/entity/BlockEntityType;)Lnet/minecraft/world/level/block/entity/BlockEntityTicker;": 1,
          "org/betterx/betternether/blocks/BlockStem#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "org/betterx/betternether/blocks/BlockWillowTorch#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "org/betterx/betternether/blocks/WispRotation#ordinal()I": 1,
          "org/betterx/betternether/entity/EntityFirefly#getDeltaMovement()Lnet/minecraft/world/phys/Vec3;": 1,
          "org/betterx/betternether/entity/EntityFirefly#getInBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "org/betterx/betternether/entity/EntityFirefly#level()Lnet/minecraft/world/level/Level;": 2,
          "org/betterx/betternether/entity/EntityFirefly#setDeltaMovement(DDD)V": 1,
          "org/betterx/betternether/entity/EntityFlyingPig#level()Lnet/minecraft/world/level/Level;": 1,
          "org/betterx/betternether/items/complex/NetherSet#getArmorPieces()[Lnet/minecraft/world/item/Item;": 1,
          "org/betterx/betternether/registry/NetherEntities$KnownSpawnTypes#ordinal()I": 1,
          "org/betterx/betternether/world/biomes/util/NetherBiomeBuilder#feature(Lde/ambertation/wover/feature/api/placed/BasePlacedFeatureKey;)Lde/ambertation/wover/biome/api/builder/BiomeBuilder$VanillaBuilder;": 1,
          "org/betterx/betternether/world/biomes/util/NetherBiomeBuilder#fogColor(III)Lde/ambertation/wover/biome/api/builder/BiomeBuilder$VanillaBuilder;": 4
        },
        "runs": [
          {
            "class": "org/betterx/betternether/blocks/BlockCommonSapling",
            "method": "isValidBonemealTarget",
            "desc": "(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/BonemealSource;)Z",
            "value": "1"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder",
            "method": "height",
            "desc": "(II)Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder;",
            "value": "obj#7"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder",
            "method": "forkAt",
            "desc": "(F)Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder;",
            "value": "obj#8"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder",
            "method": "arms",
            "desc": "(II)Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder;",
            "value": "obj#9"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder",
            "method": "spread",
            "desc": "(F)Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder;",
            "value": "obj#10"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder",
            "method": "lean",
            "desc": "(F)Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder;",
            "value": "obj#11"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder",
            "method": "jitter",
            "desc": "(F)Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder;",
            "value": "obj#12"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder",
            "method": "radius",
            "desc": "(FF)Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder;",
            "value": "obj#13"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder",
            "method": "anchorsPerArm",
            "desc": "(I)Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder;",
            "value": "obj#14"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder",
            "method": "build",
            "desc": "()Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk;",
            "value": "obj#16"
          },
          {
            "class": "org/betterx/betternether/world/tree/palette/LeafMarks",
            "method": "of",
            "desc": "(Ljava/util/function/Supplier;)Lorg/betterx/betternether/world/tree/palette/LeafMarks$Builder;",
            "value": "obj#25"
          },
          {
            "class": "org/betterx/betternether/blocks/complex/NetherWoodenMaterial",
            "method": "self",
            "desc": "()Lorg/betterx/betternether/blocks/complex/NetherWoodenMaterial;",
            "value": "obj#47"
          },
          {
            "class": "org/betterx/betternether/blocks/complex/NetherWoodenMaterial",
            "method": "setFurnitureCloth",
            "desc": "(Ljava/util/function/Supplier;)Lorg/betterx/betternether/blocks/complex/NetherWoodenMaterial;",
            "value": "obj#49"
          },
          {
            "class": "org/betterx/betternether/blocks/complex/NetherWoodenMaterial",
            "method": "withoutKinds",
            "desc": "()[Lde/ambertation/wover/block/api/classify/Kind;",
            "value": "obj#59"
          },
          {
            "class": "org/betterx/betternether/blocks/complex/NetherWoodenMaterial",
            "method": "hasLogs",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/betterx/betternether/blocks/complex/NetherWoodenMaterial",
            "method": "hasBoat",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/betterx/betternether/blocks/complex/NetherWoodenMaterial",
            "method": "isRaft",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/blocks/NetherModels$GrassParams",
            "method": "variants",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/entity/EntityFirefly$FreflyLookControl",
            "method": "resetXRotOnTick",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/betterx/betternether/entity/EntityFirefly$SittingGoal",
            "method": "canContinueToUse",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/blocks/BlockNetherGrass",
            "method": "getShadeBrightness",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)F",
            "value": "1f"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "trunk",
            "desc": "(Lorg/betterx/betternether/world/tree/skeleton/TrunkShape;)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#158"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "canopy",
            "desc": "(Lorg/betterx/betternether/world/tree/canopy/CanopyShape;)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#163"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "palette",
            "desc": "(Lorg/betterx/betternether/world/tree/palette/TreePalette;)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#164"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "bark",
            "desc": "(Lorg/betterx/betternether/world/tree/math/Volume$Displacement;)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#165"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "repair",
            "desc": "(Lorg/betterx/betternether/world/tree/decay/DecayRepair;)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#166"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "decayBudget",
            "desc": "(I)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#167"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "maxCarves",
            "desc": "(I)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#168"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "pruneLooseWood",
            "desc": "(Z)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#169"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "replaceable",
            "desc": "(Ljava/util/function/Predicate;)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#170"
          },
          {
            "class": "org/betterx/betternether/world/tree/build/TreeBuilder$Builder",
            "method": "writeFlags",
            "desc": "(I)Lorg/betterx/betternether/world/tree/build/TreeBuilder$Builder;",
            "value": "obj#171"
          },
          {
            "class": "org/betterx/betternether/blocks/BlockEyeBase",
            "method": "allowsSpawning",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/EntityType;)Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/world/structures/city/BoundingBox2D",
            "method": "getSideX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/world/structures/city/BoundingBox2D",
            "method": "getSideZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/world/structures/city/BoundingBox2D",
            "method": "getMinX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/world/structures/city/BoundingBox2D",
            "method": "getMaxX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/world/structures/city/BoundingBox2D",
            "method": "getMinZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/world/structures/city/BoundingBox2D",
            "method": "getMaxZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/entity/EntityFirefly$MoveRandomGoal",
            "method": "canContinueToUse",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/BlocksHelper",
            "method": "upRay",
            "desc": "(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;I)I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/BlocksHelper",
            "method": "downRay",
            "desc": "(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;I)I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/world/tree/palette/TreePalette$LogQuery",
            "method": "heightAbove",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "org/betterx/betternether/world/tree/palette/TreePalette$LogQuery",
            "method": "carved",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/blockentities/BNBrewingStandBlockEntity",
            "method": "isBrewingReagent",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/blockentities/BNBrewingStandBlockEntity",
            "method": "canTakeItemThroughFace",
            "desc": "(ILnet/minecraft/world/item/ItemStack;Lnet/minecraft/core/Direction;)Z",
            "value": "1"
          },
          {
            "class": "org/betterx/betternether/blocks/BlockEyeballSmall",
            "method": "canSuffocate",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/blocks/BlockEyeballSmall",
            "method": "isSimpleFullBlock",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/blocks/NetherModels$Grass",
            "method": "variants",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/registry/block/NetherRecipes$StemsToBlock",
            "method": "count",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/registry/block/NetherRecipes$StemsToBlock",
            "method": "shaped",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/blockentities/BNBrewingStandBlockEntity$1",
            "method": "get",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/blockentities/BNBrewingStandBlockEntity$1",
            "method": "getCount",
            "desc": "()I",
            "value": "2"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk",
            "method": "builder",
            "desc": "()Lorg/betterx/betternether/world/tree/skeleton/ForkingTrunk$Builder;",
            "value": "obj#353"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/ForkingTrunk",
            "method": "anchorsAlong",
            "desc": "(Ljava/util/List;)Ljava/util/List;",
            "value": "obj#361"
          },
          {
            "class": "org/betterx/betternether/blockentities/BlockEntityForge",
            "method": "changeCookTime",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/blocks/BlockWillowBranch",
            "method": "getShadeBrightness",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)F",
            "value": "1f"
          },
          {
            "class": "org/betterx/betternether/world/structures/StructureCaves",
            "method": "mix",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/world/structures/StructureCaves",
            "method": "opSmoothUnion",
            "desc": "(DDD)D",
            "value": "NaN"
          },
          {
            "class": "org/betterx/betternether/world/tree/palette/TreePalette",
            "method": "of",
            "desc": "(Lorg/betterx/betternether/world/tree/palette/TreePalette$LogSource;Lorg/betterx/betternether/world/tree/palette/TreePalette$LeafSource;)Lorg/betterx/betternether/world/tree/palette/TreePalette;",
            "value": "obj#406"
          },
          {
            "class": "org/betterx/betternether/blocks/BlockMold",
            "method": "getShadeBrightness",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)F",
            "value": "1f"
          },
          {
            "class": "org/betterx/betternether/BetterNether",
            "method": "getFogStart",
            "desc": "()F",
            "value": "0.5f"
          },
          {
            "class": "org/betterx/betternether/BetterNether",
            "method": "getFogEnd",
            "desc": "()F",
            "value": "1f"
          },
          {
            "class": "org/betterx/betternether/world/features/WartTreeFeature",
            "method": "isWart",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "org/betterx/betternether/world/features/WartTreeFeature",
            "method": "isStructure",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "org/betterx/betternether/registry/NetherEntities$KnownSpawnTypes",
            "method": "isVanilla",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/betterx/betternether/world/tree/skeleton/Anchor",
            "method": "scale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "org/betterx/betternether/entity/render/RenderHydrogenJellyfish",
            "method": "getBlockLightLevel",
            "desc": "(Lorg/betterx/betternether/entity/EntityHydrogenJellyfish;Lnet/minecraft/core/BlockPos;)I",
            "value": "15"
          },
          {
            "class": "org/betterx/betternether/entity/render/RenderHydrogenJellyfish",
            "method": "getBlockLightLevel",
            "desc": "(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/BlockPos;)I",
            "value": "15"
          },
          {
            "class": "org/betterx/betternether/MHelper",
            "method": "color",
            "desc": "(III)I",
            "value": "-16777216"
          },
          {
            "class": "org/betterx/betternether/MHelper",
            "method": "setBit",
            "desc": "(BIZ)B",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/MHelper",
            "method": "setBitTrue",
            "desc": "(BI)B",
            "value": "1"
          },
          {
            "class": "org/betterx/betternether/MHelper",
            "method": "setBitFalse",
            "desc": "(BI)B",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/MHelper",
            "method": "getBit",
            "desc": "(BI)Z",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/MHelper",
            "method": "floor",
            "desc": "(F)I",
            "value": "0"
          },
          {
            "class": "org/betterx/betternether/MHelper",
            "method": "wrap",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "org/betterx/betternether/MHelper",
            "method": "floor",
            "desc": "(D)I",
            "value": "0"
          }
        ],
        "insns": 5245
      },
      "verdict": "no",
      "summary": "none of its 32 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "biomesoplenty",
      "name": "BiomesOPlenty",
      "version": "26.3.0.0.16",
      "license": "All Rights Reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "glitchcore",
          "value": "biomesoplenty/fabric/core/BiomesOPlentyFabric"
        },
        {
          "kind": "terrablender",
          "value": "biomesoplenty/fabric/core/BiomesOPlentyFabric"
        }
      ],
      "mixin_configs": [
        "biomesoplenty.mixins.json",
        "biomesoplenty.fabric.mixins.json"
      ],
      "depends": [
        "glitchcore",
        "terrablender"
      ],
      "classes": 296,
      "methods": 1593,
      "sites": [
        {
          "mixin": "biomesoplenty/fabric/mixin/MixinBloodFluid",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "setupFog",
          "kind": "inject",
          "method": "setupFog",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "render_fog",
          "why": "ViewportEvent.RenderFog"
        },
        {
          "mixin": "biomesoplenty/fabric/mixin/MixinLiquidNullFluid",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "setupFog",
          "kind": "inject",
          "method": "setupFog",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "render_fog",
          "why": "ViewportEvent.RenderFog"
        },
        {
          "mixin": "biomesoplenty/fabric/mixin/MixinScreenEffectRenderer",
          "targets": [
            "net/minecraft/client/renderer/ScreenEffectRenderer"
          ],
          "handler": "onSubmit",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/ScreenEffectRenderer#submit HEAD"
        }
      ],
      "listening": 3,
      "accessors": 0,
      "hooks": {
        "render_fog": 2
      },
      "wanted": {
        "net/minecraft/client/renderer/ScreenEffectRenderer#submit @HEAD": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "FluidRenderingRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 296,
        "features": {
          "block-behaviour": 54,
          "block-shape": 1,
          "item-behaviour": 1,
          "block-entity": 1,
          "renderer": 1,
          "particle": 17,
          "mixin": 3
        },
        "events": [],
        "examples": {
          "AlgalEndStoneBlock": [
            "canBeGrass",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "AnomalyBlock": [
            "newBlockEntity"
          ],
          "BlackstoneDecorationBlock": [
            "canSurvive"
          ],
          "BrambleBlock": [
            "entityInside",
            "makeConnections"
          ],
          "BrambleLeavesBlock": [
            "canSurvive"
          ],
          "BranchBlock": [
            "canSurvive"
          ],
          "CloverBlock": [
            "growHugeClover",
            "isBonemealSuccess",
            "performBonemeal"
          ],
          "DoublePlantBlockBOP": [
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "DoubleWaterPlantBlock": [
            "canSurvive",
            "isBonemealSuccess",
            "isExposed",
            "isValidBonemealTarget",
            "performBonemeal",
            "setPlacedBy"
          ],
          "DoubleWatersidePlantBlock": [
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "EyebulbBlock": [
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "FleshBlock": [
            "randomTick",
            "stepOn",
            "useItemOn"
          ],
          "FleshTendonsBlock": [
            "canSurvive",
            "getHeadBlock",
            "isBonemealSuccess",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "FleshTendonsBottomBlock": [
            "canGrowInto",
            "canSurvive",
            "getBlocksToGrowWhenBonemealed",
            "getBodyBlock",
            "isBonemealSuccess",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "FlowerBlockBOP": [
            "canSurvive",
            "entityInside"
          ],
          "FlowerBudBlock": [
            "growHugeFlower",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "tick"
          ],
          "FlowerPetalBlock": [
            "makeFallingLeavesParticles",
            "spawnFallingLeavesParticle"
          ],
          "FoliageBlockBOP": [
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "playerDestroy"
          ],
          "GlowingMossBlock": [
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "GlowwormSilkBlock": [
            "canSurvive",
            "getHeadBlock",
            "isBonemealSuccess",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "GlowwormSilkBottomBlock": [
            "canGrowInto",
            "canSurvive",
            "getBlocksToGrowWhenBonemealed",
            "getBodyBlock",
            "isBonemealSuccess",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "HairBlock": [
            "canSurvive"
          ],
          "HangingCobwebBlock": [
            "canSurvive",
            "entityInside",
            "getHeadBlock",
            "isBonemealSuccess",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "HangingCobwebBottomBlock": [
            "canGrowInto",
            "canSurvive",
            "entityInside",
            "getBlocksToGrowWhenBonemealed",
            "getBodyBlock",
            "isBonemealSuccess",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "HangingStrandBlock": [
            "canSurvive",
            "getHeadBlock",
            "isBonemealSuccess",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "HangingStrandBottomBlock": [
            "canGrowInto",
            "canSurvive",
            "getBlocksToGrowWhenBonemealed",
            "getBodyBlock",
            "isBonemealSuccess",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "HighGrassBlock": [
            "canGrowInto",
            "canSurvive",
            "getBlocksToGrowWhenBonemealed",
            "getBodyBlock",
            "getMaxAgeState",
            "isMaxAge",
            "isRandomlyTicking",
            "performBonemeal"
          ],
          "HighGrassPlantBlock": [
            "canSurvive",
            "entityInside",
            "getHeadBlock"
          ],
          "HugeCloverPetalBlock": [
            "canSurvive",
            "mayPlaceOn"
          ],
          "HugeLilyPadBlock": [
            "canSurvive",
            "entityInside",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "mayPlaceOn",
            "performBonemeal",
            "playerDestroy",
            "playerWillDestroy",
            "setPlacedBy"
          ],
          "LumaloopBlock": [
            "canGrowInto",
            "canSurvive",
            "getBlocksToGrowWhenBonemealed",
            "getBodyBlock",
            "getGrowIntoState",
            "getMaxAgeState",
            "isMaxAge",
            "isRandomlyTicking",
            "lightLevel",
            "performBonemeal",
            "updateBodyAfterConvertedFromHead"
          ],
          "LumaloopPlantBlock": [
            "canSurvive",
            "getHeadBlock",
            "lightLevel",
            "performBonemeal",
            "updateHeadAfterConvertedFromBody"
          ],
          "MushroomBlockBOP": [
            "canSurvive",
            "growMushroom",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "tick"
          ],
          "NullBlock": [
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "NullLeavesBlock": [
            "getDistanceAt",
            "getOptionalDistanceAt",
            "tick",
            "updateDistance"
          ],
          "NullPlantBlock": [
            "canSurvive",
            "growTree",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "OriginGrassBlock": [
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "OrpimentBudBlock": [
            "canSurvive"
          ],
          "OrpimentClusterBlock": [
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "OrpimentFumaroleBlock": [
            "canSurvive",
            "stepOn"
          ],
          "OvergrownSandBlock": [
            "canBeGrass",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal",
            "randomTick"
          ],
          "PotentSphaleriteBlock": [
            "stepOn"
          ],
          "PurpleWildflowerBlock": [
            "canSurvive"
          ],
          "PusBubbleBlock": [
            "attack",
            "canSurvive",
            "entityInside",
            "onProjectileHit",
            "spawnParticles",
            "wasExploded"
          ],
          "SaplingBlockBOP": [
            "advanceTree",
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "SeaOatsBlock": [
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "SpanishMossBlock": [
            "canSurvive",
            "getHeadBlock"
          ],
          "SpanishMossBottomBlock": [
            "canGrowInto",
            "canSurvive",
            "getBlocksToGrowWhenBonemealed",
            "getBodyBlock"
          ],
          "SpiderEggBlock": [
            "canSurvive",
            "fallOn",
            "onProjectileHit",
            "spawnAfterBreak",
            "spawnSpider",
            "wasExploded"
          ],
          "StringyCobwebBlock": [
            "affectNeighborsAfterRemoval",
            "canSurvive",
            "entityInside"
          ],
          "StringyCobwebBlockItem": [
            "canPlace",
            "getStringyCobwebLength",
            "placeBlock",
            "placeCobweb"
          ],
          "TinyCactusBlock": [
            "canSurvive",
            "entityInside",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "VegetationBlockBOP": [
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "performBonemeal"
          ],
          "WaterlilyBlockBOP": [
            "canSurvive",
            "entityInside",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "mayPlaceOn",
            "performBonemeal"
          ],
          "WebbingBlock": [
            "entityInside"
          ]
        }
      },
      "interp": {
        "classes": 296,
        "methods": 896,
        "tried": 600,
        "completed": 138,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "biomesoplenty/block/BarnaclesBlock#WATERLOGGED": 1,
          "biomesoplenty/block/BloodFluid#createFluidStateDefinition(Lnet/minecraft/world/level/block/state/StateDefinition$Builder;)V": 1,
          "biomesoplenty/block/BloodFluid$Flowing#LEVEL": 1,
          "biomesoplenty/block/BrambleBlock#NORTH": 1,
          "biomesoplenty/block/DoubleWaterPlantBlock#HALF": 2,
          "biomesoplenty/block/HangingStrandBottomBlock#animateTick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V": 2,
          "biomesoplenty/block/HighGrassBlock#AGE": 3,
          "biomesoplenty/block/HighGrassBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "biomesoplenty/block/OrpimentClusterBlock#HALF": 1,
          "biomesoplenty/util/SimpleBlockPredicate#test(Ljava/lang/Object;Ljava/lang/Object;)Z": 20,
          "com/google/common/collect/Sets#newHashSet()Ljava/util/HashSet;": 1,
          "com/google/gson/Gson#toJson(Ljava/lang/Object;)Ljava/lang/String;": 1,
          "java/io/File#exists()Z": 1,
          "java/util/List#of([Ljava/lang/Object;)Ljava/util/List;": 2,
          "net/minecraft/client/Camera#blockPosition()Lnet/minecraft/core/BlockPos;": 2,
          "net/minecraft/client/particle/SingleQuadParticle#getLightCoords(F)I": 1,
          "net/minecraft/client/particle/SingleQuadParticle$Layer#OPAQUE": 4,
          "net/minecraft/client/particle/SingleQuadParticle$Layer#TRANSLUCENT": 2,
          "net/minecraft/client/player/LocalPlayer#getEyePosition()Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/core/BlockPos#above()Lnet/minecraft/core/BlockPos;": 6,
          "net/minecraft/core/BlockPos#below()Lnet/minecraft/core/BlockPos;": 12,
          "net/minecraft/core/BlockPos#getX()I": 7,
          "net/minecraft/core/BlockPos#getY()I": 24,
          "net/minecraft/core/BlockPos#mutable()Lnet/minecraft/core/BlockPos$MutableBlockPos;": 1,
          "net/minecraft/core/BlockPos#offset(III)Lnet/minecraft/core/BlockPos;": 18,
          "net/minecraft/core/BlockPos#relative(Lnet/minecraft/core/Direction;)Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/BlockPos#relative(Lnet/minecraft/core/Direction;I)Lnet/minecraft/core/BlockPos;": 2,
          "net/minecraft/core/BlockPos$MutableBlockPos#move(III)Lnet/minecraft/core/BlockPos$MutableBlockPos;": 2,
          "net/minecraft/core/Direction#getRandom(Lnet/minecraft/util/RandomSource;)Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/core/Direction#values()[Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/core/Direction$Plane#HORIZONTAL": 1,
          "net/minecraft/core/registries/Registries#BIOME": 2,
          "net/minecraft/core/registries/Registries#BLOCK": 4,
          "net/minecraft/core/registries/Registries#FEATURE": 2,
          "net/minecraft/core/registries/Registries#ITEM": 1,
          "net/minecraft/core/registries/Registries#PLACED_FEATURE": 2,
          "net/minecraft/data/worldgen/BiomeDefaultFeatures#addDefaultCarversAndLakes(Lnet/minecraft/world/level/biome/BiomeGenerationSettings$Builder;)V": 1,
          "net/minecraft/data/worldgen/BootstrapContext#register(Lnet/minecraft/resources/ResourceKey;Ljava/lang/Object;)Lnet/minecraft/core/Holder$Reference;": 7,
          "net/minecraft/data/worldgen/Carvers#CAVE": 1,
          "net/minecraft/resources/ResourceKey#identifier()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/server/level/ServerLevel#removeBlock(Lnet/minecraft/core/BlockPos;Z)Z": 2,
          "net/minecraft/sounds/SoundEvents#BUCKET_FILL": 1,
          "net/minecraft/tags/BlockTags#FEATURES_CANNOT_REPLACE": 1,
          "net/minecraft/util/Mth#clamp(FFF)F": 1,
          "net/minecraft/util/Mth#sqrt(F)F": 1,
          "net/minecraft/util/ParticleUtils#spawnParticleBelow(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;Lnet/minecraft/core/particles/ParticleOptions;)V": 1,
          "net/minecraft/util/RandomSource#nextFloat()F": 1,
          "net/minecraft/util/RandomSource#nextInt(I)I": 19,
          "net/minecraft/util/random/WeightedList#of()Lnet/minecraft/util/random/WeightedList;": 1,
          "net/minecraft/util/valueproviders/UniformInt#of(II)Lnet/minecraft/util/valueproviders/UniformInt;": 1,
          "net/minecraft/world/entity/Entity#fireImmune()Z": 1,
          "net/minecraft/world/entity/Entity#getDeltaMovement()Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/world/entity/EntityTypes#CAVE_SPIDER": 1,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 1,
          "net/minecraft/world/item/context/BlockPlaceContext#getHorizontalDirection()Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/world/item/context/BlockPlaceContext#getItemInHand()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/item/context/BlockPlaceContext#getLevel()Lnet/minecraft/world/level/Level;": 4,
          "net/minecraft/world/level/BlockGetter#getFluidState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/material/FluidState;": 1,
          "net/minecraft/world/level/Level#getRandom()Lnet/minecraft/util/RandomSource;": 2,
          "net/minecraft/world/level/Level#isClientSide()Z": 1,
          "net/minecraft/world/level/LevelAccessor#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/LevelAccessor#isEmptyBlock(Lnet/minecraft/core/BlockPos;)Z": 5,
          "net/minecraft/world/level/LevelReader#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/LevelWriter#setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z": 1,
          "net/minecraft/world/level/WorldGenLevel#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/WorldGenLevel#getMinY()I": 1,
          "net/minecraft/world/level/WorldGenLevel#getRandom()Lnet/minecraft/util/RandomSource;": 6,
          "net/minecraft/world/level/WorldGenLevel#isEmptyBlock(Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/world/level/biome/BiomeGenerationSettings$Builder#addFeature(Lnet/minecraft/world/level/levelgen/GenerationStep$Decoration;Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/level/biome/BiomeGenerationSettings$Builder;": 2,
          "net/minecraft/world/level/biome/Climate$Parameter#max()J": 7,
          "net/minecraft/world/level/biome/Climate$Parameter#point(F)Lnet/minecraft/world/level/biome/Climate$Parameter;": 2,
          "net/minecraft/world/level/biome/Climate$Parameter#span(FF)Lnet/minecraft/world/level/biome/Climate$Parameter;": 5,
          "net/minecraft/world/level/block/Block#animateTick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V": 3,
          "net/minecraft/world/level/block/Block#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 3,
          "net/minecraft/world/level/block/Block#getStateForPlacement(Lnet/minecraft/world/item/context/BlockPlaceContext;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/block/Blocks#CUT_COPPER": 5,
          "net/minecraft/world/level/block/Blocks#OAK_LOG": 2,
          "net/minecraft/world/level/block/Blocks#POINTED_DRIPSTONE": 2,
          "net/minecraft/world/level/block/Blocks#STONE": 1,
          "net/minecraft/world/level/block/BonemealSource#INTERACTION": 1,
          "net/minecraft/world/level/block/BonemealableBlock#hasSpreadableNeighbourPos(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Z": 1,
          "net/minecraft/world/level/block/FlowerBedBlock#AMOUNT": 1,
          "net/minecraft/world/level/block/FlowerBlock#animateTick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V": 1,
          "net/minecraft/world/level/block/LeafLitterBlock#AMOUNT": 1,
          "net/minecraft/world/level/block/NetherVines#getBlocksToGrowWhenBonemealed(Lnet/minecraft/util/RandomSource;)I": 1,
          "net/minecraft/world/level/block/NetherVines#isValidGrowthState(Lnet/minecraft/world/level/block/state/BlockState;)Z": 1,
          "net/minecraft/world/level/block/TintedParticleLeavesBlock#animateTick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#<init>(Lnet/minecraft/world/level/block/entity/BlockEntityType;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V": 1,
          "net/minecraft/world/level/block/sounds/AmbientDesertBlockSoundsPlayer#playAmbientSandSounds(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V": 2,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 4,
          "net/minecraft/world/level/block/state/BlockState#getFluidState()Lnet/minecraft/world/level/material/FluidState;": 1,
          "net/minecraft/world/level/block/state/BlockState#getOffset(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/world/level/block/state/BlockState#getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;": 11,
          "net/minecraft/world/level/block/state/BlockState#hasBlockEntity()Z": 1,
          "net/minecraft/world/level/block/state/BlockState#is(Ljava/lang/Object;)Z": 5,
          "net/minecraft/world/level/block/state/BlockState#isAir()Z": 3,
          "net/minecraft/world/level/block/state/StateDefinition$Builder#add([Lnet/minecraft/world/level/block/state/properties/Property;)Lnet/minecraft/world/level/block/state/StateDefinition$Builder;": 5,
          "net/minecraft/world/level/levelgen/Noises#SURFACE": 1,
          "net/minecraft/world/level/levelgen/VerticalAnchor#absolute(I)Lnet/minecraft/world/level/levelgen/VerticalAnchor;": 1,
          "net/minecraft/world/level/levelgen/feature/TreeFeature#isAirOrLeaves(Lnet/minecraft/world/level/LevelSimulatedReader;Lnet/minecraft/core/BlockPos;)Z": 6,
          "net/minecraft/world/level/levelgen/feature/TreeFeature#validTreePos(Lnet/minecraft/world/level/LevelSimulatedReader;Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/world/level/levelgen/material/MaterialRules#waterBlockCheck(II)Lnet/minecraft/world/level/levelgen/material/condition/MaterialCondition;": 1,
          "net/minecraft/world/level/levelgen/placement/CountPlacement#of(I)Lnet/minecraft/world/level/levelgen/placement/CountPlacement;": 2,
          "net/minecraft/world/level/levelgen/placement/SurfaceWaterDepthFilter#forMaxDepth(I)Lnet/minecraft/world/level/levelgen/placement/SurfaceWaterDepthFilter;": 3,
          "net/minecraft/world/phys/BlockHitResult#getBlockPos()Lnet/minecraft/core/BlockPos;": 2,
          "net/minecraft/world/phys/shapes/Shapes#empty()Lnet/minecraft/world/phys/shapes/VoxelShape;": 1,
          "new net/minecraft/core/BlockPos$MutableBlockPos": 6,
          "new net/minecraft/world/level/biome/Biome$BiomeBuilder": 3,
          "new net/minecraft/world/level/biome/MobSpawnSettings$Builder": 63,
          "new net/minecraft/world/level/levelgen/feature/TreeFeature$Builder": 2,
          "new net/minecraft/world/level/levelgen/feature/treedecorators/PlaceOnGroundDecorator": 1,
          "new net/minecraft/world/level/levelgen/placement/PlacedFeature": 2,
          "new net/minecraft/world/phys/Vec3": 1
        },
        "runs": [
          {
            "class": "biomesoplenty/block/BloodFluid",
            "method": "canConvertToSource",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/BloodFluid",
            "method": "getSlopeFindDistance",
            "desc": "(Lnet/minecraft/world/level/LevelReader;)I",
            "value": "3"
          },
          {
            "class": "biomesoplenty/block/BloodFluid",
            "method": "isSame",
            "desc": "(Lnet/minecraft/world/level/material/Fluid;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/BloodFluid",
            "method": "getDropOff",
            "desc": "(Lnet/minecraft/world/level/LevelReader;)I",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/BloodFluid",
            "method": "getTickDelay",
            "desc": "(Lnet/minecraft/world/level/LevelReader;)I",
            "value": "7"
          },
          {
            "class": "biomesoplenty/block/BloodFluid",
            "method": "getExplosionResistance",
            "desc": "()F",
            "value": "100f"
          },
          {
            "class": "biomesoplenty/worldgen/feature/misc/FallenFirLogFeature",
            "method": "checkSpace",
            "desc": "(Lnet/minecraft/world/level/WorldGenLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;I)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/worldgen/feature/configurations/TaigaTreeConfiguration$Builder",
            "method": "trunkWidth",
            "desc": "(I)Lbiomesoplenty/worldgen/feature/configurations/TaigaTreeConfiguration$Builder;",
            "value": "obj#45"
          },
          {
            "class": "biomesoplenty/worldgen/feature/misc/LargeRoseQuartzFeature$LargeRoseQuartz",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "biomesoplenty/worldgen/feature/misc/LargeRoseQuartzFeature$LargeRoseQuartz",
            "method": "moveBackUntilBaseIsInsideStoneAndShrinkRadiusIfNecessary",
            "desc": "(Lnet/minecraft/world/level/WorldGenLevel;Lbiomesoplenty/worldgen/feature/misc/LargeRoseQuartzFeature$WindOffsetter;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/worldgen/feature/misc/LargeRoseQuartzFeature$LargeRoseQuartz",
            "method": "getHeightAtRadius",
            "desc": "(F)I",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/HangingStrandBottomBlock",
            "method": "isRandomlyTicking",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/HangingStrandBottomBlock",
            "method": "canGrowInto",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/HangingStrandBottomBlock",
            "method": "getBlocksToGrowWhenBonemealed",
            "desc": "(Lnet/minecraft/util/RandomSource;)I",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/HangingStrandBottomBlock",
            "method": "isValidBonemealTarget",
            "desc": "(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/BonemealSource;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/BrambleBlock",
            "method": "isPathfindable",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/pathfinder/PathComputationType;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/PusBubbleBlock",
            "method": "canBeReplaced",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/item/context/BlockPlaceContext;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/LiquidNullFluid$Source",
            "method": "getAmount",
            "desc": "(Lnet/minecraft/world/level/material/FluidState;)I",
            "value": "8"
          },
          {
            "class": "biomesoplenty/block/LiquidNullFluid$Source",
            "method": "isSource",
            "desc": "(Lnet/minecraft/world/level/material/FluidState;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/FlowerBudBlock",
            "method": "isValidBonemealTarget",
            "desc": "(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/BonemealSource;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/OrpimentClusterBlock",
            "method": "isPathfindable",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/pathfinder/PathComputationType;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/worldgen/feature/misc/FallenBirchLogFeature",
            "method": "checkSpace",
            "desc": "(Lnet/minecraft/world/level/WorldGenLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;I)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/SaplingBlockBOP",
            "method": "isValidBonemealTarget",
            "desc": "(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/BonemealSource;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/HangingStrandBlock",
            "method": "isRandomlyTicking",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/HangingStrandBlock",
            "method": "isValidBonemealTarget",
            "desc": "(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/BonemealSource;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/OrpimentBudBlock",
            "method": "canBeReplaced",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/item/context/BlockPlaceContext;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/DoublePlantBlockBOP",
            "method": "isValidBonemealTarget",
            "desc": "(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/BonemealSource;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/BlackstoneDecorationBlock",
            "method": "canBeReplaced",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/item/context/BlockPlaceContext;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/BloodFluid$Source",
            "method": "getAmount",
            "desc": "(Lnet/minecraft/world/level/material/FluidState;)I",
            "value": "8"
          },
          {
            "class": "biomesoplenty/block/BloodFluid$Source",
            "method": "isSource",
            "desc": "(Lnet/minecraft/world/level/material/FluidState;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/worldgen/feature/misc/FallenJacarandaLogFeature",
            "method": "checkSpace",
            "desc": "(Lnet/minecraft/world/level/WorldGenLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;I)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/SpiderEggBlock",
            "method": "isPathfindable",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/pathfinder/PathComputationType;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/util/biome/RoseQuartzUtils",
            "method": "getRoseQuartzHeight",
            "desc": "(DDDD)D",
            "value": "0"
          },
          {
            "class": "biomesoplenty/init/ModClient$2",
            "method": "color",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)I",
            "value": "-9322212"
          },
          {
            "class": "biomesoplenty/init/ModClient$2",
            "method": "colorInWorld",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/client/renderer/block/BlockAndTintGetter;Lnet/minecraft/core/BlockPos;)I",
            "value": "-14647248"
          },
          {
            "class": "biomesoplenty/block/MushroomBlockBOP",
            "method": "isValidBonemealTarget",
            "desc": "(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/BonemealSource;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/worldgen/feature/misc/FallenDeadLogFeature",
            "method": "checkSpace",
            "desc": "(Lnet/minecraft/world/level/WorldGenLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;I)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/particle/WispBubbleParticle",
            "method": "getLightCoords",
            "desc": "(F)I",
            "value": "216"
          },
          {
            "class": "biomesoplenty/worldgen/feature/configurations/CypressTreeConfiguration$Builder",
            "method": "leavesAtBottom",
            "desc": "(Z)Lbiomesoplenty/worldgen/feature/configurations/CypressTreeConfiguration$Builder;",
            "value": "obj#377"
          },
          {
            "class": "biomesoplenty/worldgen/feature/configurations/BigTreeConfiguration$Builder",
            "method": "trunkWidth",
            "desc": "(I)Lbiomesoplenty/worldgen/feature/configurations/BigTreeConfiguration$Builder;",
            "value": "obj#396"
          },
          {
            "class": "biomesoplenty/worldgen/feature/configurations/BigTreeConfiguration$Builder",
            "method": "foliageHeight",
            "desc": "(I)Lbiomesoplenty/worldgen/feature/configurations/BigTreeConfiguration$Builder;",
            "value": "obj#397"
          },
          {
            "class": "biomesoplenty/worldgen/feature/configurations/BigTreeConfiguration$Builder",
            "method": "foliageDensity",
            "desc": "(I)Lbiomesoplenty/worldgen/feature/configurations/BigTreeConfiguration$Builder;",
            "value": "obj#398"
          },
          {
            "class": "biomesoplenty/worldgen/feature/configurations/TwigletTreeConfiguration$Builder",
            "method": "leafChance",
            "desc": "(FF)Lbiomesoplenty/worldgen/feature/configurations/TwigletTreeConfiguration$Builder;",
            "value": "obj#432"
          },
          {
            "class": "biomesoplenty/block/BloodFluid$Flowing",
            "method": "isSource",
            "desc": "(Lnet/minecraft/world/level/material/FluidState;)Z",
            "value": "0"
          },
          {
            "class": "biomesoplenty/block/WispjellyBlock",
            "method": "propagatesSkylightDown",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/WispjellyBlock",
            "method": "isPathfindable",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/pathfinder/PathComputationType;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/DoubleWaterPlantBlock",
            "method": "isValidBonemealTarget",
            "desc": "(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/BonemealSource;)Z",
            "value": "1"
          },
          {
            "class": "biomesoplenty/block/PotentSphaleriteBlock",
            "method": "isPathfindable",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/pathfinder/PathComputationType;)Z",
            "value": "0"
          }
        ],
        "insns": 4047
      },
      "verdict": "partly",
      "summary": "2 of 3 listening patch sites land on a Horizon hook (66%); of 3 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "boatiview",
      "name": "Boat Item View",
      "version": "0.0.11",
      "license": "https://github.com/50ap5ud5/BoatItemView/blob/26.x-multiloader/LICENSE",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "main",
          "value": "me/soapsuds/boatiview/fabric/BoatItemViewImpl"
        },
        {
          "kind": "modmenu",
          "value": "me/soapsuds/boatiview/fabric/config/ConfigModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "boatiview.common.mixins.json",
        "boatiview.fabric.mixins.json"
      ],
      "depends": [],
      "classes": 13,
      "methods": 35,
      "sites": [
        {
          "mixin": "me/soapsuds/boatiview/mixin/FirstPersonRendererMixin",
          "targets": [
            "net/minecraft/client/player/FirstPersonHandsAndItems"
          ],
          "handler": "modifyHandRender",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/LocalPlayer;isHandsBusy()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/FirstPersonHandsAndItems#tick INVOKE"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/player/FirstPersonHandsAndItems#tick @INVOKE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 13,
        "features": {
          "mixin": 1
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 13,
        "methods": 10,
        "tried": 10,
        "completed": 0,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/soapsuds/boatiview/util/BConstants$ConfigType;#clone()Ljava/lang/Object;": 1,
          "me/shedaniel/autoconfig/ConfigHolder#getConfig()Lme/shedaniel/autoconfig/ConfigData;": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 1
        },
        "runs": [],
        "insns": 72
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "bobby",
      "name": "Bobby",
      "version": "5.2.16+mc26.3",
      "license": "LGPL-3.0-or-later",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "de/johni0702/minecraft/bobby/Bobby"
        },
        {
          "kind": "modmenu",
          "value": "de/johni0702/minecraft/bobby/BobbyModMenuApiImpl"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "de/johni0702/minecraft/bobby/SodiumConfigEntrypoint"
        }
      ],
      "mixin_configs": [
        "bobby.mixins.json",
        "bobby-sodium06-compat.mixins.json"
      ],
      "depends": [],
      "classes": 59,
      "methods": 306,
      "sites": [
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbyInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#<init> RETURN"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbyGetChunk",
          "kind": "inject",
          "method": "getChunk",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#getChunk RETURN"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbyUnloadFakeChunk",
          "kind": "inject",
          "method": "replaceWithPacketData",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientChunkCache$Storage;getIndex(II)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData INVOKE"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbyFingerprintRealChunk",
          "kind": "inject",
          "method": "replaceWithPacketData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData RETURN"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbySaveChunk",
          "kind": "inject",
          "method": "drop",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#drop HEAD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbySaveChunksBeforeMove",
          "kind": "inject",
          "method": "updateViewCenter",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#updateViewCenter HEAD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbySaveChunksBeforeResize",
          "kind": "inject",
          "method": "updateViewRadius",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#updateViewRadius HEAD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbySubstituteFakeChunksForUnloadedRealOnes",
          "kind": "inject",
          "method": "drop",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#drop RETURN"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbySubstituteFakeChunksForUnloadedRealOnes",
          "kind": "inject",
          "method": "updateViewCenter",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#updateViewCenter RETURN"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbySubstituteFakeChunksForUnloadedRealOnes",
          "kind": "inject",
          "method": "updateViewRadius",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#updateViewRadius RETURN"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "reAddEmptyFakeChunks",
          "kind": "inject",
          "method": "updateViewRadius",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientChunkCache;storage:Lnet/minecraft/client/multiplayer/ClientChunkCache$Storage;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#updateViewRadius FIELD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "bobbyDebugString",
          "kind": "inject",
          "method": "gatherStats",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#gatherStats RETURN"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientInformationMixin",
          "targets": [
            "net/minecraft/server/level/ClientInformation"
          ],
          "handler": "clampMaxValue",
          "kind": "modify-arg",
          "method": "write",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/FriendlyByteBuf;writeByte(I)Lnet/minecraft/network/FriendlyByteBuf;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "storeInitialLightData",
          "kind": "inject",
          "method": "handleLevelChunkWithLight",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientChunkCache;replaceWithPacketData(IILnet/minecraft/network/protocol/game/ClientboundLevelChunkPacketData;)Lnet/minecraft/world/level/chunk/LevelChunk;",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "storeInitialLightData",
          "kind": "inject",
          "method": "applyLightData",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "addUnloadFakeLightDataTask",
          "kind": "modify-arg",
          "method": "handleLevelChunkWithLight",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;queueLightUpdate(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/FogRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "clampMaxValue",
          "kind": "modify-variable",
          "method": "computeFogColor",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "blockingBobbyUpdate",
          "kind": "inject",
          "method": "renderLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#renderLevel HEAD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "updateSkyFogRenderer",
          "kind": "wrap-operation",
          "method": "extractCamera",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/fog/FogRenderer;setupFog(Lnet/minecraft/client/Camera;ILnet/minecraft/client/DeltaTracker;FLnet/minecraft/client/multiplayer/ClientLevel;)Lnet/minecraft/client/renderer/fog/FogData;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "rotateSkyFogRenderer",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/fog/FogRenderer;endFrame()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render INVOKE"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "closeSkyFogRenderer",
          "kind": "inject",
          "method": "close",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#close RETURN"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/IntegratedServerMixin",
          "targets": [
            "net/minecraft/client/server/IntegratedServer"
          ],
          "handler": "bobbyViewDistanceOverwrite",
          "kind": "modify-arg",
          "method": "tickServer",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Math;max(II)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/LevelLightEngineMixin",
          "targets": [
            "net/minecraft/world/level/lighting/LevelLightEngine"
          ],
          "handler": "bobby_getLightSection",
          "kind": "inject",
          "method": "lightOnInColumn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/lighting/LevelLightEngine#lightOnInColumn HEAD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "clampMaxValue",
          "kind": "modify-arg",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;addSkyPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lnet/minecraft/client/renderer/state/level/CameraRenderState;Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/LightEngineMixin",
          "targets": [
            "net/minecraft/world/level/lighting/LightEngine",
            "ca/spottedleaf/starlight/common/light/StarLightInterface$1",
            "ca/spottedleaf/starlight/common/light/StarLightInterface$2"
          ],
          "handler": "bobby_getLightSection",
          "kind": "inject",
          "method": "getDataLayerData",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/lighting/LightEngine#getDataLayerData HEAD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/LightEngineMixin",
          "targets": [
            "net/minecraft/world/level/lighting/LightEngine",
            "ca/spottedleaf/starlight/common/light/StarLightInterface$1",
            "ca/spottedleaf/starlight/common/light/StarLightInterface$2"
          ],
          "handler": "bobby_getLightSection",
          "kind": "inject",
          "method": "getLightValue",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/lighting/LightEngine#getLightValue HEAD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "bobbyUpdate",
          "kind": "inject",
          "method": "runTick",
          "at": "CONSTANT",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#runTick CONSTANT"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "bobbyClose",
          "kind": "inject",
          "method": "clearDownloadedResourcePacks",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#clearDownloadedResourcePacks RETURN"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "forceClientDistanceWhenBobbyIsActive",
          "kind": "inject",
          "method": "getEffectiveRenderDistance",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#getEffectiveRenderDistance HEAD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "considerBobbyMaxRenderDistanceSetting",
          "kind": "modify-arg",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/OptionInstance$IntRange;<init>(IIZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/sodium06/SodiumClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "keepChunkRenderedIfReplacedByFakeChunk",
          "kind": "inject",
          "method": "unload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#unload HEAD"
        },
        {
          "mixin": "de/johni0702/minecraft/bobby/mixin/sodium06/SodiumClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "keepChunkRenderedIfReplacedByFakeChunk",
          "kind": "inject",
          "method": "handleForgetLevelChunk",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        }
      ],
      "listening": 20,
      "accessors": 4,
      "hooks": {
        "net_from_server": 3
      },
      "wanted": {
        "net/minecraft/client/Minecraft#clearDownloadedResourcePacks @RETURN": 1,
        "net/minecraft/client/Options#getEffectiveRenderDistance @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#<init> @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#drop @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#drop @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#gatherStats @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#getChunk @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#updateViewCenter @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#updateViewCenter @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#updateViewRadius @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#updateViewRadius @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientLevel#unload @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#close @RETURN": 1,
        "net/minecraft/client/renderer/GameRenderer#renderLevel @HEAD": 1,
        "net/minecraft/world/level/lighting/LevelLightEngine#lightOnInColumn @HEAD": 1,
        "net/minecraft/world/level/lighting/LightEngine#getDataLayerData @HEAD": 1,
        "net/minecraft/world/level/lighting/LightEngine#getLightValue @HEAD": 1
      },
      "wanted_calls": {
        "java/lang/Math#max @INVOKE (modify-arg)": 1,
        "net/minecraft/client/Minecraft#runTick @CONSTANT": 1,
        "net/minecraft/client/OptionInstance$IntRange#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @INVOKE": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#updateViewRadius @FIELD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#queueLightUpdate @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/GameRenderer#render @INVOKE": 1,
        "net/minecraft/client/renderer/LevelRenderer#addSkyPass @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#computeFogColor @HEAD (modify-variable)": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#setupFog @INVOKE (wrap-operation)": 1,
        "net/minecraft/network/FriendlyByteBuf#writeByte @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "FabricClientCommandSource",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientCommands",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "VersionParsingException",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 59,
        "features": {
          "command": 1,
          "events": 1,
          "mixin": 19
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 59,
        "methods": 177,
        "tried": 177,
        "completed": 64,
        "handlers_tried": 3,
        "handlers_completed": 0,
        "missing": {
          "[Lde/johni0702/minecraft/bobby/Worlds$MergeStage;#clone()Ljava/lang/Object;": 1,
          "ca/stellardrift/confabricate/Confabricate#fileWatcher()Lorg/spongepowered/configurate/reference/WatchServiceListener;": 1,
          "de/johni0702/minecraft/bobby/FakeChunkStorage#read(Lnet/minecraft/world/level/ChunkPos;)Ljava/util/concurrent/CompletableFuture;": 1,
          "de/johni0702/minecraft/bobby/FakeChunkStorage#write(Lnet/minecraft/world/level/ChunkPos;Lnet/minecraft/nbt/CompoundTag;)Ljava/util/concurrent/CompletableFuture;": 1,
          "it/unimi/dsi/fastutil/ints/Int2ObjectMap#get(I)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/ints/Int2ObjectMap#values()Lit/unimi/dsi/fastutil/objects/ObjectCollection;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ObjectMap#put(JLjava/lang/Object;)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ObjectMap#remove(J)Ljava/lang/Object;": 3,
          "it/unimi/dsi/fastutil/longs/Long2ObjectMap#size()I": 1,
          "it/unimi/dsi/fastutil/longs/Long2ObjectMap#values()Lit/unimi/dsi/fastutil/objects/ObjectCollection;": 1,
          "it/unimi/dsi/fastutil/longs/LongSet#add(J)Z": 1,
          "it/unimi/dsi/fastutil/longs/LongSet#contains(J)Z": 1,
          "it/unimi/dsi/fastutil/longs/LongSet#remove(J)Z": 1,
          "it/unimi/dsi/fastutil/objects/ObjectLinkedOpenHashSet#addOrGet(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/ObjectLinkedOpenHashSet#iterator()Lit/unimi/dsi/fastutil/objects/ObjectListIterator;": 1,
          "java/lang/Integer#rotateRight(II)I": 2,
          "java/nio/file/Files#exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/nio/file/Files#list(Ljava/nio/file/Path;)Ljava/util/stream/Stream;": 1,
          "java/nio/file/Path#getFileSystem()Ljava/nio/file/FileSystem;": 1,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 1,
          "java/nio/file/Path#resolve(Ljava/lang/String;)Ljava/nio/file/Path;": 2,
          "java/util/Queue#add(Ljava/lang/Object;)Z": 1,
          "java/util/Queue#poll()Ljava/lang/Object;": 1,
          "java/util/Queue#size()I": 1,
          "java/util/concurrent/locks/ReentrantReadWriteLock#isWriteLockedByCurrentThread()Z": 1,
          "java/util/concurrent/locks/ReentrantReadWriteLock#readLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;": 1,
          "java/util/concurrent/locks/ReentrantReadWriteLock#writeLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;": 1,
          "net/caffeinemc/mods/sodium/client/render/chunk/map/ChunkTrackerHolder#get(Lnet/minecraft/client/multiplayer/ClientLevel;)Lnet/caffeinemc/mods/sodium/client/render/chunk/map/ChunkTracker;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 7,
          "net/minecraft/client/Minecraft#getSingleplayerServer()Lnet/minecraft/client/server/IntegratedServer;": 3,
          "net/minecraft/client/multiplayer/ClientChunkCache#addedLoadedChunks()Lit/unimi/dsi/fastutil/longs/LongOpenHashSet;": 1,
          "net/minecraft/client/multiplayer/ClientChunkCache#removedLoadedChunks()Lit/unimi/dsi/fastutil/longs/LongOpenHashSet;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getLightEngine()Lnet/minecraft/world/level/lighting/LevelLightEngine;": 1,
          "net/minecraft/client/renderer/fog/FogRenderer#close()V": 1,
          "net/minecraft/client/renderer/fog/FogRenderer#endFrame()V": 1,
          "net/minecraft/core/SectionPos#asLong()J": 1,
          "net/minecraft/core/SectionPos#of(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/core/SectionPos;": 1,
          "net/minecraft/network/protocol/game/ClientboundForgetLevelChunkPacket#pos()Lnet/minecraft/world/level/ChunkPos;": 2,
          "net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket#x()I": 3,
          "net/minecraft/util/Util#getEpochMillis()J": 2,
          "net/minecraft/util/Util#ioPool()Lnet/minecraft/TracingExecutor;": 1,
          "net/minecraft/world/level/ChunkPos#getRegionX()I": 3,
          "net/minecraft/world/level/ChunkPos#getX(J)I": 1,
          "net/minecraft/world/level/ChunkPos#pack(II)J": 4,
          "net/minecraft/world/level/ChunkPos#x()I": 1,
          "net/minecraft/world/level/chunk/DataLayer#isEmpty()Z": 1,
          "net/minecraft/world/level/chunk/LevelChunk#getLevel()Lnet/minecraft/world/level/Level;": 2,
          "net/minecraft/world/level/chunk/LevelChunk#getSections()[Lnet/minecraft/world/level/chunk/LevelChunkSection;": 2,
          "net/minecraft/world/level/chunk/storage/SimpleRegionStorage#close()V": 1,
          "new it/unimi/dsi/fastutil/longs/Long2LongOpenHashMap": 1,
          "new net/minecraft/world/level/ChunkPos": 3
        },
        "runs": [
          {
            "class": "de/johni0702/minecraft/bobby/Bobby",
            "method": "getConfig",
            "desc": "()Lde/johni0702/minecraft/bobby/BobbyConfig;",
            "value": "obj#1"
          },
          {
            "class": "de/johni0702/minecraft/bobby/mixin/ClientInformationMixin",
            "method": "clampMaxValue",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/util/RegionPos",
            "method": "toLong",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/util/RegionPos",
            "method": "fromLong",
            "desc": "(J)Lde/johni0702/minecraft/bobby/util/RegionPos;",
            "value": "obj#27"
          },
          {
            "class": "de/johni0702/minecraft/bobby/util/RegionPos",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/util/RegionPos",
            "method": "z",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/VisibleChunksTracker",
            "method": "isInViewDistance",
            "desc": "(II)Z",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/Worlds$ComputeLegacyFingerprintJob",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/mixin/ClientChunkCacheMixin",
            "method": "bobby_getRealChunksTracker",
            "desc": "()Lde/johni0702/minecraft/bobby/VisibleChunksTracker;",
            "value": "obj#86"
          },
          {
            "class": "de/johni0702/minecraft/bobby/BobbyConfig",
            "method": "isNoBlockEntities",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "de/johni0702/minecraft/bobby/BobbyConfig",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "de/johni0702/minecraft/bobby/BobbyConfig",
            "method": "isDynamicMultiWorld",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/BobbyConfig",
            "method": "isTaintFakeChunks",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/BobbyConfig",
            "method": "getUnloadDelaySecs",
            "desc": "()I",
            "value": "60"
          },
          {
            "class": "de/johni0702/minecraft/bobby/BobbyConfig",
            "method": "getDeleteUnusedRegionsAfterDays",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "de/johni0702/minecraft/bobby/BobbyConfig",
            "method": "getMaxRenderDistance",
            "desc": "()I",
            "value": "32"
          },
          {
            "class": "de/johni0702/minecraft/bobby/BobbyConfig",
            "method": "getViewDistanceOverwrite",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/mixin/OptionsMixin",
            "method": "considerBobbyMaxRenderDistanceSetting",
            "desc": "(I)I",
            "value": "32"
          },
          {
            "class": "de/johni0702/minecraft/bobby/util/FlawlessFrames",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/mixin/FogRendererMixin",
            "method": "clampMaxValue",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/util/LimitedExecutor",
            "method": "activeWorkers",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/johni0702/minecraft/bobby/Worlds$World",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"0\""
          },
          {
            "class": "de/johni0702/minecraft/bobby/mixin/IntegratedServerMixin",
            "method": "bobbyViewDistanceOverwrite",
            "desc": "(I)I",
            "value": "0"
          }
        ],
        "insns": 1829
      },
      "verdict": "no",
      "summary": "only 3 of 20 listening patch sites have a hook (15%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "c2me",
      "name": "Concurrent Chunk Management Engine",
      "version": "0.4.2-alpha.0.116+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "com/ishland/c2me/C2MEMod"
        },
        {
          "kind": "preLaunch",
          "value": "com/ishland/c2me/PreLaunchHandler"
        }
      ],
      "mixin_configs": [],
      "depends": [
        "c2me-base"
      ],
      "classes": 2,
      "methods": 7,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PreLaunchEntrypoint",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 2,
        "features": {},
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 2,
        "methods": 4,
        "tried": 4,
        "completed": 0,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "java/lang/Boolean#getBoolean(Ljava/lang/String;)Z": 2,
          "java/util/stream/IntStream#range(II)Ljava/util/stream/IntStream;": 1,
          "org/slf4j/Logger#info(Ljava/lang/String;)V": 1
        },
        "runs": [],
        "insns": 38
      },
      "verdict": "no",
      "summary": "no patch sites and no content: nothing to convert"
    },
    {
      "mod_id": "capes",
      "name": "Capes",
      "version": "1.5.10+26.3",
      "license": "GNU Lesser General Public License v2.1",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/cael/capes/Capes"
        }
      ],
      "mixin_configs": [
        "capes.client.mixins.json"
      ],
      "depends": [],
      "classes": 23,
      "methods": 210,
      "sites": [
        {
          "mixin": "me/cael/capes/mixin/client/MixinCapeFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/CapeLayer"
          ],
          "handler": "fixCapeTransparency",
          "kind": "wrap-operation",
          "method": "submit*",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderTypes;entitySolid(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/rendertype/RenderType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/cael/capes/mixin/client/MixinEntityRenderDispatcher",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "getPlaceholderRenderer",
          "kind": "inject",
          "method": "getRenderer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer HEAD"
        },
        {
          "mixin": "me/cael/capes/mixin/client/MixinPlayerInfo",
          "targets": [
            "net/minecraft/client/multiplayer/PlayerInfo"
          ],
          "handler": "loadTextures",
          "kind": "inject",
          "method": "createSkinLookup",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/PlayerInfo#createSkinLookup HEAD"
        },
        {
          "mixin": "me/cael/capes/mixin/client/MixinPlayerInfo",
          "targets": [
            "net/minecraft/client/multiplayer/PlayerInfo"
          ],
          "handler": "getCapeTexture",
          "kind": "inject",
          "method": "getSkin",
          "at": "TAIL",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/PlayerInfo#getSkin TAIL"
        },
        {
          "mixin": "me/cael/capes/mixin/client/MixinSkinCustomizationScreen",
          "targets": [
            "net/minecraft/client/gui/screens/options/SkinCustomizationScreen"
          ],
          "handler": "addOptions",
          "kind": "inject",
          "method": "addOptions",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/SkinCustomizationScreen#addOptions RETURN"
        }
      ],
      "listening": 4,
      "accessors": 2,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/gui/screens/options/SkinCustomizationScreen#addOptions @RETURN": 1,
        "net/minecraft/client/multiplayer/PlayerInfo#createSkinLookup @HEAD": 1,
        "net/minecraft/client/multiplayer/PlayerInfo#getSkin @TAIL": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/renderer/rendertype/RenderTypes#entitySolid @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientCommands",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricClientCommandSource",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 23,
        "features": {
          "screen": 4,
          "renderer": 2,
          "command": 1,
          "events": 1,
          "mixin": 5
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 23,
        "methods": 137,
        "tried": 137,
        "completed": 88,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/mojang/authlib/GameProfile#id()Ljava/util/UUID;": 5,
          "com/mojang/blaze3d/platform/NativeImage#getWidth()I": 1,
          "com/mojang/blaze3d/platform/NativeImage#read(Ljava/io/InputStream;)Lcom/mojang/blaze3d/platform/NativeImage;": 1,
          "com/mojang/blaze3d/vertex/PoseStack#scale(FFF)V": 2,
          "java/lang/Integer#hashCode(I)I": 1,
          "java/lang/Object#clone()Ljava/lang/Object;": 1,
          "java/net/HttpURLConnection#connect()V": 1,
          "java/net/URI#toURL()Ljava/net/URL;": 1,
          "kotlin/Lazy#getValue()Ljava/lang/Object;": 4,
          "kotlin/Result#Companion": 2,
          "me/cael/capes/CapeType#ordinal()I": 1,
          "me/cael/capes/menu/MainMenu#mouseDragged(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z": 1,
          "net/minecraft/client/gui/screens/options/OptionsSubScreen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 2,
          "net/minecraft/client/renderer/entity/state/AvatarRenderState#<init>()V": 2,
          "net/minecraft/client/renderer/rendertype/RenderTypes#armorCutoutNoCull(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/rendertype/RenderType;": 1,
          "net/minecraft/network/chat/Component#empty()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 5,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;[Ljava/lang/Object;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "new com/google/gson/GsonBuilder": 1,
          "new it/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap": 1,
          "new net/minecraft/core/ClientAsset$ResourceTexture": 1,
          "new net/minecraft/world/entity/player/PlayerSkin": 1
        },
        "runs": [
          {
            "class": "me/cael/capes/handler/data/CosmeticaData",
            "method": "copy",
            "desc": "(Lme/cael/capes/handler/data/CosmeticaData$CapeData;)Lme/cael/capes/handler/data/CosmeticaData;",
            "value": "obj#27"
          },
          {
            "class": "me/cael/capes/handler/data/CosmeticaData",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/data/CosmeticaData",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/PlayerHandler",
            "method": "getLastFrame",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/PlayerHandler",
            "method": "getMaxFrames",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/PlayerHandler",
            "method": "getLastFrameTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/PlayerHandler",
            "method": "getHasCape",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/PlayerHandler",
            "method": "getHasElytraTexture",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/PlayerHandler",
            "method": "getHasAnimatedCape",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/PlayerHandler",
            "method": "getHasLoadedTextures",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/menu/SelectorMenu",
            "method": "getLastTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/data/MCMData",
            "method": "copy",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Lme/cael/capes/handler/data/MCMData;",
            "value": "obj#66"
          },
          {
            "class": "me/cael/capes/handler/data/MCMData",
            "method": "hashCode",
            "desc": "()I",
            "value": "108572896"
          },
          {
            "class": "me/cael/capes/handler/data/MCMData",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/CapeConfig",
            "method": "getClientCapeType",
            "desc": "()Lme/cael/capes/CapeType;",
            "value": "obj#0"
          },
          {
            "class": "me/cael/capes/CapeConfig",
            "method": "getEnableOptifine",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/cael/capes/CapeConfig",
            "method": "getEnableLabyMod",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/CapeConfig",
            "method": "getEnableMinecraftCapesMod",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/CapeConfig",
            "method": "getEnableCosmetica",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/CapeConfig",
            "method": "getEnableCloaksPlus",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/CapeConfig",
            "method": "getEnableElytraTexture",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/cael/capes/handler/data/CosmeticaData$CapeData",
            "method": "getFrames",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/data/CosmeticaData$CapeData",
            "method": "isAnimated",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/data/CosmeticaData$CapeData",
            "method": "component2",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/data/CosmeticaData$CapeData",
            "method": "copy",
            "desc": "(Ljava/lang/String;I)Lme/cael/capes/handler/data/CosmeticaData$CapeData;",
            "value": "obj#123"
          },
          {
            "class": "me/cael/capes/handler/data/CosmeticaData$CapeData",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/cael/capes/handler/PlayerHandler$Companion",
            "method": "getInstances",
            "desc": "()Ljava/util/HashMap;",
            "value": "obj#22"
          }
        ],
        "insns": 1428
      },
      "verdict": "no",
      "summary": "none of its 5 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "carryon",
      "name": "Carry On",
      "version": "2.12.2",
      "license": "GNU LGPLv3",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "tschipp/carryon/CarryOnFabricClientMod"
        },
        {
          "kind": "main",
          "value": "tschipp/carryon/CarryOnFabricMod"
        },
        {
          "kind": "modmenu",
          "value": "tschipp/carryon/compat/ModMenuCompat"
        }
      ],
      "mixin_configs": [
        "carryon.fabric.mixins.json",
        "carryon.mixins.json"
      ],
      "depends": [],
      "classes": 96,
      "methods": 564,
      "sites": [
        {
          "mixin": "tschipp/carryon/mixin/AvatarRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/player/AvatarRenderer#<init> RETURN"
        },
        {
          "mixin": "tschipp/carryon/mixin/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onPositionPassenger",
          "kind": "inject",
          "method": "positionRider",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#positionRider HEAD"
        },
        {
          "mixin": "tschipp/carryon/mixin/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onDismountPassenger",
          "kind": "inject",
          "method": "getDismountLocationForPassenger",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#getDismountLocationForPassenger HEAD"
        },
        {
          "mixin": "tschipp/carryon/mixin/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onPassengerTurned",
          "kind": "inject",
          "method": "onPassengerTurned",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#onPassengerTurned HEAD"
        },
        {
          "mixin": "tschipp/carryon/mixin/EntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderer"
          ],
          "handler": "onCreateRenderState",
          "kind": "inject",
          "method": "createRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/entity/EntityRenderer;extractRenderState(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/client/renderer/entity/state/EntityRenderState;F)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderer#createRenderState INVOKE"
        },
        {
          "mixin": "tschipp/carryon/mixin/HumanoidModelMixin",
          "targets": [
            "net/minecraft/client/model/HumanoidModel"
          ],
          "handler": "onSetupAnimations",
          "kind": "inject",
          "method": "setupAnim",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/HumanoidModel#setupAnim RETURN"
        },
        {
          "mixin": "tschipp/carryon/mixin/InventoryMixin",
          "targets": [
            "net/minecraft/world/entity/player/Inventory"
          ],
          "handler": "getFreeSlotEmptyCheck",
          "kind": "wrap-operation",
          "method": "getFreeSlot",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/NonNullList;get(I)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "tschipp/carryon/mixin/InventoryMixin",
          "targets": [
            "net/minecraft/world/entity/player/Inventory"
          ],
          "handler": "onPickBlock",
          "kind": "inject",
          "method": "addAndPickItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Inventory#addAndPickItem HEAD"
        },
        {
          "mixin": "tschipp/carryon/mixin/InventoryMixin",
          "targets": [
            "net/minecraft/world/entity/player/Inventory"
          ],
          "handler": "onPickSlot",
          "kind": "inject",
          "method": "pickSlot",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Inventory#pickSlot HEAD"
        },
        {
          "mixin": "tschipp/carryon/mixin/InventoryMixin",
          "targets": [
            "net/minecraft/world/entity/player/Inventory"
          ],
          "handler": "onSwapPaint",
          "kind": "inject",
          "method": "setSelectedSlot",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Inventory#setSelectedSlot HEAD"
        },
        {
          "mixin": "tschipp/carryon/mixin/ItemInHandRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer"
          ],
          "handler": "submitArmWithItem",
          "kind": "inject",
          "method": "submitArmWithItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem HEAD"
        },
        {
          "mixin": "tschipp/carryon/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "allowSlotSelection",
          "kind": "wrap-with-condition",
          "method": "handleKeybinds",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Inventory;setSelectedSlot(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "tschipp/carryon/mixin/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "onReadAdditionalSaveData",
          "kind": "inject",
          "method": "readAdditionalSaveData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#readAdditionalSaveData RETURN"
        },
        {
          "mixin": "tschipp/carryon/mixin/PlayerMixinFabric",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "onHurt",
          "kind": "inject",
          "method": "hurtServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#hurtServer HEAD"
        },
        {
          "mixin": "tschipp/carryon/mixin/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "init",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_init_post",
          "why": "ScreenEvent.Init.Post: a screen's widgets are built, where a mod adds its own"
        }
      ],
      "listening": 12,
      "accessors": 0,
      "hooks": {
        "screen_init_post": 1
      },
      "wanted": {
        "net/minecraft/client/model/HumanoidModel#setupAnim @RETURN": 1,
        "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem @HEAD": 1,
        "net/minecraft/client/renderer/entity/player/AvatarRenderer#<init> @RETURN": 1,
        "net/minecraft/world/entity/Entity#getDismountLocationForPassenger @HEAD": 1,
        "net/minecraft/world/entity/Entity#onPassengerTurned @HEAD": 1,
        "net/minecraft/world/entity/Entity#positionRider @HEAD": 1,
        "net/minecraft/world/entity/player/Inventory#addAndPickItem @HEAD": 1,
        "net/minecraft/world/entity/player/Inventory#pickSlot @HEAD": 1,
        "net/minecraft/world/entity/player/Inventory#setSelectedSlot @HEAD": 1,
        "net/minecraft/world/entity/player/Player#hurtServer @HEAD": 1,
        "net/minecraft/world/entity/player/Player#readAdditionalSaveData @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/client/renderer/entity/EntityRenderer#createRenderState @INVOKE": 1,
        "net/minecraft/core/NonNullList#get @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/player/Inventory#setSelectedSlot @INVOKE (wrap-with-condition)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "AttachmentRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "AttachmentRegistry$Builder",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "AttackBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "AttackEntityCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "CommonLifecycleEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CommonLifecycleEvents$TagsLoaded",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "IdentifiableResourceReloadListener",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents$Before",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceManagerHelper",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$SyncDataPackContents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLivingEntityEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLivingEntityEvents$AllowDamage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLivingEntityEvents$AllowDeath",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents$CopyFrom",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerTickEvents",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "ServerTickEvents$EndTick",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "UseBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "UseEntityCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 96,
        "features": {
          "renderer": 1,
          "command": 1,
          "network": 1,
          "events": 8,
          "mixin": 11
        },
        "events": [
          "AttackBlockCallback",
          "AttackEntityCallback",
          "Event",
          "PlayerBlockBreakEvents",
          "ServerLivingEntityEvents",
          "ServerPlayerEvents",
          "UseBlockCallback",
          "UseEntityCallback"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 96,
        "methods": 349,
        "tried": 349,
        "completed": 123,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Ltschipp/carryon/client/modeloverride/ModelOverride$Type;#clone()Ljava/lang/Object;": 1,
          "[Ltschipp/carryon/common/carry/CarryOnData$CarryType;#clone()Ljava/lang/Object;": 1,
          "[Ltschipp/carryon/config/PropertyType;#clone()Ljava/lang/Object;": 1,
          "com/google/gson/JsonObject#entrySet()Ljava/util/Set;": 1,
          "com/llamalad7/mixinextras/MixinExtrasBootstrap#init()V": 1,
          "com/mojang/math/Axis#YP": 1,
          "com/mojang/math/Axis#ZN": 1,
          "com/mojang/serialization/Codec#list(Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec;": 1,
          "java/lang/reflect/Field#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/lang/reflect/Field#getBoolean(Ljava/lang/Object;)Z": 1,
          "java/lang/reflect/Field#getDouble(Ljava/lang/Object;)D": 1,
          "java/lang/reflect/Field#getInt(Ljava/lang/Object;)I": 1,
          "java/lang/reflect/Field#getName()Ljava/lang/String;": 1,
          "java/lang/reflect/Field#set(Ljava/lang/Object;Ljava/lang/Object;)V": 1,
          "java/lang/reflect/Field#setBoolean(Ljava/lang/Object;Z)V": 1,
          "java/lang/reflect/Field#setDouble(Ljava/lang/Object;D)V": 1,
          "java/lang/reflect/Field#setInt(Ljava/lang/Object;I)V": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 6,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "me/shedaniel/clothconfig2/api/ConfigBuilder#entryBuilder()Lme/shedaniel/clothconfig2/api/ConfigEntryBuilder;": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientTickEvents#END_CLIENT_TICK": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayNetworking#send(Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload;)V": 2,
          "net/fabricmc/fabric/api/event/lifecycle/v1/CommonLifecycleEvents#TAGS_LOADED": 1,
          "net/fabricmc/fabric/api/networking/v1/ServerPlayNetworking#send(Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload;)V": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 3,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 7,
          "net/minecraft/client/renderer/entity/layers/RenderLayer#<init>(Lnet/minecraft/client/renderer/entity/RenderLayerParent;)V": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 2,
          "net/minecraft/core/registries/BuiltInRegistries#ENTITY_TYPE": 1,
          "net/minecraft/core/registries/BuiltInRegistries#REGISTRY": 1,
          "net/minecraft/nbt/CompoundTag#copy()Lnet/minecraft/nbt/CompoundTag;": 3,
          "net/minecraft/nbt/CompoundTag#putBoolean(Ljava/lang/String;Z)V": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/resources/Identifier#parse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/server/level/ServerLevel#players()Ljava/util/List;": 1,
          "net/minecraft/server/level/ServerPlayer#blockPosition()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/server/level/ServerPlayer#getMainHandItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/Entity#getYRot()F": 1,
          "net/minecraft/world/entity/Entity#isVehicle()Z": 2,
          "net/minecraft/world/entity/LivingEntity#getVehicle()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/world/entity/player/Player#getAbilities()Lnet/minecraft/world/entity/player/Abilities;": 1,
          "net/minecraft/world/entity/player/Player#getAttachedOrCreate(Lnet/fabricmc/fabric/api/attachment/v1/AttachmentType;)Ljava/lang/Object;": 1,
          "net/minecraft/world/entity/player/Player#getInventory()Lnet/minecraft/world/entity/player/Inventory;": 1,
          "net/minecraft/world/entity/player/Player#getPose()Lnet/minecraft/world/entity/Pose;": 2,
          "net/minecraft/world/entity/player/Player#getUUID()Ljava/util/UUID;": 1,
          "net/minecraft/world/entity/player/Player#getVehicle()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/world/entity/player/Player#level()Lnet/minecraft/world/level/Level;": 2,
          "net/minecraft/world/entity/player/Player#setAttached(Lnet/fabricmc/fabric/api/attachment/v1/AttachmentType;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/minecraft/world/level/block/Blocks#CHEST": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 1,
          "net/minecraft/world/level/block/state/BlockState#getProperties()Ljava/util/Collection;": 1,
          "net/minecraft/world/level/block/state/BlockState#getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;": 1,
          "new com/google/gson/JsonObject": 3,
          "new net/minecraft/nbt/CompoundTag": 1,
          "new net/minecraft/world/phys/Vec3": 2,
          "tschipp/carryon/mixin/PlayerMixin#getVehicle()Lnet/minecraft/world/entity/Entity;": 1
        },
        "runs": [
          {
            "class": "tschipp/carryon/networking/clientbound/ClientboundStartRidingOtherPlayerPacket",
            "method": "mount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/networking/clientbound/ClientboundStartRidingOtherPlayerPacket",
            "method": "rider",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/networking/clientbound/ClientboundStartRidingOtherPlayerPacket",
            "method": "ride",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/platform/FabricGamestagesHelper",
            "method": "hasStage",
            "desc": "(Lnet/minecraft/world/entity/player/Player;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket",
            "method": "iden",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket",
            "method": "ride",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/networking/serverbound/ServerboundCarryKeyPressedPacket",
            "method": "pressed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/common/scripting/CarryOnScript",
            "method": "priority",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/common/scripting/CarryOnScript",
            "method": "overrideChecks",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/mixin/PlayerRenderStateMixin",
            "method": "getRenderWidth",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "tschipp/carryon/client/modeloverride/ModelOverrideHandler",
            "method": "getModelOverride",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/nbt/CompoundTag;)Ljava/util/Optional;",
            "value": "obj#145"
          },
          {
            "class": "tschipp/carryon/mixin/EntityMixin",
            "method": "onStartRidingCheck",
            "desc": "(ZLnet/minecraft/world/entity/Entity;Z)Z",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/common/pickupcondition/PickupConditionHandler",
            "method": "getPickupCondition",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Ljava/util/Optional;",
            "value": "obj#173"
          },
          {
            "class": "tschipp/carryon/common/pickupcondition/PickupConditionHandler",
            "method": "getPickupCondition",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Ljava/util/Optional;",
            "value": "obj#175"
          },
          {
            "class": "tschipp/carryon/common/scripting/Matchables$NBTCondition",
            "method": "matches",
            "desc": "(Lnet/minecraft/nbt/CompoundTag;)Z",
            "value": "1"
          },
          {
            "class": "tschipp/carryon/common/scripting/Matchables$NBTCondition",
            "method": "matches",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "tschipp/carryon/common/carry/CarryOnData",
            "method": "getActiveScript",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#192"
          },
          {
            "class": "tschipp/carryon/common/carry/CarryOnData",
            "method": "isCarrying",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "tschipp/carryon/common/carry/CarryOnData",
            "method": "isCarrying",
            "desc": "(Ltschipp/carryon/common/carry/CarryOnData$CarryType;)Z",
            "value": "1"
          },
          {
            "class": "tschipp/carryon/common/carry/CarryOnData",
            "method": "isKeyPressed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/common/carry/CarryOnData",
            "method": "getSelected",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/CarryOnCommon",
            "method": "onTryBreakBlock",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "tschipp/carryon/CarryOnCommon",
            "method": "onAttackedByPlayer",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "tschipp/carryon/mixin/CarryOnMixinConfigPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "tschipp/carryon/config/AnnotationData",
            "method": "min",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/config/AnnotationData",
            "method": "max",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/config/AnnotationData",
            "method": "minD",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/config/AnnotationData",
            "method": "maxD",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/common/scripting/CarryOnScript$ScriptRender",
            "method": "renderLeftArm",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "tschipp/carryon/common/scripting/CarryOnScript$ScriptRender",
            "method": "renderRightArm",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 1719
      },
      "verdict": "no",
      "summary": "only 1 of 12 listening patch sites have a hook (8%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "chat_heads",
      "name": "Chat Heads",
      "version": "1.3.2",
      "license": "MPL-2.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dzwdz/chat_heads/fabric/ChatHeadsFabric"
        },
        {
          "kind": "modmenu",
          "value": "dzwdz/chat_heads/fabric/config/ModMenuImpl"
        }
      ],
      "mixin_configs": [
        "chat_heads.mixins.json"
      ],
      "depends": [],
      "classes": 50,
      "methods": 253,
      "sites": [
        {
          "mixin": "dzwdz/chat_heads/mixin/AbstractConfigScreenQuitSaveConsumerMixin",
          "targets": [
            "me/shedaniel/clothconfig2/gui/AbstractConfigScreen$QuitSaveConsumer"
          ],
          "handler": "chatheads$resetConfig",
          "kind": "inject",
          "method": "accept",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/shedaniel/clothconfig2/gui/AbstractConfigScreen$QuitSaveConsumer#accept HEAD"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentInnerMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent$1"
          ],
          "handler": "chatheads$offsetChatMessage",
          "kind": "modify-args",
          "method": "accept",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess;handleMessage(IFLnet/minecraft/util/FormattedCharSequence;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-args)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentInnerMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent$1"
          ],
          "handler": "chatheads$undoChatMessageOffset",
          "kind": "inject",
          "method": "accept",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess;handleMessage(IFLnet/minecraft/util/FormattedCharSequence;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent$1#accept INVOKE"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentInnerMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent$1"
          ],
          "handler": "chatheads$offsetTagIcon",
          "kind": "inject",
          "method": "accept",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess;handleTagIcon(IIZLnet/minecraft/client/multiplayer/chat/GuiMessageTag;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag$Icon;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent$1#accept INVOKE"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentInnerMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent$1"
          ],
          "handler": "chatheads$undoTagIconOffset",
          "kind": "inject",
          "method": "accept",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess;handleTagIcon(IIZLnet/minecraft/client/multiplayer/chat/GuiMessageTag;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag$Icon;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent$1#accept INVOKE"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$captureGuiGraphics",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$noGraphics",
          "kind": "inject",
          "method": "captureClickableText",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#captureClickableText HEAD"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$captureChatGraphicsAccess",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$fixTextOverflow",
          "kind": "modify-arg",
          "method": "lambda$extractRenderState$1",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess;fill(IIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$forgetGraphics",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#extractRenderState RETURN"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$nonRefreshingPath",
          "kind": "inject",
          "method": "addMessage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addMessageToDisplayQueue(Lnet/minecraft/client/multiplayer/chat/GuiMessage;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#addMessage INVOKE"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$transferMessageOwner",
          "kind": "modify-arg",
          "method": "refreshTrimmedMessages",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addMessageToDisplayQueue(Lnet/minecraft/client/multiplayer/chat/GuiMessage;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$finishedRefreshing",
          "kind": "inject",
          "method": "refreshTrimmedMessages",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addMessageToDisplayQueue(Lnet/minecraft/client/multiplayer/chat/GuiMessage;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#refreshTrimmedMessages INVOKE"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin2",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$prependChatHead",
          "kind": "modify-arg",
          "method": "addMessage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/chat/GuiMessage;<init>(ILnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageSource;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin2",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$transferMessageOwner",
          "kind": "inject",
          "method": "addMessageToDisplayQueue",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#addMessageToDisplayQueue HEAD"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin2",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$setOwner",
          "kind": "modify-arg",
          "method": "addMessage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addMessageToDisplayQueue(Lnet/minecraft/client/multiplayer/chat/GuiMessage;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin2",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$setOwner2",
          "kind": "modify-arg",
          "method": "addMessage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addMessageToQueue(Lnet/minecraft/client/multiplayer/chat/GuiMessage;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentMixin2",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$forgetSender",
          "kind": "inject",
          "method": "addMessage",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#addMessage RETURN"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentRenderMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$isInsideChat",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatComponentRenderMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "chatheads$isOutsideChat",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#extractRenderState RETURN"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "chatheads$handleAddedPlayerMessage",
          "kind": "modify-arg",
          "method": "showMessageToPlayer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addPlayerMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "chatheads$handleAddedDisguisedMessage",
          "kind": "modify-arg",
          "method": "lambda$handleDisguisedChatMessage$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addPlayerMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ChatListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "chatheads$handleAddedSystemMessage",
          "kind": "modify-arg",
          "method": "handleSystemMessage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addServerSystemMessage(Lnet/minecraft/network/chat/Component;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "chatheads$captureSenderInfo",
          "kind": "inject",
          "method": "handlePlayerChat",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/chat/ChatListener;handlePlayerChatMessage(Lnet/minecraft/network/chat/PlayerChatMessage;Lcom/mojang/authlib/GameProfile;Lnet/minecraft/network/chat/ChatType$Bound;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "chatheads$rememberSenderInfo",
          "kind": "modify-arg",
          "method": "handlePlayerChat",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/chat/ChatListener;handlePlayerChatMessage(Lnet/minecraft/network/chat/PlayerChatMessage;Lcom/mojang/authlib/GameProfile;Lnet/minecraft/network/chat/ChatType$Bound;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/CommandSuggestionSuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "chatheads$captureGuiGraphics",
          "kind": "modify-variable",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/CommandSuggestionSuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "chatheads$fixOutOfBoundChatHeads",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#<init> RETURN"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/CommandSuggestionSuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "chatheads$captureSuggestion",
          "kind": "modify-variable",
          "method": "extractRenderState",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/CommandSuggestionSuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "chatheads$enlargeBackground",
          "kind": "modify-arg",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;fill(IIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/CommandSuggestionSuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "chatheads$renderChatHead",
          "kind": "modify-arg",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;text(Lnet/minecraft/client/gui/Font;Ljava/lang/String;III)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "chatheads$resetServerKnowledge",
          "kind": "inject",
          "method": "initiateServerboundPlayConnection",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/Connection#initiateServerboundPlayConnection HEAD"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "chatheads$resetServerKnowledge",
          "kind": "inject",
          "method": "initiateServerboundPlayConnection",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/Connection#initiateServerboundPlayConnection HEAD"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/DownloadedPackSourceMixin",
          "targets": [
            "net/minecraft/client/resources/server/DownloadedPackSource"
          ],
          "handler": "chatheads$checkForDisableResource",
          "kind": "inject",
          "method": "loadRequestedPacks",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/server/DownloadedPackSource#loadRequestedPacks RETURN"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/GuiMessageLineMixin",
          "targets": [
            "net/minecraft/client/multiplayer/chat/GuiMessage$Line"
          ],
          "handler": "chatheads$setOwnerForFirstLine",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/GuiMessage$Line#<init> TAIL"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/PlainTextRenderableMixin",
          "targets": [
            "net/minecraft/client/gui/font/PlainTextRenderable"
          ],
          "handler": "chatheads$moveDownWhenShadowDisabled",
          "kind": "modify-arg",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/font/PlainTextRenderable;renderSprite(Lorg/joml/Matrix4fc;Lcom/mojang/blaze3d/vertex/VertexConsumer;IFFFI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
          "targets": [
            "net/minecraft/client/gui/font/PlayerGlyphProvider$Instance"
          ],
          "handler": "leftHead",
          "kind": "modify-arg",
          "method": "renderSprite",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/font/PlayerGlyphProvider$Instance;renderQuad(Lorg/joml/Matrix4fc;Lcom/mojang/blaze3d/vertex/VertexConsumer;IFFFFFIFFIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
          "targets": [
            "net/minecraft/client/gui/font/PlayerGlyphProvider$Instance"
          ],
          "handler": "rightHead",
          "kind": "modify-arg",
          "method": "renderSprite",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/font/PlayerGlyphProvider$Instance;renderQuad(Lorg/joml/Matrix4fc;Lcom/mojang/blaze3d/vertex/VertexConsumer;IFFFFFIFFIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
          "targets": [
            "net/minecraft/client/gui/font/PlayerGlyphProvider$Instance"
          ],
          "handler": "rightHat",
          "kind": "modify-arg",
          "method": "renderSprite",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/font/PlayerGlyphProvider$Instance;renderQuad(Lorg/joml/Matrix4fc;Lcom/mojang/blaze3d/vertex/VertexConsumer;IFFFFFIFFIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
          "targets": [
            "net/minecraft/client/gui/font/PlayerGlyphProvider$Instance"
          ],
          "handler": "topHat",
          "kind": "modify-arg",
          "method": "renderSprite",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/font/PlayerGlyphProvider$Instance;renderQuad(Lorg/joml/Matrix4fc;Lcom/mojang/blaze3d/vertex/VertexConsumer;IFFFFFIFFIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
          "targets": [
            "net/minecraft/client/gui/font/PlayerGlyphProvider$Instance"
          ],
          "handler": "bottomHat",
          "kind": "modify-arg",
          "method": "renderSprite",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/font/PlayerGlyphProvider$Instance;renderQuad(Lorg/joml/Matrix4fc;Lcom/mojang/blaze3d/vertex/VertexConsumer;IFFFFFIFFIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/PlayerSpriteMixin",
          "targets": [
            "net/minecraft/network/chat/contents/objects/PlayerSprite"
          ],
          "handler": "chatheads$hideInLog",
          "kind": "inject",
          "method": "defaultFallback",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/chat/contents/objects/PlayerSprite#defaultFallback HEAD"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/SkinTextureDownloaderMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SkinTextureDownloader"
          ],
          "handler": "chatheads$registerBlendedHeadTexture",
          "kind": "modify-arg",
          "method": "registerTextureInManager",
          "at": "INVOKE",
          "at_target": "Ljava/util/concurrent/CompletableFuture;supplyAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/compat/chatpatches/ChatUtilMixin",
          "targets": [
            "obro1961/chatpatches/util/ChatUtil"
          ],
          "handler": "chatheads$prependChatHead",
          "kind": "modify-arg",
          "method": "modifyMessage",
          "at": "INVOKE",
          "at_target": "Lobro1961/chatpatches/ChatLog;addMessage(Lnet/minecraft/network/chat/Component;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/render_targets/BookViewScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/BookViewScreen"
          ],
          "handler": "chatheads$isInsideBook",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/BookViewScreen#extractRenderState HEAD"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/render_targets/BookViewScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/BookViewScreen"
          ],
          "handler": "chatheads$isOutsideBook",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/BookViewScreen#extractRenderState RETURN"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/render_targets/ClothConfigScreenMixin",
          "targets": [
            "me/shedaniel/clothconfig2/gui/ClothConfigScreen"
          ],
          "handler": "chatheads$isConfigScreen",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/shedaniel/clothconfig2/gui/ClothConfigScreen#extractRenderState HEAD"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/render_targets/ClothConfigScreenMixin",
          "targets": [
            "me/shedaniel/clothconfig2/gui/ClothConfigScreen"
          ],
          "handler": "chatheads$isOutsideConfigScreen",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/shedaniel/clothconfig2/gui/ClothConfigScreen#extractRenderState RETURN"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/render_targets/GuiRendererMixin",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "chatheads$isInsideGui",
          "kind": "inject",
          "method": "prepare",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#prepare HEAD"
        },
        {
          "mixin": "dzwdz/chat_heads/mixin/render_targets/GuiRendererMixin",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "chatheads$isOutsideGui",
          "kind": "inject",
          "method": "prepare",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#prepare RETURN"
        }
      ],
      "listening": 21,
      "accessors": 0,
      "hooks": {
        "hud": 3,
        "net_from_server": 1
      },
      "wanted": {
        "me/shedaniel/clothconfig2/gui/AbstractConfigScreen$QuitSaveConsumer#accept @HEAD": 1,
        "me/shedaniel/clothconfig2/gui/ClothConfigScreen#extractRenderState @HEAD": 1,
        "me/shedaniel/clothconfig2/gui/ClothConfigScreen#extractRenderState @RETURN": 1,
        "net/minecraft/client/gui/components/ChatComponent#addMessage @RETURN": 1,
        "net/minecraft/client/gui/components/ChatComponent#addMessageToDisplayQueue @HEAD": 1,
        "net/minecraft/client/gui/components/ChatComponent#captureClickableText @HEAD": 1,
        "net/minecraft/client/gui/components/ChatComponent#extractRenderState @RETURN": 2,
        "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#<init> @RETURN": 1,
        "net/minecraft/client/gui/render/GuiRenderer#prepare @HEAD": 1,
        "net/minecraft/client/gui/render/GuiRenderer#prepare @RETURN": 1,
        "net/minecraft/client/gui/screens/inventory/BookViewScreen#extractRenderState @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/BookViewScreen#extractRenderState @RETURN": 1,
        "net/minecraft/client/multiplayer/chat/GuiMessage$Line#<init> @TAIL": 1,
        "net/minecraft/client/resources/server/DownloadedPackSource#loadRequestedPacks @RETURN": 1,
        "net/minecraft/network/Connection#initiateServerboundPlayConnection @HEAD": 2,
        "net/minecraft/network/chat/contents/objects/PlayerSprite#defaultFallback @HEAD": 1
      },
      "wanted_calls": {
        "java/util/concurrent/CompletableFuture#supplyAsync @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#fill @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#text @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/components/ChatComponent#addMessage @INVOKE": 1,
        "net/minecraft/client/gui/components/ChatComponent#addMessageToDisplayQueue @INVOKE (modify-arg)": 2,
        "net/minecraft/client/gui/components/ChatComponent#addMessageToQueue @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/components/ChatComponent#addPlayerMessage @INVOKE (modify-arg)": 2,
        "net/minecraft/client/gui/components/ChatComponent#addServerSystemMessage @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/components/ChatComponent#refreshTrimmedMessages @INVOKE": 1,
        "net/minecraft/client/gui/components/ChatComponent$1#accept @INVOKE": 3,
        "net/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess#fill @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess#handleMessage @INVOKE (modify-args)": 1,
        "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#extractRenderState @HEAD (modify-variable)": 1,
        "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#extractRenderState @STORE (modify-variable)": 1,
        "net/minecraft/client/gui/font/PlainTextRenderable#renderSprite @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/font/PlayerGlyphProvider$Instance#renderQuad @INVOKE (modify-arg)": 5,
        "net/minecraft/client/multiplayer/chat/ChatListener#handlePlayerChatMessage @INVOKE (modify-arg)": 1,
        "net/minecraft/client/multiplayer/chat/GuiMessage#<init> @INVOKE (modify-arg)": 1,
        "obro1961/chatpatches/ChatLog#addMessage @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 50,
        "features": {
          "screen": 1,
          "command": 1,
          "mixin": 22
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 50,
        "methods": 118,
        "tried": 118,
        "completed": 50,
        "handlers_tried": 4,
        "handlers_completed": 3,
        "missing": {
          "[Ldzwdz/chat_heads/config/RenderPosition;#clone()Ljava/lang/Object;": 1,
          "[Ldzwdz/chat_heads/config/SenderDetection;#clone()Ljava/lang/Object;": 1,
          "com/mojang/blaze3d/font/GlyphInfo#getAdvance()F": 1,
          "com/mojang/blaze3d/platform/NativeImage#getWidth()I": 1,
          "java/lang/Character#isLetterOrDigit(I)Z": 1,
          "java/lang/String#offsetByCodePoints(II)I": 2,
          "java/lang/StringBuilder#isEmpty()Z": 1,
          "me/shedaniel/autoconfig/ConfigHolder#save()V": 2,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/Screen#init()V": 1,
          "net/minecraft/client/multiplayer/ClientPacketListener#getOnlinePlayers()Ljava/util/Collection;": 3,
          "net/minecraft/client/multiplayer/PlayerInfo#getProfile()Lcom/mojang/authlib/GameProfile;": 2,
          "net/minecraft/client/multiplayer/PlayerInfo#getTabListDisplayName()Lnet/minecraft/network/chat/Component;": 1,
          "net/minecraft/client/multiplayer/chat/GuiMessage$Line#content()Lnet/minecraft/util/FormattedCharSequence;": 1,
          "net/minecraft/network/chat/Component#empty()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Component#getContents()Lnet/minecraft/network/chat/ComponentContents;": 1,
          "net/minecraft/network/chat/Component#getString()Ljava/lang/String;": 1,
          "net/minecraft/network/chat/Component#getStyle()Lnet/minecraft/network/chat/Style;": 2,
          "net/minecraft/network/chat/Style#EMPTY": 1,
          "net/minecraft/network/chat/contents/TranslatableContents#getArgs()[Ljava/lang/Object;": 1,
          "net/minecraft/network/protocol/game/ClientboundPlayerChatPacket#sender()Ljava/util/UUID;": 1,
          "net/minecraft/resources/Identifier#getPath()Ljava/lang/String;": 1,
          "net/minecraft/util/ARGB#alpha(I)I": 1,
          "new net/minecraft/network/chat/contents/objects/PlayerSprite": 3
        },
        "runs": [
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "renderPosition",
            "desc": "()Ldzwdz/chat_heads/config/RenderPosition;",
            "value": "obj#2"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "offsetNonPlayerText",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "senderDetection",
            "desc": "()Ldzwdz/chat_heads/config/SenderDetection;",
            "value": "obj#5"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "smartHeuristics",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "handleSystemMessages",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "drawShadow",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "getNameAliases",
            "desc": "()Ljava/util/Map;",
            "value": "obj#20"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "detectNameAliases",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "threeDeeNess",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigData",
            "method": "rightPadding",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
            "method": "leftHead",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
            "method": "rightHead",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
            "method": "rightHat",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
            "method": "topHat",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dzwdz/chat_heads/mixin/PlayerGlyphProviderInstanceMixin",
            "method": "bottomHat",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dzwdz/chat_heads/HeadData",
            "method": "of",
            "desc": "(Lnet/minecraft/client/multiplayer/PlayerInfo;)Ldzwdz/chat_heads/HeadData;",
            "value": "obj#40"
          },
          {
            "class": "dzwdz/chat_heads/HeadData",
            "method": "hasHeadPosition",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/HeadData",
            "method": "codePointIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dzwdz/chat_heads/ComponentProcessor$FoundTranslatable",
            "method": "index",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "architectury_inject_chat_heads_common_0861fd5b1cb04b408856880364d8cc10_ba07b68004e629c2f637939c79c10a4425780d4f2d91648b2a9219beae2f5ec0chat_heads132devjar/PlatformMethods",
            "method": "getCurrentTarget",
            "desc": "()Ljava/lang/String;",
            "value": "\"fabric\""
          },
          {
            "class": "dzwdz/chat_heads/MixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/ComponentProcessor$FoundLiteralSequence",
            "method": "startIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dzwdz/chat_heads/ComponentProcessor$FoundLiteralSequence",
            "method": "endIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "renderPosition",
            "desc": "()Ldzwdz/chat_heads/config/RenderPosition;",
            "value": "obj#2"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "offsetNonPlayerText",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "senderDetection",
            "desc": "()Ldzwdz/chat_heads/config/SenderDetection;",
            "value": "obj#5"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "smartHeuristics",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "handleSystemMessages",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "getNameAliases",
            "desc": "()Ljava/util/Map;",
            "value": "obj#102"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "detectNameAliases",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "rightPadding",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "drawShadow",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dzwdz/chat_heads/config/ChatHeadsConfigDefaults",
            "method": "threeDeeNess",
            "desc": "()F",
            "value": "0f"
          }
        ],
        "insns": 1131
      },
      "verdict": "no",
      "summary": "only 4 of 21 listening patch sites have a hook (19%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "chatanimation",
      "name": "ChatAnimation",
      "version": "1.3.5",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "main",
          "value": "com/ezzenix/chatanimation/ChatAnimation"
        }
      ],
      "mixin_configs": [
        "chatanimation.mixins.json"
      ],
      "depends": [],
      "classes": 7,
      "methods": 34,
      "sites": [
        {
          "mixin": "com/ezzenix/chatanimation/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "addMessage",
          "kind": "inject",
          "method": "addMessage",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#addMessage TAIL"
        },
        {
          "mixin": "com/ezzenix/chatanimation/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "wrapRender",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;extractRenderState(Lnet/minecraft/client/gui/components/ChatComponent$ChatGraphicsAccess;IILnet/minecraft/client/gui/components/ChatComponent$DisplayMode;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/ezzenix/chatanimation/mixin/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "modifyChatOpacity",
          "kind": "modify-variable",
          "method": "forEachLine",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/ezzenix/chatanimation/mixin/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "onClosed",
          "kind": "inject",
          "method": "removed",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ChatScreen#removed HEAD"
        },
        {
          "mixin": "com/ezzenix/chatanimation/mixin/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "wrapBackgroundFill",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;fill(IIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/ezzenix/chatanimation/mixin/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "wrapScreenRender",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/ezzenix/chatanimation/mixin/GuiMessageLineMixin",
          "targets": [
            "net/minecraft/client/multiplayer/chat/GuiMessage$Line"
          ],
          "handler": "afterInit",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/GuiMessage$Line#<init> TAIL"
        },
        {
          "mixin": "com/ezzenix/chatanimation/mixin/GuiMessageLineMixin",
          "targets": [
            "net/minecraft/client/multiplayer/chat/GuiMessage$Line"
          ],
          "handler": "injectIndicator",
          "kind": "inject",
          "method": "tag",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/GuiMessage$Line#tag HEAD"
        }
      ],
      "listening": 4,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/gui/components/ChatComponent#addMessage @TAIL": 1,
        "net/minecraft/client/gui/screens/ChatScreen#removed @HEAD": 1,
        "net/minecraft/client/multiplayer/chat/GuiMessage$Line#<init> @TAIL": 1,
        "net/minecraft/client/multiplayer/chat/GuiMessage$Line#tag @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/gui/GuiGraphicsExtractor#fill @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/components/ChatComponent#extractRenderState @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/components/ChatComponent#forEachLine @STORE (modify-variable)": 1,
        "net/minecraft/client/gui/screens/Screen#extractRenderState @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 7,
        "features": {
          "mixin": 3
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 7,
        "methods": 14,
        "tried": 14,
        "completed": 6,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/ezzenix/chatanimation/config/EasingStyle;#clone()Ljava/lang/Object;": 1,
          "java/lang/Runnable#run()V": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#setReturnValue(Ljava/lang/Object;)V": 1
        },
        "runs": [
          {
            "class": "com/ezzenix/chatanimation/mixin/ChatComponentMixin",
            "method": "getLineHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/ezzenix/chatanimation/mixin/ChatComponentMixin",
            "method": "calculateDisplacement",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/ezzenix/chatanimation/ChatAnimation",
            "method": "getOpacityFactor",
            "desc": "(F)D",
            "value": "0"
          }
        ],
        "insns": 178
      },
      "verdict": "no",
      "summary": "none of its 8 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "cherishedworlds",
      "name": "Cherished Worlds",
      "version": "18.0.0+26.3",
      "license": "LGPL-3.0-or-later",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/illusivesoulworks/cherishedworlds/CherishedWorldsFabricMod"
        },
        {
          "kind": "spectrelib-config",
          "value": "com/illusivesoulworks/cherishedworlds/CherishedWorldsConfigInitializer"
        }
      ],
      "mixin_configs": [
        "cherishedworlds.mixins.json"
      ],
      "depends": [],
      "classes": 31,
      "methods": 119,
      "sites": [
        {
          "mixin": "com/illusivesoulworks/cherishedworlds/mixin/core/MixinJoinMultiplayerScreen",
          "targets": [
            "net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen"
          ],
          "handler": "cherishedworlds$initButtons",
          "kind": "inject",
          "method": "onSelectedChange",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen#onSelectedChange TAIL"
        },
        {
          "mixin": "com/illusivesoulworks/cherishedworlds/mixin/core/MixinLevelSummary",
          "targets": [
            "net/minecraft/world/level/storage/LevelSummary"
          ],
          "handler": "cherishedworlds$canDelete",
          "kind": "inject",
          "method": "canDelete",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/LevelSummary#canDelete RETURN"
        },
        {
          "mixin": "com/illusivesoulworks/cherishedworlds/mixin/core/MixinManageServerScreen",
          "targets": [
            "net/minecraft/client/gui/screens/ManageServerScreen"
          ],
          "handler": "cherishedworlds$onAdd",
          "kind": "inject",
          "method": "onAdd",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ManageServerScreen#onAdd HEAD"
        },
        {
          "mixin": "com/illusivesoulworks/cherishedworlds/mixin/core/MixinServerSelectionList",
          "targets": [
            "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList"
          ],
          "handler": "cherishedworlds$updateOnlineServers",
          "kind": "inject",
          "method": "updateOnlineServers",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.refreshEntries()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/multiplayer/ServerSelectionList#updateOnlineServers INVOKE"
        },
        {
          "mixin": "com/illusivesoulworks/cherishedworlds/mixin/core/MixinServerSelectionList",
          "targets": [
            "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList"
          ],
          "handler": "cherishedworlds$updateNetworkServers",
          "kind": "inject",
          "method": "updateNetworkServers",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.refreshEntries()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/multiplayer/ServerSelectionList#updateNetworkServers INVOKE"
        },
        {
          "mixin": "com/illusivesoulworks/cherishedworlds/mixin/core/MixinServerSelectionListEntry",
          "targets": [
            "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$OnlineServerEntry"
          ],
          "handler": "cherishedworld$swapServers",
          "kind": "inject",
          "method": "swap",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$OnlineServerEntry#swap HEAD"
        },
        {
          "mixin": "com/illusivesoulworks/cherishedworlds/mixin/core/MixinWorldOpenFlows",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows"
          ],
          "handler": "cherishedworlds$openWorldCheckVersionCompatibility",
          "kind": "wrap-operation",
          "method": "openWorldCheckVersionCompatibility",
          "at": "INVOKE",
          "at_target": "net/minecraft/world/level/storage/LevelSummary.backupStatus ()Lnet/minecraft/world/level/storage/LevelSummary$BackupStatus;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/illusivesoulworks/cherishedworlds/mixin/core/MixinWorldOpenFlows",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows"
          ],
          "handler": "cherishedworlds$createLevelFromExistingSettings",
          "kind": "inject",
          "method": "createLevelFromExistingSettings",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#createLevelFromExistingSettings HEAD"
        },
        {
          "mixin": "com/illusivesoulworks/cherishedworlds/mixin/core/MixinWorldSelectionList",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList"
          ],
          "handler": "cherishedworlds$sortLevels",
          "kind": "inject",
          "method": "fillLevels",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/gui/screens/worldselection/WorldSelectionList.setSelected(Lnet/minecraft/client/gui/screens/worldselection/WorldSelectionList$Entry;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldSelectionList#fillLevels INVOKE"
        }
      ],
      "listening": 5,
      "accessors": 7,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/gui/screens/ManageServerScreen#onAdd @HEAD": 1,
        "net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen#onSelectedChange @TAIL": 1,
        "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$OnlineServerEntry#swap @HEAD": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#createLevelFromExistingSettings @HEAD": 1,
        "net/minecraft/world/level/storage/LevelSummary#canDelete @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList#updateNetworkServers @INVOKE": 1,
        "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList#updateOnlineServers @INVOKE": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#openWorldCheckVersionCompatibility @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldSelectionList#fillLevels @INVOKE": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Screens",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 31,
        "features": {
          "screen": 5,
          "events": 1,
          "mixin": 12
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 31,
        "methods": 48,
        "tried": 48,
        "completed": 16,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/illusivesoulworks/cherishedworlds/CherishedWorldsConfig$BackupType;#clone()Ljava/lang/Object;": 1,
          "com/illusivesoulworks/cherishedworlds/client/favorites/AbstractFavoritesListWidget#isActive()Z": 2,
          "com/illusivesoulworks/cherishedworlds/client/favorites/AbstractFavoritesWidget#getRectangle()Lnet/minecraft/client/gui/navigation/ScreenRectangle;": 1,
          "com/illusivesoulworks/cherishedworlds/client/favorites/impl/FavoriteCreateWorldWidget#isActive()Z": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 2,
          "java/util/Set#remove(Ljava/lang/Object;)Z": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 2,
          "net/minecraft/client/gui/components/WidgetTooltipHolder#set(Lnet/minecraft/client/gui/components/Tooltip;)V": 1,
          "net/minecraft/client/gui/components/WidgetTooltipHolder#setDelay(Ljava/time/Duration;)V": 1,
          "net/minecraft/world/level/storage/LevelSummary#getLevelId()Ljava/lang/String;": 1
        },
        "runs": [
          {
            "class": "com/illusivesoulworks/cherishedworlds/client/favorites/AbstractFavoritesListWidget",
            "method": "shouldTakeFocusAfterInteraction",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/illusivesoulworks/cherishedworlds/client/favorites/AbstractFavoritesListWidget",
            "method": "isFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/illusivesoulworks/cherishedworlds/mixin/CherishedWorldsMixinHooks",
            "method": "editDeleteButton",
            "desc": "(Lnet/minecraft/client/gui/screens/multiplayer/ServerSelectionList$Entry;Z)Z",
            "value": "0"
          }
        ],
        "insns": 275
      },
      "verdict": "no",
      "summary": "none of its 9 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "chunky",
      "name": "Chunky",
      "version": "1.5.66",
      "license": "GPLv3",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "org/popcraft/chunky/ChunkyFabric"
        }
      ],
      "mixin_configs": [
        "chunky.mixins.json"
      ],
      "depends": [],
      "classes": 171,
      "methods": 1138,
      "sites": [
        {
          "mixin": "org/popcraft/chunky/mixin/ChunkHolderMixin",
          "targets": [
            "net/minecraft/server/level/ChunkHolder"
          ],
          "handler": "boostUnloadedPriority",
          "kind": "modify-arg",
          "method": "updateFutures",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkHolder$LevelChangeListener;onLevelChange(Lnet/minecraft/world/level/ChunkPos;Ljava/util/function/IntSupplier;ILjava/util/function/IntConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/popcraft/chunky/mixin/ChunkMapPatchMixin",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "suppressRaceCondition",
          "kind": "wrap-with-condition",
          "method": "onLevelChange",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkTaskDispatcher;onLevelChange(Lnet/minecraft/world/level/ChunkPos;Ljava/util/function/IntSupplier;ILjava/util/function/IntConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "org/popcraft/chunky/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "tickPaused",
          "kind": "inject",
          "method": "tickServer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/MinecraftServer;tickConnection()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#tickServer INVOKE"
        },
        {
          "mixin": "org/popcraft/chunky/mixin/client/IntegratedServerMixin",
          "targets": [
            "net/minecraft/client/server/IntegratedServer"
          ],
          "handler": "tickPaused",
          "kind": "inject",
          "method": "tickServer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/server/IntegratedServer;tickPaused()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/server/IntegratedServer#tickServer INVOKE"
        }
      ],
      "listening": 0,
      "accessors": 10,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/server/IntegratedServer#tickServer @INVOKE": 1,
        "net/minecraft/server/MinecraftServer#tickServer @INVOKE": 1,
        "net/minecraft/server/level/ChunkHolder$LevelChangeListener#onLevelChange @INVOKE (modify-arg)": 1,
        "net/minecraft/server/level/ChunkTaskDispatcher#onLevelChange @INVOKE (wrap-with-condition)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarted",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopping",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        }
      ],
      "code": {
        "classes": 171,
        "features": {
          "command": 1,
          "events": 1,
          "mixin": 9
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 171,
        "methods": 678,
        "tried": 600,
        "completed": 327,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lorg/popcraft/chunky/api/event/task/GenerationCompleteEvent$Reason;#clone()Ljava/lang/Object;": 1,
          "[Lorg/popcraft/chunky/util/RegionStatusReader$ChunkState;#clone()Ljava/lang/Object;": 1,
          "[Lorg/popcraft/chunky/util/TaskLoader$TaskProperty;#clone()Ljava/lang/Object;": 2,
          "com/mojang/brigadier/builder/LiteralArgumentBuilder#literal(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;": 2,
          "com/mojang/brigadier/builder/RequiredArgumentBuilder#argument(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder;": 2,
          "com/mojang/brigadier/suggestion/SuggestionsBuilder#buildFuture()Ljava/util/concurrent/CompletableFuture;": 1,
          "java/io/DataInput#readByte()B": 11,
          "java/io/DataInput#readDouble()D": 1,
          "java/io/DataInput#readFloat()F": 1,
          "java/io/DataInput#readInt()I": 7,
          "java/io/DataInput#readLong()J": 1,
          "java/io/DataInput#readShort()S": 1,
          "java/io/DataInput#readUTF()Ljava/lang/String;": 1,
          "java/io/DataInput#readUnsignedShort()I": 2,
          "java/io/DataInput#skipBytes(I)I": 12,
          "java/io/DataOutput#writeByte(I)V": 2,
          "java/io/DataOutput#writeDouble(D)V": 1,
          "java/io/DataOutput#writeFloat(F)V": 1,
          "java/io/DataOutput#writeInt(I)V": 1,
          "java/io/DataOutput#writeLong(J)V": 1,
          "java/io/DataOutput#writeShort(I)V": 1,
          "java/io/DataOutput#writeUTF(Ljava/lang/String;)V": 1,
          "java/io/InputStream#available()I": 1,
          "java/io/InputStream#close()V": 1,
          "java/io/InputStream#read([BII)I": 2,
          "java/lang/Character#isDigit(C)Z": 1,
          "java/lang/Character#toLowerCase(C)C": 4,
          "java/lang/Class#forName(Ljava/lang/String;)Ljava/lang/Class;": 2,
          "java/lang/Class#getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;": 2,
          "java/lang/Enum#valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;": 1,
          "java/lang/Thread#currentThread()Ljava/lang/Thread;": 2,
          "java/nio/file/Files#createDirectories(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;": 1,
          "java/nio/file/Path#getFileName()Ljava/nio/file/Path;": 1,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 2,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 7,
          "java/util/List#of()Ljava/util/List;": 10,
          "java/util/Map#of()Ljava/util/Map;": 1,
          "java/util/Queue#add(Ljava/lang/Object;)Z": 1,
          "java/util/Queue#isEmpty()Z": 3,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 2,
          "java/util/Set#of([Ljava/lang/Object;)Ljava/util/Set;": 1,
          "java/util/concurrent/ExecutorService#shutdown()V": 1,
          "java/util/concurrent/ExecutorService#submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;": 1,
          "java/util/concurrent/atomic/AtomicBoolean#compareAndSet(ZZ)Z": 1,
          "java/util/concurrent/atomic/AtomicLong#get()J": 1,
          "net/fabricmc/fabric/api/event/lifecycle/v1/ServerLifecycleEvents#SERVER_STARTED": 1,
          "net/minecraft/resources/Identifier#tryParse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/server/MinecraftServer#createCommandSourceStack()Lnet/minecraft/commands/CommandSourceStack;": 1,
          "net/minecraft/server/MinecraftServer#getAbsoluteMaxWorldSize()I": 1,
          "net/minecraft/server/MinecraftServer#getAllLevels()Ljava/lang/Iterable;": 1,
          "net/minecraft/server/MinecraftServer#getPlayerList()Lnet/minecraft/server/players/PlayerList;": 2,
          "net/minecraft/server/level/ChunkLevel#MAX_LEVEL": 1,
          "net/minecraft/server/level/ServerLevel#dimension()Lnet/minecraft/resources/ResourceKey;": 2,
          "net/minecraft/server/level/ServerLevel#getChunk(II)Lnet/minecraft/world/level/chunk/LevelChunk;": 1,
          "net/minecraft/server/level/ServerLevel#getLogicalHeight()I": 1,
          "net/minecraft/server/level/ServerLevel#getRespawnData()Lnet/minecraft/world/level/storage/LevelData$RespawnData;": 1,
          "net/minecraft/server/level/ServerLevel#getSeaLevel()I": 1,
          "net/minecraft/world/level/border/WorldBorder#getCenterX()D": 1,
          "net/minecraft/world/level/border/WorldBorder#getSize()D": 2,
          "new net/jpountz/lz4/LZ4BlockInputStream": 1,
          "org/popcraft/chunky/mixin/client/IntegratedServerMixin#chunky$runChunkSystemHousekeeping(Ljava/util/function/BooleanSupplier;)V": 1,
          "org/popcraft/chunky/platform/Player#getLocation()Lorg/popcraft/chunky/platform/util/Location;": 2
        },
        "runs": [
          {
            "class": "org/popcraft/chunky/shape/Triangle",
            "method": "isBounding",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/RegionChunkIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/RegionChunkIterator",
            "method": "total",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/RegionCache$WorldState",
            "method": "isGenerated",
            "desc": "(II)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/shape/Rectangle",
            "method": "isBounding",
            "desc": "(DD)Z",
            "value": "1"
          },
          {
            "class": "org/popcraft/chunky/nbt/IntTag",
            "method": "type",
            "desc": "()B",
            "value": "3"
          },
          {
            "class": "org/popcraft/chunky/nbt/IntTag",
            "method": "value",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/LongTag",
            "method": "type",
            "desc": "()B",
            "value": "4"
          },
          {
            "class": "org/popcraft/chunky/nbt/LongTag",
            "method": "value",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/ShortTag",
            "method": "type",
            "desc": "()B",
            "value": "2"
          },
          {
            "class": "org/popcraft/chunky/nbt/ShortTag",
            "method": "value",
            "desc": "()S",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/trim/TrimFilter",
            "method": "readsChunkData",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/command/brigadier/BrigadierCommand",
            "method": "hasPermission",
            "desc": "(Ljava/lang/Object;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "org/popcraft/chunky/shape/Diamond",
            "method": "isBounding",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/shape/Square",
            "method": "isBounding",
            "desc": "(DD)Z",
            "value": "1"
          },
          {
            "class": "org/popcraft/chunky/iterator/RingChunkIterator$RingChunkProgress",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/RingChunkIterator$RingChunkProgress",
            "method": "total",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "tryWorld",
            "desc": "(Lorg/popcraft/chunky/Chunky;Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#87"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "tryPattern",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#88"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "tryShape",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#89"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "tryBoolean",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#90"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "tryInteger",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#91"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "tryIntegerSuffixed",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#92"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "tryDouble",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#93"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "tryDoubleSuffixed",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#94"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "tryLong",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#95"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "trySign",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#96"
          },
          {
            "class": "org/popcraft/chunky/util/Input",
            "method": "isPastWorldLimit",
            "desc": "(D)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/Version",
            "method": "isValid",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/popcraft/chunky/util/Version",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/Version",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/shape/Hexagon",
            "method": "isBounding",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/ChunkCoordinate",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/ChunkCoordinate",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/ChunkCoordinate",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/ChunkCoordinate",
            "method": "z",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/Loop2ChunkIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/Loop2ChunkIterator",
            "method": "total",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/Parameter",
            "method": "of",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Lorg/popcraft/chunky/util/Parameter;",
            "value": "obj#150"
          },
          {
            "class": "org/popcraft/chunky/util/Parameter",
            "method": "getValue",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#153"
          },
          {
            "class": "org/popcraft/chunky/iterator/StripChunkIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/StripChunkIterator",
            "method": "total",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector3",
            "method": "of",
            "desc": "(DDD)Lorg/popcraft/chunky/platform/util/Vector3;",
            "value": "obj#160"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector3",
            "method": "multiply",
            "desc": "(D)Lorg/popcraft/chunky/platform/util/Vector3;",
            "value": "obj#162"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector3",
            "method": "normalize",
            "desc": "()Lorg/popcraft/chunky/platform/util/Vector3;",
            "value": "obj#163"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector3",
            "method": "length",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector3",
            "method": "lengthSquared",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector3",
            "method": "getX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector3",
            "method": "getY",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector3",
            "method": "getZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/LongArrayTag",
            "method": "type",
            "desc": "()B",
            "value": "12"
          },
          {
            "class": "org/popcraft/chunky/nbt/IntArrayTag",
            "method": "type",
            "desc": "()B",
            "value": "11"
          },
          {
            "class": "org/popcraft/chunky/Chunky",
            "method": "getLimit",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/SpiralChunkIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/SpiralChunkIterator",
            "method": "total",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/Chunk",
            "method": "getX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/Chunk",
            "method": "getZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/Chunk",
            "method": "getLastModified",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/ConcentricChunkIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/ConcentricChunkIterator",
            "method": "total",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Location",
            "method": "toVector",
            "desc": "()Lorg/popcraft/chunky/platform/util/Vector3;",
            "value": "obj#242"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Location",
            "method": "getX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Location",
            "method": "getY",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Location",
            "method": "getZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Location",
            "method": "getYaw",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Location",
            "method": "getPitch",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "org/popcraft/chunky/nbt/DoubleTag",
            "method": "type",
            "desc": "()B",
            "value": "6"
          },
          {
            "class": "org/popcraft/chunky/nbt/DoubleTag",
            "method": "value",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/FloatTag",
            "method": "type",
            "desc": "()B",
            "value": "5"
          },
          {
            "class": "org/popcraft/chunky/nbt/FloatTag",
            "method": "value",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "org/popcraft/chunky/nbt/StringTag",
            "method": "type",
            "desc": "()B",
            "value": "8"
          },
          {
            "class": "org/popcraft/chunky/util/GenerationMap",
            "method": "isExact",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/PendingAction",
            "method": "hasExpired",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/shape/ShapeUtil",
            "method": "distanceBetweenPoints",
            "desc": "(DDDD)D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "centerX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "centerZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "radiusX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "radiusZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "rateLimit",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "centerChunkX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "centerChunkZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "radiusChunksX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "radiusChunksZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "diameterChunksX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "diameterChunksZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "centerRegionX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "centerRegionZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "radiusRegionsX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "radiusRegionsZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "diameterRegionsX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection",
            "method": "diameterRegionsZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationCompleteEvent",
            "method": "centerX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationCompleteEvent",
            "method": "centerZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationCompleteEvent",
            "method": "radiusX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationCompleteEvent",
            "method": "radiusZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationCompleteEvent",
            "method": "chunks",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationCompleteEvent",
            "method": "time",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/trim/TrimChunk",
            "method": "inhabitedTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/trim/TrimChunk",
            "method": "exists",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/trim/TrimChunk",
            "method": "lastModified",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/shape/Pentagon",
            "method": "isBounding",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/command/TrimCommand$Task",
            "method": "isCancelled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/shape/AbstractShape",
            "method": "center",
            "desc": "()Lorg/popcraft/chunky/platform/util/Vector2;",
            "value": "obj#377"
          },
          {
            "class": "org/popcraft/chunky/util/Pair",
            "method": "of",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Lorg/popcraft/chunky/util/Pair;",
            "value": "obj#378"
          },
          {
            "class": "org/popcraft/chunky/shape/Star",
            "method": "isBounding",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/trim/InhabitedTimeFilter",
            "method": "readsChunkData",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/popcraft/chunky/trim/InhabitedTimeFilter",
            "method": "minTicks",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/trim/InhabitedTimeFilter",
            "method": "maxTicks",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationStartEvent",
            "method": "centerX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationStartEvent",
            "method": "centerZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationStartEvent",
            "method": "radiusX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationStartEvent",
            "method": "radiusZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationStartEvent",
            "method": "continued",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/FastBufferedInputStream",
            "method": "read",
            "desc": "([BII)I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/FastBufferedInputStream",
            "method": "skip",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/FabricWorld",
            "method": "getDirectory",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#444"
          },
          {
            "class": "org/popcraft/chunky/nbt/CompoundTag",
            "method": "type",
            "desc": "()B",
            "value": "10"
          },
          {
            "class": "org/popcraft/chunky/nbt/CompoundTag",
            "method": "get",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#454"
          },
          {
            "class": "org/popcraft/chunky/nbt/ByteTag",
            "method": "type",
            "desc": "()B",
            "value": "1"
          },
          {
            "class": "org/popcraft/chunky/nbt/ByteTag",
            "method": "value",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/RegionFile",
            "method": "getChunk",
            "desc": "(II)Ljava/util/Optional;",
            "value": "obj#479"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/RegionFile",
            "method": "getHeader",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#481"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/RegionFile",
            "method": "isFullyRead",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "world",
            "desc": "(Lorg/popcraft/chunky/platform/World;)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#489"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "center",
            "desc": "(DD)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#490"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "centerX",
            "desc": "(D)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#491"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "centerZ",
            "desc": "(D)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#492"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "radius",
            "desc": "(D)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#493"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "radiusX",
            "desc": "(D)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#494"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "radiusZ",
            "desc": "(D)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#495"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "pattern",
            "desc": "(Lorg/popcraft/chunky/util/Parameter;)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#496"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "shape",
            "desc": "(Ljava/lang/String;)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#497"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "rateLimit",
            "desc": "(I)Lorg/popcraft/chunky/Selection$Builder;",
            "value": "obj#498"
          },
          {
            "class": "org/popcraft/chunky/Selection$Builder",
            "method": "build",
            "desc": "()Lorg/popcraft/chunky/Selection;",
            "value": "obj#502"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/ChunkFilter",
            "method": "of",
            "desc": "(BLjava/lang/String;)Lorg/popcraft/chunky/nbt/util/ChunkFilter;",
            "value": "obj#512"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/ChunkFilter",
            "method": "getType",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/ChunkFilter",
            "method": "hasTagNames",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/ChunkPos",
            "method": "of",
            "desc": "(II)Lorg/popcraft/chunky/nbt/util/ChunkPos;",
            "value": "obj#518"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/ChunkPos",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/ChunkPos",
            "method": "z",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/ChunkIterator",
            "method": "process",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/popcraft/chunky/shape/ShapeFactory",
            "method": "getCustomTypes",
            "desc": "()Ljava/util/Set;",
            "value": "obj#531"
          },
          {
            "class": "org/popcraft/chunky/util/Hilbert",
            "method": "regionDistanceToChunkCoordinateOffset",
            "desc": "(I)Lorg/popcraft/chunky/util/ChunkCoordinate;",
            "value": "obj#533"
          },
          {
            "class": "org/popcraft/chunky/util/Hilbert",
            "method": "chunkCoordinateOffsets",
            "desc": "()[Lorg/popcraft/chunky/util/ChunkCoordinate;",
            "value": "obj#532"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector2",
            "method": "of",
            "desc": "(DD)Lorg/popcraft/chunky/platform/util/Vector2;",
            "value": "obj#1573"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector2",
            "method": "multiply",
            "desc": "(D)Lorg/popcraft/chunky/platform/util/Vector2;",
            "value": "obj#1575"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector2",
            "method": "normalize",
            "desc": "()Lorg/popcraft/chunky/platform/util/Vector2;",
            "value": "obj#1576"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector2",
            "method": "length",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector2",
            "method": "lengthSquared",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector2",
            "method": "getX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/platform/util/Vector2",
            "method": "getZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/ListTag",
            "method": "type",
            "desc": "()B",
            "value": "9"
          },
          {
            "class": "org/popcraft/chunky/GenerationTask$Progress",
            "method": "getChunkCount",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/GenerationTask$Progress",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/GenerationTask$Progress",
            "method": "getPercentComplete",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "org/popcraft/chunky/GenerationTask$Progress",
            "method": "getHours",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/GenerationTask$Progress",
            "method": "getMinutes",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/GenerationTask$Progress",
            "method": "getSeconds",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/GenerationTask$Progress",
            "method": "getRate",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/GenerationTask$Progress",
            "method": "getChunkX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/GenerationTask$Progress",
            "method": "getChunkZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/RateLimiter",
            "method": "getLimit",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/RateLimiter",
            "method": "acquire",
            "desc": "(Ljava/util/concurrent/Semaphore;I)J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/RateLimiter",
            "method": "delay",
            "desc": "(JJJ)J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/RateLimiter",
            "method": "rate",
            "desc": "(J)D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/event/Cancellable",
            "method": "isCancelled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/trim/TrimRegion",
            "method": "isValid",
            "desc": "(Ljava/nio/file/Path;)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationProgressEvent",
            "method": "chunks",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationProgressEvent",
            "method": "complete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationProgressEvent",
            "method": "progress",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationProgressEvent",
            "method": "hours",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationProgressEvent",
            "method": "minutes",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationProgressEvent",
            "method": "seconds",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationProgressEvent",
            "method": "rate",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationProgressEvent",
            "method": "x",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/event/task/GenerationProgressEvent",
            "method": "z",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/trim/UnmodifiedFilter",
            "method": "amount",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/trim/UnmodifiedFilter",
            "method": "cutoff",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/RingChunkIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/RingChunkIterator",
            "method": "total",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/RingChunkIterator",
            "method": "name",
            "desc": "()Ljava/lang/String;",
            "value": "\"ring\""
          },
          {
            "class": "org/popcraft/chunky/util/ChunkMath",
            "method": "pack",
            "desc": "(II)J",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/util/ChunkMath",
            "method": "regionIndex",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/EndTag",
            "method": "type",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/nbt/util/RegionFile$Header",
            "method": "index",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/ChunkyAPIImpl",
            "method": "version",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/ChunkyAPIImpl",
            "method": "isRunning",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/ChunkyAPIImpl",
            "method": "pauseTask",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/ChunkyAPIImpl",
            "method": "continueTask",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/api/ChunkyAPIImpl",
            "method": "cancelTask",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/RegionChunkIterator$RegionChunkProgress",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/popcraft/chunky/iterator/RegionChunkIterator$RegionChunkProgress",
            "method": "total",
            "desc": "()J",
            "value": "0"
          }
        ],
        "insns": 22318
      },
      "verdict": "no",
      "summary": "none of its 4 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "clumps",
      "name": "Clumps",
      "version": "26.3.2",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [],
      "mixin_configs": [
        "clumps.mixins.json"
      ],
      "depends": [],
      "classes": 16,
      "methods": 54,
      "sites": [
        {
          "mixin": "com/blamejared/clumps/mixin/MixinExperienceOrb",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "canMerge",
          "kind": "inject",
          "method": "canMerge",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ExperienceOrb#canMerge HEAD"
        },
        {
          "mixin": "com/blamejared/clumps/mixin/MixinExperienceOrb",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "canMerge",
          "kind": "inject",
          "method": "canMerge",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ExperienceOrb#canMerge HEAD"
        },
        {
          "mixin": "com/blamejared/clumps/mixin/MixinExperienceOrb",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "playerTouch",
          "kind": "inject",
          "method": "playerTouch",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ExperienceOrb#playerTouch HEAD"
        },
        {
          "mixin": "com/blamejared/clumps/mixin/MixinExperienceOrb",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "clumps$captureCurrentEntry",
          "kind": "modify-variable",
          "method": "repairPlayerItems",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/item/enchantment/EnchantmentHelper;getRandomItemWith(Lnet/minecraft/core/component/DataComponentType;Lnet/minecraft/world/entity/LivingEntity;Ljava/util/function/Predicate;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/blamejared/clumps/mixin/MixinExperienceOrb",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "clumps$repairPlayerItems",
          "kind": "inject",
          "method": "repairPlayerItems",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/item/enchantment/EnchantmentHelper;getRandomItemWith(Lnet/minecraft/core/component/DataComponentType;Lnet/minecraft/world/entity/LivingEntity;Ljava/util/function/Predicate;)Ljava/util/Optional;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ExperienceOrb#repairPlayerItems INVOKE_ASSIGN"
        },
        {
          "mixin": "com/blamejared/clumps/mixin/MixinExperienceOrb",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "merge",
          "kind": "inject",
          "method": "merge",
          "at": "INVOKE",
          "at_target": "net/minecraft/world/entity/ExperienceOrb.discard()V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ExperienceOrb#merge INVOKE"
        },
        {
          "mixin": "com/blamejared/clumps/mixin/MixinExperienceOrb",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "tryMergeToExisting",
          "kind": "inject",
          "method": "tryMergeToExisting",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ExperienceOrb#tryMergeToExisting HEAD"
        },
        {
          "mixin": "com/blamejared/clumps/mixin/MixinExperienceOrb",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "addAdditionalSaveData",
          "kind": "inject",
          "method": "addAdditionalSaveData",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ExperienceOrb#addAdditionalSaveData TAIL"
        },
        {
          "mixin": "com/blamejared/clumps/mixin/MixinExperienceOrb",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "readAdditionalSaveData",
          "kind": "inject",
          "method": "readAdditionalSaveData",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ExperienceOrb#readAdditionalSaveData TAIL"
        }
      ],
      "listening": 6,
      "accessors": 3,
      "hooks": {},
      "wanted": {
        "net/minecraft/world/entity/ExperienceOrb#addAdditionalSaveData @TAIL": 1,
        "net/minecraft/world/entity/ExperienceOrb#canMerge @HEAD": 2,
        "net/minecraft/world/entity/ExperienceOrb#playerTouch @HEAD": 1,
        "net/minecraft/world/entity/ExperienceOrb#readAdditionalSaveData @TAIL": 1,
        "net/minecraft/world/entity/ExperienceOrb#tryMergeToExisting @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/world/entity/ExperienceOrb#merge @INVOKE": 1,
        "net/minecraft/world/entity/ExperienceOrb#repairPlayerItems @INVOKE_ASSIGN": 1,
        "net/minecraft/world/item/enchantment/EnchantmentHelper#getRandomItemWith @INVOKE_ASSIGN (modify-variable)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EventFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 16,
        "features": {
          "events": 2,
          "mixin": 2
        },
        "events": [
          "Event",
          "EventFactory"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 16,
        "methods": 13,
        "tried": 13,
        "completed": 10,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "net/minecraft/world/entity/ExperienceOrb#isAlive()Z": 2
        },
        "runs": [
          {
            "class": "com/blamejared/clumps/mixin/MixinExperienceOrb",
            "method": "canMerge",
            "desc": "(Lnet/minecraft/world/entity/ExperienceOrb;II)Z",
            "value": "0"
          },
          {
            "class": "com/blamejared/clumps/platform/IPlatformHelper",
            "method": "getRepairRatio",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)F",
            "value": "1f"
          },
          {
            "class": "com/blamejared/clumps/api/events/RepairEvent",
            "method": "getValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/blamejared/clumps/api/events/ValueEvent",
            "method": "getValue",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 41
      },
      "verdict": "no",
      "summary": "none of its 9 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "continuity",
      "name": "Continuity",
      "version": "3.0.1+26.3",
      "license": "LGPL-3.0-only",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/pepperbell/continuity/client/ContinuityClient"
        },
        {
          "kind": "modmenu",
          "value": "me/pepperbell/continuity/client/config/ModMenuApiImpl"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "me/pepperbell/continuity/client/config/SodiumConfigImpl"
        }
      ],
      "mixin_configs": [
        "continuity.mixins.json"
      ],
      "depends": [],
      "classes": 164,
      "methods": 691,
      "sites": [
        {
          "mixin": "me/pepperbell/continuity/client/mixin/AtlasManagerMixin",
          "targets": [
            "net/minecraft/client/resources/model/sprite/AtlasManager"
          ],
          "handler": "continuity$onReturnPrepareSharedState",
          "kind": "inject",
          "method": "prepareSharedState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/sprite/AtlasManager#prepareSharedState RETURN"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/AtlasManagerMixin",
          "targets": [
            "net/minecraft/client/resources/model/sprite/AtlasManager"
          ],
          "handler": "continuity$onHeadReload",
          "kind": "inject",
          "method": "reload",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/packs/resources/PreparableReloadListener$SharedState;resourceManager()Lnet/minecraft/server/packs/resources/ResourceManager;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/sprite/AtlasManager#reload INVOKE"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/AtlasManagerMixin",
          "targets": [
            "net/minecraft/client/resources/model/sprite/AtlasManager"
          ],
          "handler": "continuity$onReturnReload",
          "kind": "inject",
          "method": "reload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/sprite/AtlasManager#reload RETURN"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/CuboidItemModelWrapperMixin",
          "targets": [
            "net/minecraft/client/renderer/item/CuboidItemModelWrapper"
          ],
          "handler": "onReturnInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/item/CuboidItemModelWrapper#<init> RETURN"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/CuboidItemModelWrapperMixin",
          "targets": [
            "net/minecraft/client/renderer/item/CuboidItemModelWrapper"
          ],
          "handler": "onReturnUpdate",
          "kind": "inject",
          "method": "update",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/item/CuboidItemModelWrapper#update RETURN"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/CuboidItemModelWrapperUnbakedMixin",
          "targets": [
            "net/minecraft/client/renderer/item/CuboidItemModelWrapper$Unbaked"
          ],
          "handler": "wrapModelCtor",
          "kind": "wrap-operation",
          "method": "bake",
          "at": "NEW",
          "at_target": "(Ljava/util/List;Lnet/minecraft/client/resources/model/geometry/QuadCollection;Lnet/minecraft/client/renderer/item/ModelRenderProperties;Lorg/joml/Matrix4fc;)Lnet/minecraft/client/renderer/item/CuboidItemModelWrapper;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/MultiPackResourceManagerMixin",
          "targets": [
            "net/minecraft/server/packs/resources/MultiPackResourceManager"
          ],
          "handler": "continuity$onTailInit",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/resources/MultiPackResourceManager#<init> TAIL"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/MultiPackResourceManagerMixin",
          "targets": [
            "net/minecraft/server/packs/resources/MultiPackResourceManager"
          ],
          "handler": "continuity$redirectGetResourceId",
          "kind": "modify-variable",
          "method": "getResource",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/MultiPackResourceManagerMixin",
          "targets": [
            "net/minecraft/server/packs/resources/MultiPackResourceManager"
          ],
          "handler": "continuity$redirectGetResourceStackId",
          "kind": "modify-variable",
          "method": "getResourceStack",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/SpriteLoaderMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteLoader"
          ],
          "handler": "continuity$modifySupplier",
          "kind": "modify-arg",
          "method": "loadAndStitch",
          "at": "INVOKE",
          "at_target": "Ljava/util/concurrent/CompletableFuture;supplyAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/SpriteLoaderMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteLoader"
          ],
          "handler": "continuity$modifyFunction",
          "kind": "modify-arg",
          "method": "loadAndStitch",
          "at": "INVOKE",
          "at_target": "Ljava/util/concurrent/CompletableFuture;thenApply(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/SpriteLoaderMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteLoader"
          ],
          "handler": "continuity$onReturnStitch",
          "kind": "inject",
          "method": "stitch",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteLoader#stitch RETURN"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/SpriteSourceListMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/atlas/SpriteSourceList"
          ],
          "handler": "continuity$modifySources",
          "kind": "modify-variable",
          "method": "<init>",
          "at": "LOAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "me/pepperbell/continuity/client/mixin/SpriteSourceListMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/atlas/SpriteSourceList"
          ],
          "handler": "continuity$afterLoadSources",
          "kind": "inject",
          "method": "list",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/ImmutableList;builder()Lcom/google/common/collect/ImmutableList$Builder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/atlas/SpriteSourceList#list INVOKE"
        }
      ],
      "listening": 6,
      "accessors": 1,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/renderer/item/CuboidItemModelWrapper#<init> @RETURN": 1,
        "net/minecraft/client/renderer/item/CuboidItemModelWrapper#update @RETURN": 1,
        "net/minecraft/client/renderer/texture/SpriteLoader#stitch @RETURN": 1,
        "net/minecraft/client/resources/model/sprite/AtlasManager#prepareSharedState @RETURN": 1,
        "net/minecraft/client/resources/model/sprite/AtlasManager#reload @RETURN": 1,
        "net/minecraft/server/packs/resources/MultiPackResourceManager#<init> @TAIL": 1
      },
      "wanted_calls": {
        "java/util/concurrent/CompletableFuture#supplyAsync @INVOKE (modify-arg)": 1,
        "java/util/concurrent/CompletableFuture#thenApply @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/item/CuboidItemModelWrapper$Unbaked#bake @NEW (wrap-operation)": 1,
        "net/minecraft/client/renderer/texture/atlas/SpriteSourceList#<init> @LOAD (modify-variable)": 1,
        "net/minecraft/client/renderer/texture/atlas/SpriteSourceList#list @INVOKE": 1,
        "net/minecraft/client/resources/model/sprite/AtlasManager#reload @INVOKE": 1,
        "net/minecraft/server/packs/resources/MultiPackResourceManager#getResource @HEAD (modify-variable)": 1,
        "net/minecraft/server/packs/resources/MultiPackResourceManager#getResourceStack @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "QuadView",
          "horizon": "",
          "note": "",
          "classes": 13
        },
        {
          "class": "MutableQuadView",
          "horizon": "",
          "note": "",
          "classes": 9
        },
        {
          "class": "QuadEmitter",
          "horizon": "",
          "note": "",
          "classes": 8
        },
        {
          "class": "MutableMesh",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "Renderer",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "SpriteFinder",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "QuadTransform",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "SpriteFinderGetter",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "TriState",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Mesh",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "WrapperBlockStateModel",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents$ClientStarted",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "InvalidateRenderStateCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MeshQuadCollection",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MeshView",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLoadingPlugin",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLoadingPlugin$Context",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelModifier",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelModifier$AfterBakeBlock",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelModifier$AfterBakeBlock$Context",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PackActivationType",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "PreparableModelLoadingPlugin",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PreparableModelLoadingPlugin$DataLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "QuadAtlas",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceReloaderKeys",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceReloaderKeys$Client",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 164,
        "features": {
          "screen": 1,
          "events": 1,
          "mixin": 8
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 164,
        "methods": 353,
        "tried": 353,
        "completed": 148,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/pepperbell/continuity/api/client/QuadProcessor$ProcessingResult;#clone()Ljava/lang/Object;": 1,
          "[Lme/pepperbell/continuity/client/config/ContinuityConfigScreen$Value$Flag;#clone()Ljava/lang/Object;": 1,
          "[Lme/pepperbell/continuity/client/processor/OrientationMode;#clone()Ljava/lang/Object;": 1,
          "[Lme/pepperbell/continuity/client/processor/Symmetry;#clone()Ljava/lang/Object;": 1,
          "[Lme/pepperbell/continuity/client/properties/BasicConnectingCtmProperties$ConnectionType;#clone()Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/Object2ObjectLinkedOpenHashMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/io/File#exists()Z": 1,
          "java/lang/System#arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V": 1,
          "java/util/EnumMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/EnumMap#values()Ljava/util/Collection;": 1,
          "java/util/Objects#checkIndex(II)I": 1,
          "java/util/Properties#getProperty(Ljava/lang/String;)Ljava/lang/String;": 4,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#clear()V": 2,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 2,
          "java/util/Set#copyOf(Ljava/util/Collection;)Ljava/util/Set;": 1,
          "java/util/concurrent/locks/StampedLock#tryOptimisticRead()J": 4,
          "java/util/concurrent/locks/StampedLock#writeLock()J": 3,
          "me/pepperbell/continuity/client/processor/OrientationMode#ordinal()I": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientLifecycleEvents#CLIENT_STARTED": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayConnectionEvents#JOIN": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/MeshView#forEach(Ljava/util/function/Consumer;)V": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/MutableMesh#clear()V": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/MutableMesh#emitter()Lnet/fabricmc/fabric/api/client/renderer/v1/mesh/QuadEmitter;": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/MutableMesh#outputTo(Lnet/fabricmc/fabric/api/client/renderer/v1/mesh/QuadEmitter;)V": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/MutableQuadView#cullFace()Lnet/minecraft/core/Direction;": 2,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/MutableQuadView#lightFace()Lnet/minecraft/core/Direction;": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/MutableQuadView#pos(IFFF)Lnet/fabricmc/fabric/api/client/renderer/v1/mesh/MutableQuadView;": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/QuadView#atlas()Lnet/fabricmc/fabric/api/client/renderer/v1/mesh/QuadAtlas;": 2,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/QuadView#lightFace()Lnet/minecraft/core/Direction;": 2,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/QuadView#u(I)F": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/QuadView#x(I)F": 2,
          "net/fabricmc/fabric/api/client/renderer/v1/sprite/SpriteFinder#find(Lnet/fabricmc/fabric/api/client/renderer/v1/mesh/QuadView;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;": 1,
          "net/fabricmc/fabric/api/util/TriState#TRUE": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/renderer/block/BlockAndTintGetter#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/client/renderer/block/BlockAndTintGetter#hasBiomes()Z": 1,
          "net/minecraft/client/renderer/texture/TextureAtlas#LOCATION_BLOCKS": 2,
          "net/minecraft/client/renderer/texture/TextureAtlasSprite#contents()Lnet/minecraft/client/renderer/texture/SpriteContents;": 1,
          "net/minecraft/client/renderer/texture/TextureAtlasSprite#getU0()F": 2,
          "net/minecraft/client/resources/model/ModelManager#getBlockStateModelSet()Lnet/minecraft/client/renderer/block/BlockStateModelSet;": 1,
          "net/minecraft/client/resources/model/geometry/ItemQuads#isEmpty()Z": 2,
          "net/minecraft/core/Direction#ordinal()I": 1,
          "net/minecraft/core/Registry#containsKey(Lnet/minecraft/resources/Identifier;)Z": 1,
          "net/minecraft/resources/Identifier#hashCode()I": 1,
          "net/minecraft/server/packs/resources/PreparableReloadListener$SharedState#resourceManager()Lnet/minecraft/server/packs/resources/ResourceManager;": 1,
          "net/minecraft/server/packs/resources/PreparableReloadListener$SharedState#set(Lnet/minecraft/server/packs/resources/PreparableReloadListener$StateKey;Ljava/lang/Object;)V": 1,
          "net/minecraft/server/packs/resources/ResourceManager#listPacks()Ljava/util/stream/Stream;": 1,
          "net/minecraft/world/level/block/state/BlockState#getLightEmission()I": 1,
          "new com/google/gson/JsonObject": 2,
          "new com/google/gson/JsonPrimitive": 1,
          "new it/unimi/dsi/fastutil/objects/ObjectArrayList": 3,
          "new it/unimi/dsi/fastutil/objects/ObjectOpenHashSet": 1
        },
        "runs": [
          {
            "class": "me/pepperbell/continuity/impl/client/ContinuityFeatureStatesImpl",
            "method": "getConnectedTexturesState",
            "desc": "()Lme/pepperbell/continuity/api/client/ContinuityFeatureStates$FeatureState;",
            "value": "obj#7"
          },
          {
            "class": "me/pepperbell/continuity/impl/client/ContinuityFeatureStatesImpl",
            "method": "getEmissiveTexturesState",
            "desc": "()Lme/pepperbell/continuity/api/client/ContinuityFeatureStates$FeatureState;",
            "value": "obj#11"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/overlay/SimpleOverlayQuadProcessor$Factory",
            "method": "supportsNullSprites",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/TileAmountValidator$AtLeast",
            "method": "validateTileAmount",
            "desc": "(ILme/pepperbell/continuity/client/properties/BaseCtmProperties;)Z",
            "value": "1"
          },
          {
            "class": "me/pepperbell/continuity/client/config/ContinuityConfigScreen$Value",
            "method": "isChanged",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/util/MathUtil",
            "method": "signum",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/util/MathUtil",
            "method": "lerp",
            "desc": "(FII)I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/util/MathUtil",
            "method": "lerpColor",
            "desc": "(FII)I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/util/MathUtil",
            "method": "lerpLight",
            "desc": "(FII)I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/util/MathUtil",
            "method": "mix64",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/util/MathUtil",
            "method": "mix32",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/util/MathUtil",
            "method": "removeSignBit",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/RepeatCtmProperties",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/RepeatCtmProperties",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/VerticalSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/OrientedConnectingCtmProperties;)I",
            "value": "4"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/VerticalSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)I",
            "value": "4"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/BaseCachingPredicates",
            "method": "affectsSprites",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/BaseCachingPredicates",
            "method": "affectsSprite",
            "desc": "(Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/BaseCachingPredicates",
            "method": "affectsBlockStates",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/BaseCachingPredicates",
            "method": "affectsBlockState",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/BaseCachingPredicates",
            "method": "isValidForMultipass",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/model/CtmBlockStateModel$CtmQuadTransform",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/impl/client/ProcessingDataKeyImpl",
            "method": "getRawId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/ConnectingCtmProperties",
            "method": "getInnerSeams",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/model/EmissiveItemGeometry",
            "method": "emissiveAnimated",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/SimpleQuadProcessor",
            "method": "process",
            "desc": "(Lnet/fabricmc/fabric/api/client/renderer/v1/mesh/MutableQuadView;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)Lme/pepperbell/continuity/api/client/QuadProcessor$ProcessingResult;",
            "value": "obj#20"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/AbstractQuadProcessorFactory",
            "method": "supportsNullSprites",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)Z",
            "value": "1"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/RandomCtmProperties",
            "method": "getRandomLoops",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/RandomCtmProperties",
            "method": "getLinked",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/CompactCtmQuadProcessor$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/CompactConnectingCtmProperties;)I",
            "value": "5"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/CompactCtmQuadProcessor$Factory",
            "method": "getReplacementSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/CompactConnectingCtmProperties;)I",
            "value": "47"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/CompactCtmQuadProcessor$Factory",
            "method": "supportsNullSprites",
            "desc": "(Lme/pepperbell/continuity/client/properties/CompactConnectingCtmProperties;)Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/BaseCtmProperties",
            "method": "compareTo",
            "desc": "(Lme/pepperbell/continuity/api/client/CtmProperties;)I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/BaseCtmProperties",
            "method": "isValid",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/BaseCtmProperties",
            "method": "getPackPriority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/BaseCtmProperties",
            "method": "isPrioritized",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/BaseCtmProperties",
            "method": "compareTo",
            "desc": "(Ljava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/util/biome/BiomeHolder",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/model/EmissiveBlockStateModel$EmissiveQuadTransform",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/util/RenderUtil",
            "method": "getTintColor",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/client/renderer/block/BlockAndTintGetter;Lnet/minecraft/core/BlockPos;I)I",
            "value": "-1"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/TopQuadProcessor$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/ConnectingCtmProperties;)I",
            "value": "1"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/TopQuadProcessor$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)I",
            "value": "1"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/overlay/StandardOverlayQuadProcessor$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/overlay/StandardOverlayCtmProperties;)I",
            "value": "17"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/overlay/StandardOverlayQuadProcessor$Factory",
            "method": "supportsNullSprites",
            "desc": "(Lme/pepperbell/continuity/client/properties/overlay/StandardOverlayCtmProperties;)Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/overlay/StandardOverlayQuadProcessor$Factory",
            "method": "supportsNullSprites",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/overlay/StandardOverlayQuadProcessor$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)I",
            "value": "17"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/CompactCtmQuadProcessor",
            "method": "shouldSplitUV",
            "desc": "(II)Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/CompactCtmQuadProcessor",
            "method": "getSpriteIndex",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/HorizontalVerticalSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/OrientedConnectingCtmProperties;)I",
            "value": "7"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/HorizontalVerticalSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)I",
            "value": "7"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/VerticalHorizontalSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/OrientedConnectingCtmProperties;)I",
            "value": "7"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/VerticalHorizontalSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)I",
            "value": "7"
          },
          {
            "class": "me/pepperbell/continuity/client/util/ListPairView",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/overlay/StandardOverlayQuadProcessor",
            "method": "hasSameOverlay",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;)Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/overlay/OverlayPropertiesSection",
            "method": "getTintIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/api/client/EmissiveSpriteApi",
            "method": "get",
            "desc": "()Lme/pepperbell/continuity/api/client/EmissiveSpriteApi;",
            "value": "obj#89"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/CtmSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/OrientedConnectingCtmProperties;)I",
            "value": "47"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/CtmSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)I",
            "value": "47"
          },
          {
            "class": "me/pepperbell/continuity/impl/client/ProcessingDataKeyRegistryImpl",
            "method": "getRegisteredAmount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/HorizontalSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/OrientedConnectingCtmProperties;)I",
            "value": "4"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/HorizontalSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)I",
            "value": "4"
          },
          {
            "class": "me/pepperbell/continuity/client/resource/ModelWrappingHandler$Data",
            "method": "wrapCtm",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/resource/ModelWrappingHandler$Data",
            "method": "wrapEmissive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/ContinuityClient",
            "method": "createLoader",
            "desc": "(Lme/pepperbell/continuity/api/client/CtmProperties$Factory;Lme/pepperbell/continuity/api/client/QuadProcessor$Factory;Lme/pepperbell/continuity/api/client/CachingPredicates$Factory;)Lme/pepperbell/continuity/api/client/CtmLoader;",
            "value": "obj#341"
          },
          {
            "class": "me/pepperbell/continuity/client/properties/TileAmountValidator$Exactly",
            "method": "validateTileAmount",
            "desc": "(ILme/pepperbell/continuity/client/properties/BaseCtmProperties;)Z",
            "value": "1"
          },
          {
            "class": "me/pepperbell/continuity/client/util/RandomIndexProvider$UnweightedFactory",
            "method": "createIndexProvider",
            "desc": "(I)Lme/pepperbell/continuity/client/util/RandomIndexProvider;",
            "value": "obj#348"
          },
          {
            "class": "me/pepperbell/continuity/client/util/BooleanState",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/pepperbell/continuity/client/processor/simple/FixedSpriteProvider$Factory",
            "method": "getSpriteAmount",
            "desc": "(Lme/pepperbell/continuity/client/properties/BaseCtmProperties;)I",
            "value": "1"
          }
        ],
        "insns": 2913
      },
      "verdict": "no",
      "summary": "none of its 14 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "controlify",
      "name": "Controlify",
      "version": "3.5.3+mc26.3",
      "license": "LGPL-3.0-or-later",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/isxander/controlify/fabric/ControlifyBootstrap"
        },
        {
          "kind": "main",
          "value": "dev/isxander/controlify/fabric/ControlifyBootstrap"
        },
        {
          "kind": "modmenu",
          "value": "dev/isxander/controlify/fabric/compatibility/ModMenuIntegration"
        },
        {
          "kind": "server",
          "value": "dev/isxander/controlify/fabric/ControlifyBootstrap"
        }
      ],
      "mixin_configs": [
        "controlify.mixins.json",
        "controlify-compat.yacl.mixins.json",
        "controlify-compat.rrls.mixins.json",
        "controlify-platform.fabric.mixins.json"
      ],
      "depends": [
        "yet_another_config_lib_v3"
      ],
      "classes": 753,
      "methods": 4357,
      "sites": [
        {
          "mixin": "dev/isxander/controlify/compatibility/yacl/mixins/YACLScreenCategoryTabMixin",
          "targets": [
            "dev/isxander/yacl3/gui/YACLScreen$CategoryTab"
          ],
          "handler": "onConstructCategory",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/isxander/yacl3/gui/YACLScreen$CategoryTab#<init> RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "notifyInjectionToNotRun",
          "kind": "inject",
          "method": "setScreen",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/MouseHandler;releaseMouse()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#setScreen INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "hideMouseAfterRelease",
          "kind": "inject",
          "method": "setScreen",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;init(II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#setScreen INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/InputConstantsMixin",
          "targets": [
            "com/mojang/blaze3d/platform/InputConstants"
          ],
          "handler": "ensureMouseVisible",
          "kind": "inject",
          "method": "releaseMouse",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/InputConstants#releaseMouse HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "initControlifyNow",
          "kind": "inject",
          "method": "onGameLoadFinished",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#onGameLoadFinished RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "doPlayerLook",
          "kind": "inject",
          "method": "runTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/MouseHandler;handleAccumulatedMovement()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#runTick INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onMinecraftClose",
          "kind": "inject",
          "method": "close",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/telemetry/ClientTelemetryManager;close()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#close INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "tickAnimator",
          "kind": "inject",
          "method": "renderFrame",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GameRenderer;extract(Lnet/minecraft/client/DeltaTracker;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#renderFrame INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/MouseHandlerMixin",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "moveMouseIfNecessary",
          "kind": "inject",
          "method": "releaseMouse",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/InputConstants;releaseMouse(Lcom/mojang/blaze3d/platform/Window;DD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/MouseHandler#releaseMouse INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/MouseHandlerMixin",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "resetCalledFromMinecraftSetScreen",
          "kind": "inject",
          "method": "releaseMouse",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/MouseHandler#releaseMouse RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/SDLEventHandlerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/SDLEventHandler"
          ],
          "handler": "onKeyboardInput",
          "kind": "inject",
          "method": "handleKeyEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/SDLEventHandler#handleKeyEvent INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/SDLEventHandlerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/SDLEventHandler"
          ],
          "handler": "onKeyboardInput",
          "kind": "inject",
          "method": "handleTextInputEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/SDLEventHandler#handleTextInputEvent INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/SDLEventHandlerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/SDLEventHandler"
          ],
          "handler": "onKeyboardInput",
          "kind": "inject",
          "method": "handleTextEditingEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/SDLEventHandler#handleTextEditingEvent INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/SDLEventHandlerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/SDLEventHandler"
          ],
          "handler": "onKeyboardInput",
          "kind": "inject",
          "method": "handleTextEditingCandidatesEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/SDLEventHandler#handleTextEditingCandidatesEvent INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/SDLEventHandlerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/SDLEventHandler"
          ],
          "handler": "onMouseInput",
          "kind": "inject",
          "method": "handleMouseMotionEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/SDLEventHandler#handleMouseMotionEvent INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/SDLEventHandlerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/SDLEventHandler"
          ],
          "handler": "onMouseInput",
          "kind": "inject",
          "method": "handleMouseButtonEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/SDLEventHandler#handleMouseButtonEvent INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/core/SDLEventHandlerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/SDLEventHandler"
          ],
          "handler": "onMouseInput",
          "kind": "inject",
          "method": "handleMouseWheelEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/SDLEventHandler#handleMouseWheelEvent INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/bind/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "notifyBindGuiOutputOfScreenChange",
          "kind": "inject",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_opening",
          "why": "ScreenEvent.Opening: a screen opens"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/bind/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "shouldRenderCrosshair",
          "kind": "inject",
          "method": "extractCrosshair",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/font/KeybindContentsMixin",
          "targets": [
            "net/minecraft/network/chat/contents/KeybindContents"
          ],
          "handler": "testVisitWithStyle",
          "kind": "wrap-operation",
          "method": "visit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/chat/contents/KeybindContents;getNestedComponent()Lnet/minecraft/network/chat/Component;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/guide/ingame/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "buttonGuideRespawn",
          "kind": "inject",
          "method": "handleRespawn",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/guide/ingame/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "tickButtonGuide",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/guide/screen/AbstractWidgetMixin",
          "targets": [
            "net/minecraft/client/gui/components/AbstractWidget"
          ],
          "handler": "catchMessageSet",
          "kind": "inject",
          "method": "setMessage",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/AbstractWidget#setMessage RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/guide/screen/TabNavigationBarMixin",
          "targets": [
            "net/minecraft/client/gui/components/tabs/TabNavigationBar"
          ],
          "handler": "renderControllerButtonOverlay",
          "kind": "inject",
          "method": "extractWidgetRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/tabs/TabNavigationBar#extractWidgetRenderState RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/patches/analogueboat/AbstractBoatMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/boat/AbstractBoat"
          ],
          "handler": "rotateBoatAnalog",
          "kind": "inject",
          "method": "controlBoat",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/vehicle/boat/AbstractBoat;getYRot()F",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/boat/AbstractBoat#controlBoat INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/patches/analogueboat/AbstractBoatMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/boat/AbstractBoat"
          ],
          "handler": "forwardBoatAnalog",
          "kind": "modify-variable",
          "method": "controlBoat",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/patches/analogueboat/AbstractBoatMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/boat/AbstractBoat"
          ],
          "handler": "onUseDigitalInput",
          "kind": "inject",
          "method": "setInput",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/boat/AbstractBoat#setInput HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/patches/analogueboat/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "useAnalogInput",
          "kind": "wrap-operation",
          "method": "rideTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/vehicle/boat/AbstractBoat;setInput(ZZZZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/patches/sprintfix/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "requireSignificantImpulseToSprint",
          "kind": "wrap-operation",
          "method": "canStartSprinting",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/ClientInput;hasForwardImpulse()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "clearRumbleEffects",
          "kind": "inject",
          "method": "disconnect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_disconnecting",
          "why": "ClientPlayerNetworkEvent.LoggingOut: the connection ends"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/blockbreak/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "onStartBreakingBlock",
          "kind": "inject",
          "method": "lambda$startDestroyBlock$1",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;destroyBlockProgress(ILnet/minecraft/core/BlockPos;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#lambda$startDestroyBlock$1 INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/blockbreak/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "onInstabreakBlockSurvival",
          "kind": "inject",
          "method": "lambda$startDestroyBlock$1",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;destroyBlock(Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#lambda$startDestroyBlock$1 INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/blockbreak/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "onStopBreakingBlock",
          "kind": "inject",
          "method": "stopDestroyBlock",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#stopDestroyBlock RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/blockbreak/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "onFinishBreakingBlock",
          "kind": "inject",
          "method": "continueDestroyBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;startPrediction(Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/client/multiplayer/prediction/PredictiveAction;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#continueDestroyBlock INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/damage/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onDamageEvent",
          "kind": "inject",
          "method": "handleDamageEvent",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/damage/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onHurtAnimation",
          "kind": "inject",
          "method": "handleHurtAnimation",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;animateHurt(F)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/explosion/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onClientExplosion",
          "kind": "inject",
          "method": "handleExplosion",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/fishing/FishingHookMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/FishingHook"
          ],
          "handler": "onClientRemoval",
          "kind": "inject",
          "method": "onClientRemoval",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/FishingHook#onClientRemoval RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/fishing/FishingHookMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/FishingHook"
          ],
          "handler": "onOwnerSet",
          "kind": "inject",
          "method": "setOwner",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/FishingHook#setOwner RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/itembreak/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "onBreakItemParticles",
          "kind": "inject",
          "method": "breakItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;spawnItemParticles(Lnet/minecraft/world/item/ItemStack;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#breakItem INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/levelevents/LevelEventHandlerMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelEventHandler"
          ],
          "handler": "onLevelEvent",
          "kind": "inject",
          "method": "levelEvent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelEventHandler#levelEvent HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/levelevents/LevelEventHandlerMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelEventHandler"
          ],
          "handler": "onGlobalLevelEvent",
          "kind": "inject",
          "method": "globalLevelEvent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelEventHandler#globalLevelEvent HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/slowblock/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "manageSlowBlockRumble",
          "kind": "inject",
          "method": "aiStep",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/ClientInput;tick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/LocalPlayer#aiStep INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/useitem/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "clearUseItemRumble",
          "kind": "inject",
          "method": "handleRespawn",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/Minecraft;player:Lnet/minecraft/client/player/LocalPlayer;",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/useitem/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "onStartUsingItem",
          "kind": "inject",
          "method": "startUsingItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;getUseDuration(Lnet/minecraft/world/entity/LivingEntity;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#startUsingItem INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/useitem/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "onStopUsingItem",
          "kind": "inject",
          "method": "stopUsingItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#stopUsingItem HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/useitem/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "onUpdateUsingItem",
          "kind": "inject",
          "method": "updateUsingItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#updateUsingItem HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/rumble/waterland/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "splashRumble",
          "kind": "inject",
          "method": "doWaterSplashEffect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#doWaterSplashEffect HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "changeScreen",
          "kind": "inject",
          "method": "setScreen",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;updateTitle()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#setScreen INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "preventRemovingOldScreen",
          "kind": "wrap-with-condition",
          "method": "setScreen",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;removed()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "onScreenInitialInit",
          "kind": "inject",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;init()V",
          "cancellable": false,
          "hook": "screen_init_post",
          "why": "ScreenEvent.Init.Post: a screen's widgets are built, where a mod adds its own"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "onScreenInit",
          "kind": "inject",
          "method": "rebuildWidgets",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#rebuildWidgets RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "clearFocusBeforeTabbing",
          "kind": "inject",
          "method": "setInitialFocus",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#setInitialFocus HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/impl/chat/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "addKeyboard",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ChatScreen#init HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/impl/chat/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "modifyInitialFocus",
          "kind": "modify-arg",
          "method": "setInitialFocus",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/ChatScreen;setInitialFocus(Lnet/minecraft/client/gui/components/events/GuiEventListener;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/impl/container/AbstractContainerScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "setPrevSlotShare",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractRenderState HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/impl/container/AbstractContainerScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "triggerSlotHovered",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractRenderState RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/impl/container/CreativeModeInventoryScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen"
          ],
          "handler": "fixSearchUpdate",
          "kind": "inject",
          "method": "init",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#init RETURN"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/impl/elements/AbstractWidgetMixin",
          "targets": [
            "net/minecraft/client/gui/components/AbstractWidget"
          ],
          "handler": "openKeyboardInVmouseMode",
          "kind": "wrap-with-condition",
          "method": "mouseClicked",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/AbstractWidget;onClick(Lnet/minecraft/client/input/MouseButtonEvent;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/impl/elements/EditBoxMixin",
          "targets": [
            "net/minecraft/client/gui/components/EditBox"
          ],
          "handler": "preventShowingCursor",
          "kind": "modify-variable",
          "method": "extractWidgetRenderState",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/impl/sign/AbstractSignEditScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen"
          ],
          "handler": "addKeyboard",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#init HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/screenop/impl/sign/AbstractSignEditScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen"
          ],
          "handler": "shouldAddDoneButton",
          "kind": "wrap-operation",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/AbstractSignEditScreen;addRenderableWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/settingsbutton/ControlsScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/options/controls/ControlsScreen"
          ],
          "handler": "addControllerSettings",
          "kind": "inject",
          "method": "addOptions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/OptionsList;addSmall([Lnet/minecraft/client/OptionInstance;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/controls/ControlsScreen#addOptions INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/util/ConnectScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ConnectScreen"
          ],
          "handler": "onConnect",
          "kind": "inject",
          "method": "connect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ConnectScreen#connect HEAD"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/virtualmouse/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "onScreenChanged",
          "kind": "inject",
          "method": "setScreen",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;updateTitle()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#setScreen INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/virtualmouse/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onUpdateMouse",
          "kind": "inject",
          "method": "runTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/MouseHandler;handleAccumulatedMovement()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#runTick INVOKE"
        },
        {
          "mixin": "dev/isxander/controlify/mixins/feature/virtualmouse/MouseHandlerMixin",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "shouldReleaseMouse",
          "kind": "wrap-with-condition",
          "method": "releaseMouse",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/InputConstants;releaseMouse(Lcom/mojang/blaze3d/platform/Window;DD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        }
      ],
      "listening": 30,
      "accessors": 44,
      "hooks": {
        "client_disconnecting": 1,
        "hud": 2,
        "net_from_server": 5,
        "screen_init_post": 1,
        "screen_opening": 1
      },
      "wanted": {
        "com/mojang/blaze3d/platform/InputConstants#releaseMouse @HEAD": 1,
        "dev/isxander/yacl3/gui/YACLScreen$CategoryTab#<init> @RETURN": 1,
        "net/minecraft/client/Minecraft#onGameLoadFinished @RETURN": 1,
        "net/minecraft/client/MouseHandler#releaseMouse @RETURN": 1,
        "net/minecraft/client/gui/components/AbstractWidget#setMessage @RETURN": 1,
        "net/minecraft/client/gui/components/tabs/TabNavigationBar#extractWidgetRenderState @RETURN": 1,
        "net/minecraft/client/gui/screens/ChatScreen#init @HEAD": 1,
        "net/minecraft/client/gui/screens/ConnectScreen#connect @HEAD": 1,
        "net/minecraft/client/gui/screens/Screen#rebuildWidgets @RETURN": 1,
        "net/minecraft/client/gui/screens/Screen#setInitialFocus @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractRenderState @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractRenderState @RETURN": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#init @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#init @RETURN": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#stopDestroyBlock @RETURN": 1,
        "net/minecraft/client/renderer/LevelEventHandler#globalLevelEvent @HEAD": 1,
        "net/minecraft/client/renderer/LevelEventHandler#levelEvent @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#stopUsingItem @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#updateUsingItem @HEAD": 1,
        "net/minecraft/world/entity/player/Player#doWaterSplashEffect @HEAD": 1,
        "net/minecraft/world/entity/projectile/FishingHook#onClientRemoval @RETURN": 1,
        "net/minecraft/world/entity/projectile/FishingHook#setOwner @RETURN": 1,
        "net/minecraft/world/entity/vehicle/boat/AbstractBoat#setInput @HEAD": 1
      },
      "wanted_calls": {
        "com/mojang/blaze3d/platform/InputConstants#releaseMouse @INVOKE (wrap-with-condition)": 1,
        "com/mojang/blaze3d/platform/SDLEventHandler#handleKeyEvent @INVOKE": 1,
        "com/mojang/blaze3d/platform/SDLEventHandler#handleMouseButtonEvent @INVOKE": 1,
        "com/mojang/blaze3d/platform/SDLEventHandler#handleMouseMotionEvent @INVOKE": 1,
        "com/mojang/blaze3d/platform/SDLEventHandler#handleMouseWheelEvent @INVOKE": 1,
        "com/mojang/blaze3d/platform/SDLEventHandler#handleTextEditingCandidatesEvent @INVOKE": 1,
        "com/mojang/blaze3d/platform/SDLEventHandler#handleTextEditingEvent @INVOKE": 1,
        "com/mojang/blaze3d/platform/SDLEventHandler#handleTextInputEvent @INVOKE": 1,
        "net/minecraft/client/Minecraft#close @INVOKE": 1,
        "net/minecraft/client/Minecraft#renderFrame @INVOKE": 1,
        "net/minecraft/client/Minecraft#runTick @INVOKE": 2,
        "net/minecraft/client/MouseHandler#releaseMouse @INVOKE": 1,
        "net/minecraft/client/gui/Gui#setScreen @INVOKE": 4,
        "net/minecraft/client/gui/components/AbstractWidget#onClick @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/gui/components/EditBox#extractWidgetRenderState @STORE (modify-variable)": 1,
        "net/minecraft/client/gui/screens/ChatScreen#setInitialFocus @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/screens/Screen#removed @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#addRenderableWidget @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/options/controls/ControlsScreen#addOptions @INVOKE": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#continueDestroyBlock @INVOKE": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#lambda$startDestroyBlock$1 @INVOKE": 2,
        "net/minecraft/client/player/ClientInput#hasForwardImpulse @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/player/LocalPlayer#aiStep @INVOKE": 1,
        "net/minecraft/network/chat/contents/KeybindContents#getNestedComponent @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/LivingEntity#breakItem @INVOKE": 1,
        "net/minecraft/world/entity/LivingEntity#startUsingItem @INVOKE": 1,
        "net/minecraft/world/entity/vehicle/boat/AbstractBoat#controlBoat @INVOKE": 1,
        "net/minecraft/world/entity/vehicle/boat/AbstractBoat#controlBoat @STORE (modify-variable)": 1,
        "net/minecraft/world/entity/vehicle/boat/AbstractBoat#setInput @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FriendlyByteBufs",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "ClientLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents$ClientStopping",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLoginNetworking",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientLoginNetworking$LoginQueryRequestHandler",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientTags",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "CommonLifecycleEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CommonLifecycleEvents$TagsLoaded",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DedicatedServerModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EventFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricCreativeModeInventoryScreen",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "HudElementRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LoginPacketSender",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PackActivationType",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterExtract",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$BeforeInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLoginConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLoginConnectionEvents$QueryStart",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLoginNetworking",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLoginNetworking$LoginQueryResponseHandler",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLoginNetworking$LoginSynchronizer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 753,
        "features": {
          "screen": 23,
          "command": 1,
          "network": 2,
          "events": 4,
          "mixin": 133
        },
        "events": [
          "Event",
          "EventFactory",
          "PlayerEvent",
          "TagsUpdatedEvent"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 753,
        "methods": 2701,
        "tried": 600,
        "completed": 243,
        "handlers_tried": 10,
        "handlers_completed": 1,
        "missing": {
          "[Ldev/isxander/controlify/api/contextual/GuideVerbosity;#clone()Ljava/lang/Object;": 1,
          "[Ldev/isxander/controlify/controller/gyro/GyroYawMode;#clone()Ljava/lang/Object;": 1,
          "[Ldev/isxander/controlify/driver/sdl/SDLJoystickConnectionState;#clone()Ljava/lang/Object;": 2,
          "[Ldev/isxander/controlify/gui/layout/ColumnLayoutComponent$ElementPosition;#clone()Ljava/lang/Object;": 1,
          "[Ldev/isxander/controlify/server/ServerPolicies;#clone()Ljava/lang/Object;": 2,
          "[Ldev/isxander/controlify/utils/log/LogLevel;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/ImmutableList#copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;": 1,
          "dev/isxander/controlify/api/contextual/GuideVerbosity#name()Ljava/lang/String;": 2,
          "dev/isxander/controlify/controller/gyro/GyroState#set(FFF)Lorg/joml/Vector3f;": 1,
          "dev/isxander/controlify/controller/gyro/GyroStateC#x()F": 4,
          "dev/isxander/controlify/controller/gyro/GyroYawMode#name()Ljava/lang/String;": 1,
          "dev/isxander/controlify/controller/input/ControllerState#getHatState(Lnet/minecraft/resources/Identifier;)Ldev/isxander/controlify/controller/input/HatState;": 1,
          "dev/isxander/controlify/controller/input/ControllerState#isButtonDown(Lnet/minecraft/resources/Identifier;)Z": 2,
          "dev/isxander/controlify/gui/controllers/BindController$BindControllerElement#getDimension()Ldev/isxander/yacl3/api/utils/Dimension;": 2,
          "dev/isxander/controlify/gui/controllers/BindController$BindControllerElement#isFocused()Z": 1,
          "dev/isxander/controlify/gui/screen/ProfileSelectionScreen$ProfileCard#defaultButtonNarrationText(Lnet/minecraft/client/gui/narration/NarrationElementOutput;)V": 1,
          "dev/isxander/controlify/gui/screen/RadialMenuEditScreen#getFocused()Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "dev/isxander/controlify/gui/screen/RadialMenuEditScreen$TransferTarget#defaultButtonNarrationText(Lnet/minecraft/client/gui/narration/NarrationElementOutput;)V": 1,
          "dev/isxander/controlify/mixins/feature/rumble/slowblock/LocalPlayerMixin#getBlockSpeedFactor()F": 1,
          "dev/isxander/controlify/server/ServerPolicy#ordinal()I": 1,
          "dev/isxander/sdl/Sdl#joystick()Ldev/isxander/sdl/SdlJoystick;": 1,
          "dev/isxander/sdl/SdlGuid#data()[B": 1,
          "java/lang/Long#toString(J)Ljava/lang/String;": 1,
          "java/lang/Runnable#run()V": 1,
          "java/lang/foreign/MemoryLayout$PathElement#groupElement(Ljava/lang/String;)Ljava/lang/foreign/MemoryLayout$PathElement;": 1,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Arrays#stream([Ljava/lang/Object;)Ljava/util/stream/Stream;": 2,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collections#unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;": 1,
          "java/util/List#of()Ljava/util/List;": 1,
          "java/util/List#of(Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/List#of([Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Map#copyOf(Ljava/util/Map;)Ljava/util/Map;": 1,
          "java/util/Queue#poll()Ljava/lang/Object;": 1,
          "java/util/Set#of()Ljava/util/Set;": 1,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 3,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 4,
          "net/fabricmc/fabric/api/client/creativetab/v1/FabricCreativeModeInventoryScreen#getCurrentPage()I": 1,
          "net/fabricmc/fabric/api/client/creativetab/v1/FabricCreativeModeInventoryScreen#getPageCount()I": 1,
          "net/fabricmc/fabric/api/client/creativetab/v1/FabricCreativeModeInventoryScreen#getSelectedTab()Lnet/minecraft/world/item/CreativeModeTab;": 1,
          "net/fabricmc/fabric/api/client/creativetab/v1/FabricCreativeModeInventoryScreen#getTabsOnPage(I)Ljava/util/List;": 1,
          "net/fabricmc/fabric/api/client/creativetab/v1/FabricCreativeModeInventoryScreen#setSelectedTab(Lnet/minecraft/world/item/CreativeModeTab;)Z": 1,
          "net/fabricmc/fabric/api/client/creativetab/v1/FabricCreativeModeInventoryScreen#switchToPage(I)Z": 1,
          "net/minecraft/client/Minecraft#getDebugOverlay()Lnet/minecraft/client/gui/components/DebugScreenOverlay;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 16,
          "net/minecraft/client/Minecraft#getWindow()Lcom/mojang/blaze3d/platform/Window;": 1,
          "net/minecraft/client/gui/Font#width(Lnet/minecraft/network/chat/FormattedText;)I": 1,
          "net/minecraft/client/gui/Font#width(Lnet/minecraft/util/FormattedCharSequence;)I": 1,
          "net/minecraft/client/gui/GuiGraphicsExtractor#fill(IIIII)V": 1,
          "net/minecraft/client/gui/components/AbstractButton#isFocused()Z": 1,
          "net/minecraft/client/gui/components/AbstractButton#setFocused(Z)V": 1,
          "net/minecraft/client/gui/components/EditBox#moveCursor(IZ)V": 1,
          "net/minecraft/client/gui/components/ImageWidget#updateResource(Lnet/minecraft/resources/Identifier;)V": 1,
          "net/minecraft/client/gui/components/toasts/SystemToast$SystemToastId#PERIODIC_NOTIFICATION": 1,
          "net/minecraft/client/gui/layouts/HeaderAndFooterLayout#arrangeElements()V": 1,
          "net/minecraft/client/gui/narration/NarratableEntry$NarrationPriority#NONE": 1,
          "net/minecraft/client/gui/narration/NarratedElementType#TITLE": 1,
          "net/minecraft/client/gui/render/TextureSetup#noTexture()Lnet/minecraft/client/gui/render/TextureSetup;": 1,
          "net/minecraft/client/gui/screens/Screen#extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/Screen#keyPressed(Lnet/minecraft/client/input/KeyEvent;)Z": 1,
          "net/minecraft/client/gui/screens/Screen#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "net/minecraft/client/gui/screens/Screen#mouseDragged(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z": 1,
          "net/minecraft/client/gui/screens/Screen#mouseScrolled(DDDD)Z": 1,
          "net/minecraft/core/component/DataComponents#ITEM_MODEL": 1,
          "net/minecraft/network/chat/CommonComponents#GUI_DONE": 1,
          "net/minecraft/network/protocol/game/ClientboundExplodePacket#center()Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/world/item/ItemStack#getUseAnimation()Lnet/minecraft/world/item/ItemUseAnimation;": 1,
          "new com/mojang/datafixers/DataFixerBuilder": 1,
          "new it/unimi/dsi/fastutil/objects/ObjectArraySet": 2,
          "new net/minecraft/client/input/CharacterEvent": 1,
          "new net/minecraft/client/input/KeyEvent": 1,
          "org/joml/Vector3f#<init>(Lorg/joml/Vector3fc;)V": 1,
          "org/joml/Vector3f#div(F)Lorg/joml/Vector3f;": 2,
          "org/joml/Vector3f#div(Lorg/joml/Vector3fc;)Lorg/joml/Vector3f;": 2,
          "org/joml/Vector3f#mul(F)Lorg/joml/Vector3f;": 2,
          "org/joml/Vector3f#mul(Lorg/joml/Vector3fc;)Lorg/joml/Vector3f;": 2,
          "org/joml/Vector3f#sub(FFF)Lorg/joml/Vector3f;": 2,
          "org/joml/Vector3f#sub(Lorg/joml/Vector3fc;)Lorg/joml/Vector3f;": 2
        },
        "runs": [
          {
            "class": "dev/isxander/controlify/screenop/compat/vanilla/EditBoxComponentProcessor$EditBoxInputTarget",
            "method": "supportsCharInput",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/screenop/compat/vanilla/EditBoxComponentProcessor$EditBoxInputTarget",
            "method": "supportsKeyCodeInput",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/screenop/compat/vanilla/EditBoxComponentProcessor$EditBoxInputTarget",
            "method": "supportsCursorMovement",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/screenop/compat/vanilla/EditBoxComponentProcessor$EditBoxInputTarget",
            "method": "supportsCopying",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/api/bind/RadialIcon",
            "method": "model",
            "desc": "(Lnet/minecraft/resources/Identifier;)Ldev/isxander/controlify/api/bind/RadialIcon;",
            "value": "obj#38"
          },
          {
            "class": "dev/isxander/controlify/api/bind/RadialIcon",
            "method": "texture",
            "desc": "(Lnet/minecraft/resources/Identifier;)Ldev/isxander/controlify/api/bind/RadialIcon;",
            "value": "obj#40"
          },
          {
            "class": "dev/isxander/controlify/api/bind/RadialIcon",
            "method": "withOverlay",
            "desc": "(Lnet/minecraft/network/chat/Component;)Ldev/isxander/controlify/api/bind/RadialIcon;",
            "value": "obj#43"
          },
          {
            "class": "dev/isxander/controlify/controllermanager/AbstractControllerManager",
            "method": "isControllerConnected",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/compatibility/sodium/mixins/FlatButtonWidgetMixin",
            "method": "shouldRender",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/compatibility/sodium/mixins/FlatButtonWidgetMixin",
            "method": "getBind",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#61"
          },
          {
            "class": "dev/isxander/controlify/server/ServerPolicies",
            "method": "getUnsetValue",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/server/ServerPolicies",
            "method": "isUnset",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/driver/sdl/SDLCommonDriver",
            "method": "isBluetooth",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/compatibility/yacl/screenop/StringControllerElementComponentProcessor$StringInputTarget",
            "method": "supportsCharInput",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/compatibility/yacl/screenop/StringControllerElementComponentProcessor$StringInputTarget",
            "method": "supportsKeyCodeInput",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/compatibility/yacl/screenop/StringControllerElementComponentProcessor$StringInputTarget",
            "method": "supportsCursorMovement",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/compatibility/yacl/screenop/StringControllerElementComponentProcessor$StringInputTarget",
            "method": "moveCursor",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/compatibility/yacl/screenop/StringControllerElementComponentProcessor$StringInputTarget",
            "method": "supportsCopying",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/driver/dualsense/DualsenseTriggerEffect$Vibration",
            "method": "position",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/driver/dualsense/DualsenseTriggerEffect$Vibration",
            "method": "amplitude",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/driver/dualsense/DualsenseTriggerEffect$Vibration",
            "method": "frequency",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GenericControllerConfig$GuideConfig",
            "method": "showIngameGuide",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GenericControllerConfig$GuideConfig",
            "method": "ingameGuideButtom",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GenericControllerConfig$GuideConfig",
            "method": "showScreenGuides",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GenericControllerConfig$GuideConfig",
            "method": "ingameGuiScale",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GenericControllerConfig$GuideConfig",
            "method": "screenGuiScale",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget$Delegated",
            "method": "supportsCharInput",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget$Delegated",
            "method": "acceptChar",
            "desc": "(CI)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget$Delegated",
            "method": "supportsKeyCodeInput",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget$Delegated",
            "method": "acceptKeyCode",
            "desc": "(III)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget$Delegated",
            "method": "supportsCopying",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget$Delegated",
            "method": "copy",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget$Delegated",
            "method": "supportsCursorMovement",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget$Delegated",
            "method": "moveCursor",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/rumble/TriggerRumbleState",
            "method": "isZero",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/controlify/rumble/TriggerRumbleState",
            "method": "mul",
            "desc": "(F)Ldev/isxander/controlify/rumble/TriggerRumbleState;",
            "value": "obj#208"
          },
          {
            "class": "dev/isxander/controlify/rumble/TriggerRumbleState",
            "method": "left",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/isxander/controlify/rumble/TriggerRumbleState",
            "method": "right",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/isxander/controlify/config/settings/profile/GyroSettings",
            "method": "toDTO",
            "desc": "()Ldev/isxander/controlify/config/dto/profile/GyroConfig;",
            "value": "obj#218"
          },
          {
            "class": "dev/isxander/controlify/utils/animation/impl/AnimationSequenceImpl",
            "method": "hasStarted",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/utils/animation/impl/AnimationSequenceImpl",
            "method": "isDone",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/utils/animation/impl/AnimationSequenceImpl",
            "method": "isPlaying",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/driver/dualsense/DualsenseTriggerEffect$Feedback",
            "method": "position",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/driver/dualsense/DualsenseTriggerEffect$Feedback",
            "method": "strength",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/driver/sdl/SDLJoystickConnectionState",
            "method": "asInt",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/mixins/feature/rumble/blockbreak/MultiPlayerGameModeMixin",
            "method": "onAbortBreakingBlock",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/ScreenProcessorFactory",
            "method": "createDefault",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Ldev/isxander/controlify/screenop/ScreenProcessor;",
            "value": "obj#256"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/KeyboardLayoutManager$KeyboardLayoutKey",
            "method": "withLanguage",
            "desc": "(Ljava/lang/String;)Ldev/isxander/controlify/screenop/keyboard/KeyboardLayoutManager$KeyboardLayoutKey;",
            "value": "obj#263"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/DualsenseConfig",
            "method": "triggerEffects",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/KeyboardLayout$KeyFunction$CodeFunc$KeyCode",
            "method": "keycode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/KeyboardLayout$KeyFunction$CodeFunc$KeyCode",
            "method": "scancode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/KeyboardLayout$KeyFunction$CodeFunc$KeyCode",
            "method": "modifier",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/api/contextual/GuideVerbosity",
            "method": "getLevel",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/gui/screen/RadialMenuEditScreen$Processor",
            "method": "virtualMouseBehaviour",
            "desc": "()Ldev/isxander/controlify/virtualmouse/VirtualMouseBehaviour;",
            "value": "obj#360"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GyroConfig",
            "method": "lookSensitivity",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GyroConfig",
            "method": "relativeMode",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GyroConfig",
            "method": "invertPitch",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GyroConfig",
            "method": "invertYaw",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/config/dto/profile/GyroConfig",
            "method": "flickStick",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/mixins/feature/screenop/impl/elements/AbstractButtonMixin",
            "method": "componentProcessor",
            "desc": "()Ldev/isxander/controlify/screenop/ComponentProcessor;",
            "value": "obj#377"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/FallbackKeyboardLayout",
            "method": "k",
            "desc": "(Ldev/isxander/controlify/screenop/keyboard/KeyboardLayout$KeyFunction$SpecialFunc$Action;FLdev/isxander/controlify/api/bind/InputBindingSupplier;)Ldev/isxander/controlify/screenop/keyboard/KeyboardLayout$Key;",
            "value": "obj#390"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/FallbackKeyboardLayout",
            "method": "k",
            "desc": "(Ljava/lang/String;)Ldev/isxander/controlify/screenop/keyboard/KeyboardLayout$Key;",
            "value": "obj#393"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/FallbackKeyboardLayout",
            "method": "k",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ldev/isxander/controlify/screenop/keyboard/KeyboardLayout$Key;",
            "value": "obj#397"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/FallbackKeyboardLayout",
            "method": "k",
            "desc": "(Ljava/lang/String;F)Ldev/isxander/controlify/screenop/keyboard/KeyboardLayout$Key;",
            "value": "obj#401"
          },
          {
            "class": "dev/isxander/controlify/utils/PrecomputedComponentDims",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/utils/PrecomputedComponentDims",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/controller/input/mapping/MappingEntry$FromButton$ToButton",
            "method": "invert",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/config/ConfigManager$ProfileLoad",
            "method": "requiresSaving",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/gui/guide/PrecomputedLines",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/gui/guide/PrecomputedLines",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/server/ControlifyServer",
            "method": "getInstance",
            "desc": "()Ldev/isxander/controlify/server/ControlifyServer;",
            "value": "obj#468"
          },
          {
            "class": "dev/isxander/controlify/mixins/feature/screenop/impl/container/MerchantScreenMixin",
            "method": "accumulateScrolling",
            "desc": "(ZD)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/mixins/feature/screenop/impl/container/MerchantScreenMixin",
            "method": "useAccumulatedScrollField",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/driver/sdl/SDLNativesLoader",
            "method": "loadFromLwjgl",
            "desc": "(Ljava/util/ServiceLoader;)Ljava/util/Optional;",
            "value": "obj#519"
          },
          {
            "class": "dev/isxander/controlify/gui/screen/ControllerMappingMakerScreen$MappingStage",
            "method": "isSatisfied",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/gui/screen/RadialMenuScreen",
            "method": "pageCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/gui/screen/RadialMenuScreen",
            "method": "isPauseScreen",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/api/ControlifyApi",
            "method": "get",
            "desc": "()Ldev/isxander/controlify/api/ControlifyApi;",
            "value": "obj#112"
          },
          {
            "class": "dev/isxander/controlify/mixins/feature/screenop/impl/outofgame/TitleScreenMixin",
            "method": "screenProcessor",
            "desc": "()Ldev/isxander/controlify/screenop/ScreenProcessor;",
            "value": "obj#551"
          },
          {
            "class": "dev/isxander/controlify/bindings/ControlifyBindApiImpl",
            "method": "provideBindsForController",
            "desc": "(Ldev/isxander/controlify/controller/ControllerEntity;)Ljava/util/List;",
            "value": "obj#586"
          },
          {
            "class": "dev/isxander/controlify/bindings/ControlifyBindApiImpl",
            "method": "createSupplier",
            "desc": "(Lnet/minecraft/resources/Identifier;)Ldev/isxander/controlify/api/bind/InputBindingSupplier;",
            "value": "obj#594"
          },
          {
            "class": "dev/isxander/controlify/compatibility/CompatMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget",
            "method": "supportsCharInput",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget",
            "method": "acceptChar",
            "desc": "(CI)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget",
            "method": "supportsKeyCodeInput",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget",
            "method": "acceptKeyCode",
            "desc": "(III)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget",
            "method": "supportsCopying",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget",
            "method": "copy",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget",
            "method": "supportsCursorMovement",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/InputTarget",
            "method": "moveCursor",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/screenop/keyboard/KeyboardLayout$KeyFunction$ChangeLayoutFunc",
            "method": "fromCodec",
            "desc": "(Lnet/minecraft/resources/Identifier;Lnet/minecraft/network/chat/Component;)Ldev/isxander/controlify/screenop/keyboard/KeyboardLayout$KeyFunction$ChangeLayoutFunc;",
            "value": "obj#663"
          },
          {
            "class": "dev/isxander/controlify/utils/predicates/EntityEquipmentPredicate",
            "method": "matches",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/contextual/ContextualPredicate$Static",
            "method": "matches",
            "desc": "(Ldev/isxander/controlify/contextual/ContextualState;)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/controlify/contextual/ContextualPredicate$Static",
            "method": "value",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 4559
      },
      "verdict": "partly",
      "summary": "10 of 30 listening patch sites land on a Horizon hook (33%); of 67 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "controlling",
      "name": "Controlling",
      "version": "26.3.4",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [],
      "mixin_configs": [
        "controlling.mixins.json",
        "controlling.fabric.mixins.json"
      ],
      "depends": [
        "searchables"
      ],
      "classes": 46,
      "methods": 228,
      "sites": [
        {
          "mixin": "com/blamejared/controlling/mixin/OpenGuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "upgradeControlScreen",
          "kind": "modify-variable",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        }
      ],
      "listening": 0,
      "accessors": 8,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/gui/Gui#setScreen @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "EventFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 46,
        "features": {
          "screen": 8,
          "events": 2,
          "mixin": 6
        },
        "events": [
          "Event",
          "EventFactory"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 46,
        "methods": 119,
        "tried": 119,
        "completed": 50,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/blamejared/controlling/api/DisplayMode;#clone()Ljava/lang/Object;": 1,
          "[Lcom/blamejared/controlling/api/SortOrder;#clone()Ljava/lang/Object;": 2,
          "com/blamejared/searchables/api/autcomplete/AutoCompletingEditBox#autoComplete()Lcom/blamejared/searchables/api/autcomplete/AutoComplete;": 1,
          "com/blamejared/searchables/api/autcomplete/AutoCompletingEditBox#getValue()Ljava/lang/String;": 1,
          "com/blamejared/searchables/api/autcomplete/AutoCompletingEditBox#isFocused()Z": 1,
          "com/google/common/collect/ImmutableList#of()Lcom/google/common/collect/ImmutableList;": 4,
          "com/google/common/collect/ImmutableList#of(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;": 1,
          "java/util/Comparator#compare(Ljava/lang/Object;Ljava/lang/Object;)I": 2,
          "java/util/List#of(Ljava/lang/Object;)Ljava/util/List;": 2,
          "net/minecraft/client/KeyMapping#getDefaultKey()Lcom/mojang/blaze3d/platform/InputConstants$Key;": 1,
          "net/minecraft/client/KeyMapping#getName()Ljava/lang/String;": 1,
          "net/minecraft/client/KeyMapping#setKey(Lcom/mojang/blaze3d/platform/InputConstants$Key;)V": 1,
          "net/minecraft/client/gui/screens/options/controls/KeyBindsList#addEntry(Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;)I": 3,
          "net/minecraft/client/gui/screens/options/controls/KeyBindsList#clearEntries()V": 1,
          "net/minecraft/client/gui/screens/options/controls/KeyBindsList#sort(Ljava/util/Comparator;)V": 1,
          "net/minecraft/client/gui/screens/options/controls/KeyBindsScreen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/options/controls/KeyBindsScreen#init()V": 1,
          "net/minecraft/client/gui/screens/options/controls/KeyBindsScreen#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "net/minecraft/client/gui/screens/options/controls/KeyBindsScreen#repositionElements()V": 1
        },
        "runs": [
          {
            "class": "com/blamejared/controlling/client/NewKeyBindsScreen",
            "method": "getAccess",
            "desc": "()Lcom/blamejared/controlling/mixin/AccessKeyBindsScreen;",
            "value": "obj#15"
          },
          {
            "class": "com/blamejared/controlling/api/event/KeyEntryRenderEvent",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/api/event/KeyEntryRenderEvent",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/api/event/KeyEntryRenderEvent",
            "method": "rowLeft",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/api/event/KeyEntryRenderEvent",
            "method": "rowWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/api/event/KeyEntryRenderEvent",
            "method": "hovered",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/api/event/KeyEntryRenderEvent",
            "method": "partialTicks",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/blamejared/controlling/api/event/KeyEntryMouseReleasedEvent",
            "method": "handled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/platform/IPlatformHelper",
            "method": "hasConflictingModifier",
            "desc": "(Lnet/minecraft/client/KeyMapping;Lnet/minecraft/client/KeyMapping;)Z",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/platform/IPlatformHelper",
            "method": "isKeyCodeModifier",
            "desc": "(Lcom/mojang/blaze3d/platform/InputConstants$Key;)Z",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/platform/IPlatformHelper",
            "method": "handleKeyReleased",
            "desc": "(Lcom/blamejared/controlling/client/NewKeyBindsScreen;Lnet/minecraft/client/Options;Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/client/DisplayableBoolean",
            "method": "state",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/client/DisplayableBoolean",
            "method": "toggle",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/blamejared/controlling/api/event/KeyEntryMouseClickedEvent",
            "method": "doubleClick",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/blamejared/controlling/api/event/KeyEntryMouseClickedEvent",
            "method": "handled",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 495
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "crash_assistant",
      "name": "Crash Assistant",
      "version": "1.11.14",
      "license": "KostromDan's Modded Minecraft License (Version 1.1.3)",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/kostromdan/mods/crash_assistant/fabric/client/CrashAssistantFabricClient"
        },
        {
          "kind": "main",
          "value": "dev/kostromdan/mods/crash_assistant/fabric/CrashAssistantFabric"
        }
      ],
      "mixin_configs": [
        "crash_assistant.mixins.json",
        "crash_assistant-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 692,
      "methods": 6439,
      "sites": [
        {
          "mixin": "dev/kostromdan/mods/crash_assistant/fabric/mixin/IntegratedServerMixin",
          "targets": [
            "net/minecraft/client/server/IntegratedServer"
          ],
          "handler": "handleServerStarting",
          "kind": "inject",
          "method": "initServer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/server/IntegratedServer#initServer RETURN"
        },
        {
          "mixin": "dev/kostromdan/mods/crash_assistant/fabric/mixin/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "onGameJoin",
          "kind": "inject",
          "method": "placeNewPlayer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "player_logged_in",
          "why": "PlayerEvent.PlayerLoggedInEvent"
        },
        {
          "mixin": "dev/kostromdan/mods/crash_assistant/common/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "afterInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "client_start",
          "why": "the client object is built"
        },
        {
          "mixin": "dev/kostromdan/mods/crash_assistant/common/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "stop",
          "kind": "inject",
          "method": "stop",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#stop RETURN"
        },
        {
          "mixin": "dev/kostromdan/mods/crash_assistant/common/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onCloseFailed",
          "kind": "inject",
          "method": "close",
          "at": "INVOKE",
          "at_target": "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Throwable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#close INVOKE"
        },
        {
          "mixin": "dev/kostromdan/mods/crash_assistant/common/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "beforeEmergencySave",
          "kind": "inject",
          "method": "emergencySave",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#emergencySave HEAD"
        },
        {
          "mixin": "dev/kostromdan/mods/crash_assistant/common/mixin/TitleScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "onClientLoaded",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/TitleScreen#tick RETURN"
        }
      ],
      "listening": 6,
      "accessors": 0,
      "hooks": {
        "client_start": 1,
        "player_logged_in": 1
      },
      "wanted": {
        "net/minecraft/client/Minecraft#emergencySave @HEAD": 1,
        "net/minecraft/client/Minecraft#stop @RETURN": 1,
        "net/minecraft/client/gui/screens/TitleScreen#tick @RETURN": 1,
        "net/minecraft/client/server/IntegratedServer#initServer @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Minecraft#close @INVOKE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LanguageAdapter",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LanguageAdapterException",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 692,
        "features": {
          "command": 1,
          "mixin": 4
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 692,
        "methods": 4834,
        "tried": 600,
        "completed": 198,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "[Ldev/kostromdan/mods/crash_assistant/common_config/utils/ModVersionsHelper$VersionRange;#clone()Ljava/lang/Object;": 1,
          "com/sun/jna/platform/win32/Kernel32#INSTANCE": 10,
          "crash_assistant_relocated_libs/jexl3/JexlOperator#ordinal()I": 9,
          "crash_assistant_relocated_libs/jexl3/internal/introspection/DuckSetExecutor#TRY_FAILED": 1,
          "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions#validate(Ljava/lang/Class;)Z": 2,
          "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions#validate(Ljava/lang/Package;)Z": 1,
          "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions#validate(Ljava/lang/reflect/Constructor;)Z": 1,
          "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions#validate(Ljava/lang/reflect/Field;)Z": 1,
          "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions#validate(Ljava/lang/reflect/Method;)Z": 1,
          "crash_assistant_relocated_libs/nightconfig/core/Config$Entry#getKey()Ljava/lang/String;": 1,
          "crash_assistant_relocated_libs/nightconfig/core/Config$Entry#getRawValue()Ljava/lang/Object;": 1,
          "crash_assistant_relocated_libs/nightconfig/core/InMemoryFormat#createConcurrentConfig()Lcrash_assistant_relocated_libs/nightconfig/core/Config;": 2,
          "crash_assistant_relocated_libs/nightconfig/core/InMemoryFormat#createConfig()Lcrash_assistant_relocated_libs/nightconfig/core/Config;": 2,
          "crash_assistant_relocated_libs/nightconfig/core/file/CommentedFileConfig#commentMap()Ljava/util/Map;": 1,
          "crash_assistant_relocated_libs/nightconfig/core/file/CommentedFileConfig#get(Ljava/lang/String;)Ljava/lang/Object;": 3,
          "crash_assistant_relocated_libs/nightconfig/core/file/CommentedFileConfig#valueMap()Ljava/util/Map;": 2,
          "crash_assistant_relocated_libs/nightconfig/core/file/FileConfig#clear()V": 1,
          "crash_assistant_relocated_libs/nightconfig/core/file/FileConfig#get(Ljava/lang/String;)Ljava/lang/Object;": 2,
          "crash_assistant_relocated_libs/nightconfig/core/file/FileConfig#set(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "dev/kostromdan/mods/crash_assistant/common_config/loading_utils/ChildProcessLogger#interrupt()V": 1,
          "dev/kostromdan/mods/crash_assistant/common_config/utils/ModVersionsHelper$VersionRange#ordinal()I": 1,
          "java/io/File#toPath()Ljava/nio/file/Path;": 6,
          "java/io/Reader#close()V": 1,
          "java/io/Writer#write(I)V": 1,
          "java/io/Writer#write([CII)V": 2,
          "java/lang/Class#getEnclosingClass()Ljava/lang/Class;": 2,
          "java/lang/Class#isArray()Z": 4,
          "java/lang/Double#isNaN(D)Z": 2,
          "java/lang/ProcessBuilder#redirectErrorStream(Z)Ljava/lang/ProcessBuilder;": 2,
          "java/lang/ProcessBuilder#start()Ljava/lang/Process;": 2,
          "java/lang/RuntimeException#getMessage()Ljava/lang/String;": 2,
          "java/lang/System#getProperty(Ljava/lang/String;)Ljava/lang/String;": 8,
          "java/lang/System#setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/lang/reflect/Constructor#getDeclaringClass()Ljava/lang/Class;": 2,
          "java/lang/reflect/Constructor#getParameterCount()I": 1,
          "java/lang/reflect/Method#getName()Ljava/lang/String;": 1,
          "java/lang/reflect/Method#hashCode()I": 1,
          "java/math/BigDecimal#ZERO": 2,
          "java/math/BigInteger#ZERO": 2,
          "java/math/MathContext#getRoundingMode()Ljava/math/RoundingMode;": 1,
          "java/nio/charset/StandardCharsets#UTF_8": 3,
          "java/nio/file/Path#getFileName()Ljava/nio/file/Path;": 3,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 1,
          "java/nio/file/Paths#get(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;": 6,
          "java/util/Collections#emptyMap()Ljava/util/Map;": 1,
          "java/util/Collections#emptySet()Ljava/util/Set;": 1,
          "java/util/Enumeration#hasMoreElements()Z": 1,
          "java/util/Enumeration#nextElement()Ljava/lang/Object;": 1,
          "java/util/HashSet#add(Ljava/lang/Object;)Z": 1,
          "java/util/HashSet#clear()V": 1,
          "java/util/LinkedHashSet#iterator()Ljava/util/Iterator;": 1,
          "java/util/Properties#getProperty(Ljava/lang/String;)Ljava/lang/String;": 2,
          "java/util/Properties#getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/util/Properties#putAll(Ljava/util/Map;)V": 1,
          "java/util/concurrent/BlockingQueue#offer(Ljava/lang/Object;)Z": 3,
          "java/util/concurrent/atomic/AtomicBoolean#get()Z": 21,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 3,
          "org/slf4j/Logger#debug(Lorg/slf4j/Marker;Ljava/lang/String;)V": 1,
          "org/slf4j/Logger#debug(Lorg/slf4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V": 1,
          "org/slf4j/Logger#error(Lorg/slf4j/Marker;Ljava/lang/String;)V": 2,
          "org/slf4j/Logger#error(Lorg/slf4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V": 2,
          "org/slf4j/Logger#info(Lorg/slf4j/Marker;Ljava/lang/String;)V": 1,
          "org/slf4j/Logger#info(Lorg/slf4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V": 1,
          "org/slf4j/Logger#isDebugEnabled(Lorg/slf4j/Marker;)Z": 1,
          "org/slf4j/Logger#isErrorEnabled(Lorg/slf4j/Marker;)Z": 2,
          "org/slf4j/Logger#isInfoEnabled(Lorg/slf4j/Marker;)Z": 1,
          "org/slf4j/Logger#isTraceEnabled(Lorg/slf4j/Marker;)Z": 1,
          "org/slf4j/Logger#isWarnEnabled(Lorg/slf4j/Marker;)Z": 1,
          "org/slf4j/Logger#trace(Lorg/slf4j/Marker;Ljava/lang/String;)V": 1,
          "org/slf4j/Logger#trace(Lorg/slf4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V": 1,
          "org/slf4j/Logger#warn(Lorg/slf4j/Marker;Ljava/lang/String;)V": 1,
          "org/slf4j/Logger#warn(Lorg/slf4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V": 1
        },
        "runs": [
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/ASTTryStatement",
            "method": "hasCatchClause",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/ASTTryStatement",
            "method": "hasFinallyClause",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/TemplateEngine$CompositeExpression",
            "method": "getType",
            "desc": "()Lcrash_assistant_relocated_libs/jexl3/internal/TemplateEngine$ExpressionType;",
            "value": "obj#15"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/TemplateEngine$CompositeExpression",
            "method": "isImmediate",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions$1",
            "method": "deny",
            "desc": "(Ljava/lang/reflect/Constructor;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions$1",
            "method": "deny",
            "desc": "(Ljava/lang/reflect/Field;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions$1",
            "method": "deny",
            "desc": "(Ljava/lang/reflect/Method;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/ASTJexlLambda",
            "method": "isConstant",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/ASTJexlLambda",
            "method": "isTopLevel",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/kostromdan/mods/crash_assistant/common_config/utils/ProcessHandleUnixAbstractImpl",
            "method": "getChildProcessesInfo",
            "desc": "()Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Interpreter",
            "method": "isInstance",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Interpreter",
            "method": "putThreadInterpreter",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/internal/Interpreter;)Lcrash_assistant_relocated_libs/jexl3/internal/Interpreter;",
            "value": "obj#83"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Interpreter",
            "method": "visit",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/parser/ASTFalseNode;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Interpreter",
            "method": "visit",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/parser/ASTTrueNode;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/ASTIdentifierAccessSafeJxlt",
            "method": "isSafe",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlParser$1",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlParser$3",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"NaN\""
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Engine32$1",
            "method": "isStrictOperand",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/parser/JexlNode;)Z",
            "value": "0"
          },
          {
            "class": "dev/kostromdan/mods/crash_assistant/common_config/mod_list/history/ModListHistoryStore$LimitedReader",
            "method": "read",
            "desc": "([CII)I",
            "value": "-1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Source",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Source",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Source",
            "method": "length",
            "desc": "()I",
            "value": "4"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isMultiplyExact",
            "desc": "(JJJ)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "and",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "arrayBuilder",
            "desc": "(I)Lcrash_assistant_relocated_libs/jexl3/JexlArithmetic$ArrayBuilder;",
            "value": "obj#303"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "arrayBuilder",
            "desc": "(IZ)Lcrash_assistant_relocated_libs/jexl3/JexlArithmetic$ArrayBuilder;",
            "value": "obj#306"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "asLongNumber",
            "desc": "(ZLjava/lang/Object;)Ljava/lang/Number;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "asLongNumber",
            "desc": "(Ljava/lang/Object;)Ljava/lang/Number;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "bitwiseAnd",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "bitwiseOr",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "bitwiseXor",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "contains",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Boolean;",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "controlNullNullOperands",
            "desc": "()Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "controlNullNullOperands",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/JexlOperator;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "createRange",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Iterable;",
            "value": "obj#327"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "decrement",
            "desc": "(Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "-1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "empty",
            "desc": "(Ljava/lang/Object;)Ljava/lang/Boolean;",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "endsWith",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Boolean;",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "getMathScale",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "greaterThan",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "greaterThanOrEqual",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "increment",
            "desc": "(Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "increment",
            "desc": "(Ljava/lang/Object;I)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isEmpty",
            "desc": "(Ljava/lang/Object;)Ljava/lang/Boolean;",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isFloatingPoint",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isFloatingPointNumber",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isNegateStable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isNullOperand",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isNumberable",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isPositivizeStable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isStrict",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "isStrict",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/JexlOperator;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "lessThan",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "lessThanOrEqual",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "mapBuilder",
            "desc": "(I)Lcrash_assistant_relocated_libs/jexl3/JexlArithmetic$MapBuilder;",
            "value": "obj#360"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "mapBuilder",
            "desc": "(IZ)Lcrash_assistant_relocated_libs/jexl3/JexlArithmetic$MapBuilder;",
            "value": "obj#364"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "matches",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "narrowAccept",
            "desc": "(Ljava/lang/Class;Ljava/lang/Class;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "narrowArguments",
            "desc": "([Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "narrowLong",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;J)Ljava/lang/Number;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "options",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/JexlContext;)Lcrash_assistant_relocated_libs/jexl3/JexlArithmetic;",
            "value": "obj#379"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "options",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/JexlEngine$Options;)Lcrash_assistant_relocated_libs/jexl3/JexlArithmetic;",
            "value": "obj#380"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "options",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/JexlOptions;)Lcrash_assistant_relocated_libs/jexl3/JexlArithmetic;",
            "value": "obj#381"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "or",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "parseBigDecimal",
            "desc": "(Ljava/lang/String;)Ljava/math/BigDecimal;",
            "value": "obj#384"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "parseBigInteger",
            "desc": "(Ljava/lang/String;)Ljava/math/BigInteger;",
            "value": "obj#386"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "parseDouble",
            "desc": "(Ljava/lang/String;)D",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "setBuilder",
            "desc": "(I)Lcrash_assistant_relocated_libs/jexl3/JexlArithmetic$SetBuilder;",
            "value": "obj#393"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "setBuilder",
            "desc": "(IZ)Lcrash_assistant_relocated_libs/jexl3/JexlArithmetic$SetBuilder;",
            "value": "obj#396"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "shiftLeft",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "shiftRight",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "shiftRightUnsigned",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "startsWith",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Boolean;",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "strictEquals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toBoolean",
            "desc": "(ZLjava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toBoolean",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toDouble",
            "desc": "(ZLjava/lang/Object;)D",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toDouble",
            "desc": "(Ljava/lang/Object;)D",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toInteger",
            "desc": "(ZLjava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toInteger",
            "desc": "(Ljava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toLong",
            "desc": "(ZLjava/lang/Object;)J",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toLong",
            "desc": "(Ljava/lang/Object;)J",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toString",
            "desc": "(ZLjava/lang/Object;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "toString",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/JexlArithmetic",
            "method": "xor",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/ConstructorMethod",
            "method": "isCacheable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/ConstructorMethod",
            "method": "tryFailed",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlNode",
            "method": "getColumn",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlNode",
            "method": "getLine",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlNode",
            "method": "isConstant",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlNode",
            "method": "isConstant",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlNode",
            "method": "isGlobalVar",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlNode",
            "method": "isLeftValue",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlNode",
            "method": "isSafeLhs",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlNode",
            "method": "jexlInfo",
            "desc": "()Lcrash_assistant_relocated_libs/jexl3/JexlInfo;",
            "value": "obj#450"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/parser/JexlNode",
            "method": "jexlInfo",
            "desc": "(Ljava/lang/String;)Lcrash_assistant_relocated_libs/jexl3/JexlInfo;",
            "value": "obj#452"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions",
            "method": "wildcardAllow",
            "desc": "(Ljava/util/Set;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions",
            "method": "allowedPackage",
            "desc": "(Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/Permissions",
            "method": "specifiedAllow",
            "desc": "(Ljava/lang/Class;Ljava/lang/Object;Ljava/util/function/BiPredicate;)Z",
            "value": "1"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/AbstractExecutor$Set",
            "method": "isCacheable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/AbstractExecutor$Set",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/introspection/AbstractExecutor$Set",
            "method": "equals",
            "desc": "(Lcrash_assistant_relocated_libs/jexl3/internal/introspection/AbstractExecutor;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/Config",
            "method": "unmodifiable",
            "desc": "()Lcrash_assistant_relocated_libs/nightconfig/core/UnmodifiableConfig;",
            "value": "obj#519"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Scope$2",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"?\""
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/introspection/JexlSandbox$Permissions",
            "method": "copy",
            "desc": "()Lcrash_assistant_relocated_libs/jexl3/introspection/JexlSandbox$Permissions;",
            "value": "obj#541"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/introspection/JexlSandbox$Permissions",
            "method": "isInheritable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/FileConfig",
            "method": "checked",
            "desc": "()Lcrash_assistant_relocated_libs/nightconfig/core/file/FileConfig;",
            "value": "obj#576"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/FileConfig",
            "method": "checked",
            "desc": "()Lcrash_assistant_relocated_libs/nightconfig/core/Config;",
            "value": "obj#588"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/introspection/JexlSandbox$2",
            "method": "add",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/introspection/JexlSandbox$2",
            "method": "get",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"?\""
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/introspection/JexlSandbox$2",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"blockAll\""
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/internal/Frame",
            "method": "assign",
            "desc": "([Ljava/lang/Object;)Lcrash_assistant_relocated_libs/jexl3/internal/Frame;",
            "value": "obj#619"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/CheckedCommentedConfig",
            "method": "checked",
            "desc": "()Lcrash_assistant_relocated_libs/nightconfig/core/CommentedConfig;",
            "value": "obj#628"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/CheckedCommentedConfig",
            "method": "checked",
            "desc": "()Lcrash_assistant_relocated_libs/nightconfig/core/Config;",
            "value": "obj#640"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder",
            "method": "charset",
            "desc": "(Ljava/nio/charset/Charset;)Lcrash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder;",
            "value": "obj#641"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder",
            "method": "writingMode",
            "desc": "(Lcrash_assistant_relocated_libs/nightconfig/core/io/WritingMode;)Lcrash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder;",
            "value": "obj#642"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder",
            "method": "parsingMode",
            "desc": "(Lcrash_assistant_relocated_libs/nightconfig/core/io/ParsingMode;)Lcrash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder;",
            "value": "obj#643"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder",
            "method": "onFileNotFound",
            "desc": "(Lcrash_assistant_relocated_libs/nightconfig/core/file/FileNotFoundAction;)Lcrash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder;",
            "value": "obj#644"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder",
            "method": "sync",
            "desc": "()Lcrash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder;",
            "value": "obj#649"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder",
            "method": "autosave",
            "desc": "()Lcrash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder;",
            "value": "obj#650"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder",
            "method": "autoreload",
            "desc": "()Lcrash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder;",
            "value": "obj#651"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder",
            "method": "preserveInsertionOrder",
            "desc": "()Lcrash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder;",
            "value": "obj#653"
          },
          {
            "class": "crash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder",
            "method": "backingMapCreator",
            "desc": "(Ljava/util/function/Supplier;)Lcrash_assistant_relocated_libs/nightconfig/core/file/GenericBuilder;",
            "value": "obj#654"
          },
          {
            "class": "crash_assistant_relocated_libs/logging/impl/NoOpLog",
            "method": "isDebugEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/logging/impl/NoOpLog",
            "method": "isErrorEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/logging/impl/NoOpLog",
            "method": "isFatalEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/logging/impl/NoOpLog",
            "method": "isInfoEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/logging/impl/NoOpLog",
            "method": "isTraceEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/logging/impl/NoOpLog",
            "method": "isWarnEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/introspection/JexlSandbox$Names",
            "method": "alias",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "crash_assistant_relocated_libs/jexl3/introspection/JexlSandbox$Names",
            "method": "copy",
            "desc": "()Lcrash_assistant_relocated_libs/jexl3/introspection/JexlSandbox$Names;",
            "value": "obj#729"
          }
        ],
        "insns": 9295
      },
      "verdict": "partly",
      "summary": "2 of 6 listening patch sites land on a Horizon hook (33%); of 7 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "cwb",
      "name": "Cubes Without Borders",
      "version": "5.0.0+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "modmenu",
          "value": "dev/kirant/cwb/compat/modmenu/ModMenuScreenProvider"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "dev/kirant/cwb/compat/sodium/SodiumConfigBuilder"
        }
      ],
      "mixin_configs": [
        "cwb.mixins.json"
      ],
      "depends": [],
      "classes": 33,
      "methods": 167,
      "sites": [
        {
          "mixin": "dev/kirant/cwb/mixin/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "ignorePauseOnLostFocusDuringMultiplayer",
          "kind": "wrap-operation",
          "method": "setPauseScreen",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Gui;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "enableDelayedFullscreen",
          "kind": "inject",
          "method": "setOverlay",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#setOverlay RETURN"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/MainMixin",
          "targets": [
            "net/minecraft/client/main/Main"
          ],
          "handler": "readBorderlessOption",
          "kind": "inject",
          "method": "main",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/systems/RenderSystem;initRenderThread()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/main/Main#main INVOKE"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "patchInitialFullscreenMode",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/MonitorManager;getMonitor(I)Lcom/mojang/blaze3d/platform/Monitor;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "init",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;setMode()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "onChangeFullscreenVideoMode",
          "kind": "inject",
          "method": "updateFullscreenIfChanged",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;setMode()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#updateFullscreenIfChanged INVOKE"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "onChangeFullscreenVideoMode",
          "kind": "inject",
          "method": "changeFullscreenVideoMode",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;setMode()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#changeFullscreenVideoMode INVOKE"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "enableFullscreen",
          "kind": "inject",
          "method": "setMode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#setMode HEAD"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "disableFullscreen",
          "kind": "inject",
          "method": "setMode",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;applyFullscreen()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#setMode INVOKE"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "disableFullscreen",
          "kind": "inject",
          "method": "setMode",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;applyWindowed()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#setMode INVOKE"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "patchPixelDensity",
          "kind": "modify-arg",
          "method": "createWindow",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/api/device/GpuBackend;createWindow(Ljava/lang/String;IIJ)J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "fixFullscreenState",
          "kind": "inject",
          "method": "isWindowFullscreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#isWindowFullscreen HEAD"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "disableFullscreenStateUpdate",
          "kind": "wrap-operation",
          "method": "handleEvent",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;updateFullscreenState()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "disableWindowedRectOverride",
          "kind": "wrap-operation",
          "method": "onMove",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;isWindowFullscreen()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "disableWindowedRectOverride",
          "kind": "wrap-operation",
          "method": "onResize",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;isWindowFullscreen()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "disableWindowMouseGrab",
          "kind": "wrap-operation",
          "method": "updateWindowMouseGrab",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/sdl/SDLVideo;SDL_SetWindowMouseGrab(JZ)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "enableExclusiveFullscreenWithBorderlessFallback",
          "kind": "wrap-operation",
          "method": "setMode",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;applyFullscreen()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/kirant/cwb/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "save",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#close HEAD"
        }
      ],
      "listening": 4,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "com/mojang/blaze3d/platform/Window#close @HEAD": 1,
        "com/mojang/blaze3d/platform/Window#isWindowFullscreen @HEAD": 1,
        "com/mojang/blaze3d/platform/Window#setMode @HEAD": 1,
        "net/minecraft/client/gui/Gui#setOverlay @RETURN": 1
      },
      "wanted_calls": {
        "com/mojang/blaze3d/platform/MonitorManager#getMonitor @INVOKE (wrap-operation)": 1,
        "com/mojang/blaze3d/platform/Window#applyFullscreen @INVOKE (wrap-operation)": 1,
        "com/mojang/blaze3d/platform/Window#changeFullscreenVideoMode @INVOKE": 1,
        "com/mojang/blaze3d/platform/Window#isWindowFullscreen @INVOKE (wrap-operation)": 2,
        "com/mojang/blaze3d/platform/Window#setMode @INVOKE": 2,
        "com/mojang/blaze3d/platform/Window#setMode @INVOKE (wrap-operation)": 1,
        "com/mojang/blaze3d/platform/Window#updateFullscreenIfChanged @INVOKE": 1,
        "com/mojang/blaze3d/platform/Window#updateFullscreenState @INVOKE (wrap-operation)": 1,
        "com/mojang/renderpearl/api/device/GpuBackend#createWindow @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/Gui#setScreen @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/main/Main#main @INVOKE": 1,
        "org/lwjgl/sdl/SDLVideo#SDL_SetWindowMouseGrab @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 33,
        "features": {
          "mixin": 4
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 33,
        "methods": 115,
        "tried": 115,
        "completed": 18,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Ldev/kirant/cwb/FullscreenMode;#clone()Ljava/lang/Object;": 1,
          "ca/weblite/objc/Client#getInstance()Lca/weblite/objc/Client;": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "com/mojang/blaze3d/platform/Window#handle()J": 6,
          "java/io/File#separatorChar": 11,
          "java/util/Arrays#stream([Ljava/lang/Object;)Ljava/util/stream/Stream;": 1,
          "joptsimple/OptionParser#accepts(Ljava/lang/String;)Ljoptsimple/OptionSpecBuilder;": 1,
          "joptsimple/OptionSet#has(Ljava/lang/String;)Z": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 3,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 10,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 2,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 2,
          "net/minecraft/resources/Identifier#parse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraftforge/fml/ModList#getModFileById(Ljava/lang/String;)Lnet/minecraftforge/forgespi/language/IModFileInfo;": 2,
          "net/minecraftforge/fml/loading/FMLPaths#CONFIGDIR": 1,
          "net/neoforged/fml/loading/FMLLoader#getCurrent()Lnet/neoforged/fml/loading/FMLLoader;": 2,
          "net/neoforged/fml/loading/FMLPaths#CONFIGDIR": 1,
          "org/lwjgl/system/APIUtil#apiCreateLibrary(Ljava/lang/String;)Lorg/lwjgl/system/SharedLibrary;": 1,
          "org/lwjgl/system/MemoryStack#stackPush()Lorg/lwjgl/system/MemoryStack;": 3,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#setReturnValue(Ljava/lang/Object;)V": 1
        },
        "runs": [
          {
            "class": "dev/kirant/cwb/FullscreenMode",
            "method": "valueOf",
            "desc": "(I)Ldev/kirant/cwb/FullscreenMode;",
            "value": "obj#6"
          },
          {
            "class": "dev/kirant/cwb/mixin/WindowMixin",
            "method": "getFullscreenMode",
            "desc": "()Ldev/kirant/cwb/FullscreenMode;",
            "value": "obj#6"
          },
          {
            "class": "dev/kirant/cwb/mixin/WindowMixin",
            "method": "disableWindowedRectOverride",
            "desc": "(Lcom/mojang/blaze3d/platform/Window;Lcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)Z",
            "value": "1"
          }
        ],
        "insns": 855
      },
      "verdict": "no",
      "summary": "none of its 18 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "customskinloader-bootstrap",
      "name": "CustomSkinLoader Bootstrap",
      "version": "15.1",
      "license": "GPL-3.0-only",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [],
      "mixin_configs": [
        "customskinloader.bootstrap.fabric.v1.mixins.json"
      ],
      "depends": [],
      "classes": 50,
      "methods": 286,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 50,
        "features": {
          "mixin": 1
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 50,
        "methods": 131,
        "tried": 131,
        "completed": 74,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "cpw/mods/modlauncher/api/TargetType#CLASS": 1,
          "cpw/mods/modlauncher/api/TransformerVoteResult#YES": 1,
          "java/io/InputStream#read([B)I": 1,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 2,
          "java/util/Collections#unmodifiableList(Ljava/util/List;)Ljava/util/List;": 3,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "java/util/jar/JarEntry#setTime(J)V": 1,
          "java/util/jar/Manifest#getMainAttributes()Ljava/util/jar/Attributes;": 1,
          "net/neoforged/neoforgespi/transformation/ClassProcessor$OrderingHint#EARLY": 1,
          "net/neoforged/neoforgespi/transformation/ClassProcessor$SelectionContext#empty()Z": 1,
          "net/neoforged/neoforgespi/transformation/ClassProcessorIds#MIXIN": 1,
          "new org/objectweb/asm/ClassReader": 1,
          "new org/objectweb/asm/ClassWriter": 1,
          "new org/objectweb/asm/tree/InsnList": 1,
          "new org/objectweb/asm/tree/InsnNode": 1,
          "org/apache/commons/lang3/tuple/Pair#of(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/commons/lang3/tuple/Pair;": 1,
          "org/apache/logging/log4j/Logger#warn(Ljava/lang/String;)V": 1
        },
        "runs": [
          {
            "class": "customskinloader/bootstrap/mapping/Mappings",
            "method": "fieldKey",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null#null\""
          },
          {
            "class": "customskinloader/bootstrap/mapping/Mappings",
            "method": "methodKey",
            "desc": "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null#nullnull\""
          },
          {
            "class": "customskinloader/bootstrap/installer/BytecodeRemapper",
            "method": "unmapClassNames",
            "desc": "([Ljava/lang/String;)[Ljava/lang/String;",
            "value": "obj#44"
          },
          {
            "class": "customskinloader/bootstrap/installer/BytecodeRemapper",
            "method": "blocksInheritedMethodMapping",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/installer/BytecodeRemapper",
            "method": "fieldKey",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null#null\""
          },
          {
            "class": "customskinloader/bootstrap/installer/BytecodeRemapper",
            "method": "methodKey",
            "desc": "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null#nullnull\""
          },
          {
            "class": "customskinloader/bootstrap/installer/BytecodeRemapper",
            "method": "fieldSignatureKey",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"nullnull\""
          },
          {
            "class": "customskinloader/bootstrap/installer/BytecodeRemapper",
            "method": "methodSignatureKey",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"nullnull\""
          },
          {
            "class": "customskinloader/bootstrap/transformer/ClassTransformationReport",
            "method": "isModified",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/transformer/RuntimeVersion",
            "method": "getProtocolVersion",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/transformer/RuntimeVersion",
            "method": "getWorldVersion",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/fabric/v1/MixinConfigPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "customskinloader/bootstrap/transformer/TransformationPlan",
            "method": "getDeclaredRuleCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/transformer/TransformationPlan",
            "method": "getActiveRuleCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/transformer/ClassTransformationContext",
            "method": "normalizeInternalClassName",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "customskinloader/bootstrap/transformer/TransformationRule",
            "method": "getPriority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/transformer/TransformationRule",
            "method": "getDeclarationOrder",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/transformer/TransformationRule",
            "method": "isRequired",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/transformer/patch/PatchSupport",
            "method": "makeMethodPublicNonFinal",
            "desc": "(Lorg/objectweb/asm/tree/MethodNode;)Z",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/transformer/patch/PatchSupport",
            "method": "makeFieldPublicNonFinal",
            "desc": "(Lorg/objectweb/asm/tree/FieldNode;)Z",
            "value": "0"
          },
          {
            "class": "customskinloader/bootstrap/transformer/patch/PatchSupport",
            "method": "makePublicNonFinal",
            "desc": "(I)I",
            "value": "1"
          },
          {
            "class": "customskinloader/bootstrap/util/RangeMatcher",
            "method": "splitTokens",
            "desc": "(Ljava/lang/String;)Ljava/util/List;",
            "value": "obj#161"
          }
        ],
        "insns": 1093
      },
      "verdict": "no",
      "summary": "no patch sites and no content: nothing to convert"
    },
    {
      "mod_id": "cutthrough",
      "name": "Cut Through",
      "version": "26.3.0",
      "license": "MPL-2.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "fuzs/cutthrough/fabric/client/CutThroughFabricClient"
        },
        {
          "kind": "main",
          "value": "fuzs/cutthrough/fabric/CutThroughFabric"
        }
      ],
      "mixin_configs": [
        "cutthrough.common.mixins.json",
        "cutthrough.fabric.mixins.json"
      ],
      "depends": [
        "forgeconfigapiport",
        "puzzleslib"
      ],
      "classes": 7,
      "methods": 18,
      "sites": [
        {
          "mixin": "fuzs/cutthrough/common/mixin/client/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "raycastHitResult",
          "kind": "modify-arg",
          "method": "raycastHitResult",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/component/AttackRange;getClosesetHit(Lnet/minecraft/world/entity/Entity;FLjava/util/function/Predicate;)Lnet/minecraft/world/phys/HitResult;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "fuzs/cutthrough/common/mixin/client/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "pick$0",
          "kind": "modify-variable",
          "method": "pick",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "fuzs/cutthrough/common/mixin/client/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "pick",
          "kind": "modify-arg",
          "method": "pick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/projectile/ProjectileUtil;getEntityHitResult(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;D)Lnet/minecraft/world/phys/EntityHitResult;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/player/LocalPlayer#pick @STORE (modify-variable)": 1,
        "net/minecraft/world/entity/projectile/ProjectileUtil#getEntityHitResult @INVOKE (modify-arg)": 1,
        "net/minecraft/world/item/component/AttackRange#getClosesetHit @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 7,
        "features": {
          "mixin": 1
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 7,
        "methods": 3,
        "tried": 3,
        "completed": 0,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "fuzs/puzzleslib/common/api/client/event/v1/entity/player/InteractionInputEvents#ATTACK": 2,
          "net/minecraft/world/entity/Entity#getEyePosition(F)Lnet/minecraft/world/phys/Vec3;": 1
        },
        "runs": [],
        "insns": 9
      },
      "verdict": "no",
      "summary": "none of its 3 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "debugify",
      "name": "Debugify",
      "version": "26.3.0.0",
      "license": "LGPL-3.0-or-later",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/isxander/debugify/client/DebugifyClient::onInitializeClient"
        },
        {
          "kind": "main",
          "value": "dev/isxander/debugify/Debugify::onInitialize"
        },
        {
          "kind": "modmenu",
          "value": "dev/isxander/debugify/client/integrations/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "debugify.mixins.json",
        "debugify.client.mixins.json"
      ],
      "depends": [],
      "classes": 133,
      "methods": 370,
      "sites": [
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc100991/FishingHookMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/FishingHook"
          ],
          "handler": "onPullEntity",
          "kind": "inject",
          "method": "pullEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;setDeltaMovement(Lnet/minecraft/world/phys/Vec3;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/FishingHook#pullEntity INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc121706/RangedBowAttackGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/RangedBowAttackGoal"
          ],
          "handler": "lookAtTarget",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/monster/Monster;lookAt(Lnet/minecraft/world/entity/Entity;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/goal/RangedBowAttackGoal#tick INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc121903/MinecraftCommandBlockMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/MinecartCommandBlock"
          ],
          "handler": "readNbt",
          "kind": "inject",
          "method": "readAdditionalSaveData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/minecart/MinecartCommandBlock#readAdditionalSaveData RETURN"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc121903/MinecraftCommandBlockMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/MinecartCommandBlock"
          ],
          "handler": "writeNbt",
          "kind": "inject",
          "method": "addAdditionalSaveData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/minecart/MinecartCommandBlock#addAdditionalSaveData RETURN"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc123450/ItemFrameMixin",
          "targets": [
            "net/minecraft/world/entity/decoration/ItemFrame"
          ],
          "handler": "playSound",
          "kind": "wrap-with-condition",
          "method": "setItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/decoration/ItemFrame;playSound(Lnet/minecraft/sounds/SoundEvent;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc132878/ArmorStandMixin",
          "targets": [
            "net/minecraft/world/entity/decoration/ArmorStand"
          ],
          "handler": "breakParticlesExplosion",
          "kind": "inject",
          "method": "hurtServer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/decoration/ArmorStand;brokenByAnything(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/damagesource/DamageSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/decoration/ArmorStand#hurtServer INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc132878/ArmorStandMixin",
          "targets": [
            "net/minecraft/world/entity/decoration/ArmorStand"
          ],
          "handler": "breakParticlesFire",
          "kind": "inject",
          "method": "causeDamage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/decoration/ArmorStand;brokenByAnything(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/damagesource/DamageSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/decoration/ArmorStand#causeDamage INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc133218/ServerPlayerMixin",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "stopUsingItemOnDeath",
          "kind": "inject",
          "method": "die",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "player_died",
          "why": "a player dies"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc139041/FishingRodItemMixin",
          "targets": [
            "net/minecraft/world/item/FishingRodItem"
          ],
          "handler": "modifyFishingBobberSounds",
          "kind": "modify-arg",
          "method": "use",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;playSound(Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc147659/CatSpawnerMixin",
          "targets": [
            "net/minecraft/world/entity/npc/CatSpawner"
          ],
          "handler": "removeOldCatSnap",
          "kind": "wrap-with-condition",
          "method": "spawnCat",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/feline/Cat;snapTo(Lnet/minecraft/core/BlockPos;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc147659/CatSpawnerMixin",
          "targets": [
            "net/minecraft/world/entity/npc/CatSpawner"
          ],
          "handler": "addNewCatSnap",
          "kind": "inject",
          "method": "spawnCat",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/feline/Cat;finalizeSpawn(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/world/DifficultyInstance;Lnet/minecraft/world/entity/EntitySpawnReason;Lnet/minecraft/world/entity/SpawnGroupData;)Lnet/minecraft/world/entity/SpawnGroupData;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/npc/CatSpawner#spawnCat INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc158900/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "removeExpiredBeforeCheck",
          "kind": "wrap-operation",
          "method": "canPlayerLogin",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/players/UserBanList;isBanned(Lnet/minecraft/server/players/NameAndId;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc168573/BlocksAttacksMixin",
          "targets": [
            "net/minecraft/world/item/component/BlocksAttacks"
          ],
          "handler": "fixShieldBreakItemUse",
          "kind": "wrap-operation",
          "method": "hurtBlockingItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;hurtAndBreak(ILnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/EquipmentSlot;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc170462/MobEffectsMixin",
          "targets": [
            "net/minecraft/world/effect/MobEffects"
          ],
          "handler": "badOmenEffectCategory",
          "kind": "modify-arg",
          "method": "<clinit>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/effect/BadOmenMobEffect;<init>(Lnet/minecraft/world/effect/MobEffectCategory;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc176806/RespawnAnchorBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RespawnAnchorBlock"
          ],
          "handler": "awardGlowstoneStat",
          "kind": "inject",
          "method": "useItemOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;consume(ILnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RespawnAnchorBlock#useItemOn INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc183990/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "clearTargetIfDead",
          "kind": "inject",
          "method": "baseTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/profiling/ProfilerFiller;pop()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#baseTick INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc187100/EnderDragonMixin",
          "targets": [
            "net/minecraft/world/entity/boss/enderdragon/EnderDragon"
          ],
          "handler": "clearNearestCrystalOnDeath",
          "kind": "inject",
          "method": "tickDeath",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/boss/enderdragon/EnderDragon#tickDeath HEAD"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc200418/ZombieVillagerMixin",
          "targets": [
            "net/minecraft/world/entity/monster/zombie/ZombieVillager"
          ],
          "handler": "dismountIfJockey",
          "kind": "inject",
          "method": "lambda$finishConversion$0",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/monster/zombie/ZombieVillager#lambda$finishConversion$0 RETURN"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc201374/CampfireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/CampfireBlock"
          ],
          "handler": "fixedBlockPos",
          "kind": "modify-arg",
          "method": "isSmokeyPos",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;getCollisionShape(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/phys/shapes/CollisionContext;)Lnet/minecraft/world/phys/shapes/VoxelShape;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc215530/ServerPlayerMixin",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "onChangeToSpectator",
          "kind": "inject",
          "method": "setGameMode",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerPlayer;stopRiding()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerPlayer#setGameMode INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc221257/ShulkerBulletMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/ShulkerBullet"
          ],
          "handler": "addMissingBubbleParticles",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/projectile/ShulkerBullet;setPos(Lnet/minecraft/world/phys/Vec3;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/ShulkerBullet#tick INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc224729/ChunkMapMixin",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "saveProtoChunks",
          "kind": "modify-arg",
          "method": "saveAllChunks",
          "at": "INVOKE",
          "at_target": "Ljava/util/stream/Stream;filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc227337/ShulkerBulletMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/ShulkerBullet"
          ],
          "handler": "playSoundAndDisplayParticles",
          "kind": "inject",
          "method": "onHitEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/EntityHitResult;getEntity()Lnet/minecraft/world/entity/Entity;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/ShulkerBullet#onHitEntity INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc231743/FlowerPotBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/FlowerPotBlock"
          ],
          "handler": "onIncrementPottedPlantStat",
          "kind": "inject",
          "method": "useItemOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/Identifier;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/FlowerPotBlock#useItemOn INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc245394/RaidMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raid"
          ],
          "handler": "modifyRaidSoundSource",
          "kind": "modify-arg",
          "method": "playSound",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/game/ClientboundSoundPacket;<init>(Lnet/minecraft/core/Holder;Lnet/minecraft/sounds/SoundSource;DDDFFJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc263999/BreakDoorGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/BreakDoorGoal"
          ],
          "handler": "storeBlockStatePreRemoval",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;removeBlock(Lnet/minecraft/core/BlockPos;Z)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/goal/BreakDoorGoal#tick INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc264285/CreeperMixin",
          "targets": [
            "net/minecraft/world/entity/monster/Creeper"
          ],
          "handler": "shouldNotShrinkStack",
          "kind": "wrap-operation",
          "method": "mobInteract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;isDamageableItem()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc267125/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "sendCommandSuggestions",
          "kind": "inject",
          "method": "reloadResources",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#reloadResources RETURN"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc297837/WaypointTransmitterMixin",
          "targets": [
            "net/minecraft/world/waypoints/WaypointTransmitter"
          ],
          "handler": "useOnlyHorizontalDistance",
          "kind": "wrap-operation",
          "method": "isReallyFar",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;distanceTo(Lnet/minecraft/world/entity/Entity;)F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc7569/RconConsoleSourceMixin",
          "targets": [
            "net/minecraft/server/rcon/RconConsoleSource"
          ],
          "handler": "appendNewline",
          "kind": "inject",
          "method": "sendSystemMessage",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/rcon/RconConsoleSource#sendSystemMessage RETURN"
        },
        {
          "mixin": "dev/isxander/debugify/mixins/basic/mc93018/AnimalMixin",
          "targets": [
            "net/minecraft/world/entity/animal/Animal"
          ],
          "handler": "loveCondition",
          "kind": "wrap-with-condition",
          "method": "mobInteract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/Animal;setInLove(Lnet/minecraft/world/entity/player/Player;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc105068/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "beforeCond30",
          "kind": "wrap-operation",
          "method": "handleEntityEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;playSound(Lnet/minecraft/sounds/SoundEvent;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc115092/SquidRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/SquidRenderer"
          ],
          "handler": "getSquidEntity",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/SquidRenderer#extractRenderState TAIL"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc115092/SquidRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/SquidRenderer"
          ],
          "handler": "applyRotation",
          "kind": "inject",
          "method": "setupRotations",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/SquidRenderer#setupRotations TAIL"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc118740/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "useFixedCooldown",
          "kind": "wrap-operation",
          "method": "extractCrosshair",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/LocalPlayer;getAttackStrengthScale(F)F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc118740/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "swing",
          "kind": "inject",
          "method": "swing",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#swing HEAD"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc118740/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "resetAttackStrengthTicker",
          "kind": "inject",
          "method": "resetAttackStrengthTicker",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#resetAttackStrengthTicker HEAD"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc118740/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;getMainHandItem()Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#tick INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc143474/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "persistInventorySlot2",
          "kind": "inject",
          "method": "handleRespawn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientPacketListener;startWaitingForNewLevel(Lnet/minecraft/client/player/LocalPlayer;Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/client/gui/screens/LevelLoadingScreen$Reason;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc165381/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "onDropItem",
          "kind": "inject",
          "method": "dropItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Inventory;removeFromSelected(Z)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#dropItem INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc176559/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "isSameItem",
          "kind": "wrap-operation",
          "method": "sameDestroyTarget",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;isSameItemSameComponents(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc188359/CakeBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/CakeBlock"
          ],
          "handler": "playBurpSound",
          "kind": "inject",
          "method": "useWithoutItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/CakeBlock;eat(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/entity/player/Player;)Lnet/minecraft/world/InteractionResult;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/CakeBlock#useWithoutItem INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc188359/ConsumableMixin",
          "targets": [
            "net/minecraft/world/item/component/Consumable"
          ],
          "handler": "addBurpSound",
          "kind": "inject",
          "method": "onConsume",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;consume(ILnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/component/Consumable#onConsume INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc197260/LivingEntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "fixLightLevel",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/LivingEntityRenderer#submit HEAD"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc210318/BookSignScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/BookSignScreen"
          ],
          "handler": "restoreBookTitleMaxLength",
          "kind": "modify-arg",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/EditBox;setMaxLength(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc237493/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "shouldAcceptVanillaTelemetry",
          "kind": "inject",
          "method": "processOptions",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#processOptions RETURN"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryEventWidgetMixin",
          "targets": [
            "net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget"
          ],
          "handler": "addDebugifyContent",
          "kind": "inject",
          "method": "buildContent",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;sort(Ljava/util/Comparator;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget#buildContent INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryInfoScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/telemetry/TelemetryInfoScreen"
          ],
          "handler": "repositionCycleButton",
          "kind": "inject",
          "method": "repositionElements",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/telemetry/TelemetryInfoScreen#repositionElements TAIL"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc251068/WorldListEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry"
          ],
          "handler": "markLastWorldDeleted",
          "kind": "inject",
          "method": "doDeleteWorld",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#doDeleteWorld TAIL"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc251068/WorldSelectionListMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList"
          ],
          "handler": "dontShowEmptyWorldList",
          "kind": "wrap-with-condition",
          "method": "returnToScreen",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Gui;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc267376/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "scaleNearClipDistance",
          "kind": "modify-arg",
          "method": "update",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Camera;setupPerspective(FFFFF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc268420/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "fixAttackIndicatorFlashing",
          "kind": "wrap-with-condition",
          "method": "extractCrosshair",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blitSprite(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc280220/DolphinCarryingItemLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/DolphinCarryingItemLayer"
          ],
          "handler": "flipItem",
          "kind": "inject",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/item/ItemStackRenderState;submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;III)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/DolphinCarryingItemLayer#submit INVOKE"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc35361/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "addNetherPortalCheck",
          "kind": "wrap-with-condition",
          "method": "handleKeybinds",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/tutorial/Tutorial;onOpenInventory()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc46737/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "thirdPersonCheck",
          "kind": "wrap-with-condition",
          "method": "checkEntityPostEffect",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GameRenderer;setSpectatedEntityPostEffect(Lnet/minecraft/resources/Identifier;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc46766/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "shouldContinueAttack",
          "kind": "modify-arg",
          "method": "handleKeybinds",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;continueAttack(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc57057/GuardianAttackSoundInstanceMixin",
          "targets": [
            "net/minecraft/client/resources/sounds/GuardianAttackSoundInstance"
          ],
          "handler": "fixAttenuation",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/sounds/GuardianAttackSoundInstance#<init> TAIL"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc61489/BookEditScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/BookEditScreen"
          ],
          "handler": "modifyHeight",
          "kind": "modify-arg",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/MultiLineEditBox$Builder;setY(I)Lnet/minecraft/client/gui/components/MultiLineEditBox$Builder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc80859/AbstractContainerScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "stopInvisibleSlots",
          "kind": "wrap-operation",
          "method": "extractSlot",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;contains(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/basic/mc90683/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "shouldWarn",
          "kind": "wrap-with-condition",
          "method": "handleSetEntityPassengersPacket",
          "at": "INVOKE",
          "at_target": "Lorg/slf4j/Logger;warn(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/gameplay/mc159163/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "removeLocalEntityPose",
          "kind": "inject",
          "method": "handleSetEntityData",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/syncher/SynchedEntityData;assignValues(Ljava/util/List;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "dev/isxander/debugify/client/mixins/gameplay/mc231097/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "onDropItem",
          "kind": "inject",
          "method": "dropItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Inventory;removeFromSelected(Z)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#dropItem INVOKE"
        }
      ],
      "listening": 16,
      "accessors": 1,
      "hooks": {
        "net_from_server": 2,
        "player_died": 1
      },
      "wanted": {
        "net/minecraft/client/Options#processOptions @RETURN": 1,
        "net/minecraft/client/gui/screens/telemetry/TelemetryInfoScreen#repositionElements @TAIL": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#doDeleteWorld @TAIL": 1,
        "net/minecraft/client/renderer/entity/LivingEntityRenderer#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/SquidRenderer#extractRenderState @TAIL": 1,
        "net/minecraft/client/renderer/entity/SquidRenderer#setupRotations @TAIL": 1,
        "net/minecraft/client/resources/sounds/GuardianAttackSoundInstance#<init> @TAIL": 1,
        "net/minecraft/server/players/PlayerList#reloadResources @RETURN": 1,
        "net/minecraft/server/rcon/RconConsoleSource#sendSystemMessage @RETURN": 1,
        "net/minecraft/world/entity/LivingEntity#swing @HEAD": 1,
        "net/minecraft/world/entity/boss/enderdragon/EnderDragon#tickDeath @HEAD": 1,
        "net/minecraft/world/entity/monster/zombie/ZombieVillager#lambda$finishConversion$0 @RETURN": 1,
        "net/minecraft/world/entity/player/Player#resetAttackStrengthTicker @HEAD": 1,
        "net/minecraft/world/entity/vehicle/minecart/MinecartCommandBlock#addAdditionalSaveData @RETURN": 1,
        "net/minecraft/world/entity/vehicle/minecart/MinecartCommandBlock#readAdditionalSaveData @RETURN": 1
      },
      "wanted_calls": {
        "java/util/Set#contains @INVOKE (wrap-operation)": 1,
        "java/util/stream/Stream#filter @INVOKE (modify-arg)": 1,
        "net/minecraft/client/Camera#setupPerspective @INVOKE (modify-arg)": 1,
        "net/minecraft/client/Minecraft#continueAttack @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/Gui#setScreen @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/gui/components/EditBox#setMaxLength @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/components/MultiLineEditBox$Builder#setY @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget#buildContent @INVOKE": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#dropItem @INVOKE": 2,
        "net/minecraft/client/player/LocalPlayer#getAttackStrengthScale @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/GameRenderer#setSpectatedEntityPostEffect @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/entity/layers/DolphinCarryingItemLayer#submit @INVOKE": 1,
        "net/minecraft/client/tutorial/Tutorial#onOpenInventory @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/network/protocol/game/ClientboundSoundPacket#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/server/level/ServerPlayer#setGameMode @INVOKE": 1,
        "net/minecraft/server/players/UserBanList#isBanned @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/effect/BadOmenMobEffect#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/world/entity/LivingEntity#distanceTo @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/LivingEntity#playSound @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/Mob#baseTick @INVOKE": 1,
        "net/minecraft/world/entity/ai/goal/BreakDoorGoal#tick @INVOKE": 1,
        "net/minecraft/world/entity/ai/goal/RangedBowAttackGoal#tick @INVOKE": 1,
        "net/minecraft/world/entity/animal/Animal#setInLove @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/animal/feline/Cat#snapTo @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/decoration/ArmorStand#causeDamage @INVOKE": 1,
        "net/minecraft/world/entity/decoration/ArmorStand#hurtServer @INVOKE": 1,
        "net/minecraft/world/entity/decoration/ItemFrame#playSound @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/npc/CatSpawner#spawnCat @INVOKE": 1,
        "net/minecraft/world/entity/player/Player#tick @INVOKE": 1,
        "net/minecraft/world/entity/projectile/FishingHook#pullEntity @INVOKE": 1,
        "net/minecraft/world/entity/projectile/ShulkerBullet#onHitEntity @INVOKE": 1,
        "net/minecraft/world/entity/projectile/ShulkerBullet#tick @INVOKE": 1,
        "net/minecraft/world/item/ItemStack#hurtAndBreak @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/item/ItemStack#isDamageableItem @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/item/ItemStack#isSameItemSameComponents @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/item/component/Consumable#onConsume @INVOKE": 1,
        "net/minecraft/world/level/Level#playSound @INVOKE (modify-arg)": 1,
        "net/minecraft/world/level/block/CakeBlock#useWithoutItem @INVOKE": 1,
        "net/minecraft/world/level/block/FlowerPotBlock#useItemOn @INVOKE": 1,
        "net/minecraft/world/level/block/RespawnAnchorBlock#useItemOn @INVOKE": 1,
        "net/minecraft/world/level/block/state/BlockState#getCollisionShape @INVOKE (modify-arg)": 1,
        "org/slf4j/Logger#warn @INVOKE (wrap-with-condition)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 7
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 133,
        "features": {
          "screen": 1,
          "mixin": 104
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 133,
        "methods": 172,
        "tried": 172,
        "completed": 64,
        "handlers_tried": 3,
        "handlers_completed": 0,
        "missing": {
          "[Ldev/isxander/debugify/client/helpers/mc237493/DebugifyTelemetry;#clone()Ljava/lang/Object;": 1,
          "[Ldev/isxander/debugify/error/ErrorStage;#clone()Ljava/lang/Object;": 1,
          "[Ldev/isxander/debugify/fixes/BugFix$Env;#clone()Ljava/lang/Object;": 1,
          "[Ldev/isxander/debugify/fixes/FixCategory;#clone()Ljava/lang/Object;": 1,
          "[Ldev/isxander/debugify/fixes/OS;#clone()Ljava/lang/Object;": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 6,
          "com/llamalad7/mixinextras/sugar/ref/LocalRef#get()Ljava/lang/Object;": 1,
          "com/mojang/math/Axis#ZP": 1,
          "com/mojang/renderpearl/api/pipeline/RenderPipeline$Builder#withCull(Z)Lcom/mojang/renderpearl/api/pipeline/RenderPipeline$Builder;": 1,
          "dev/isxander/debugify/client/mixins/basic/mc93384/LivingEntityMixin#getEyeHeight()F": 1,
          "dev/isxander/debugify/mixins/basic/mc133218/ServerPlayerMixin#stopUsingItem()V": 2,
          "dev/isxander/debugify/mixins/basic/mc215530/ServerPlayerMixin#setTicksFrozen(I)V": 1,
          "dev/isxander/debugify/mixins/basic/mc221257/ShulkerBulletMixin#isInWater()Z": 1,
          "dev/isxander/yacl3/gui/controllers/BooleanController$BooleanControllerElement#<init>(Ldev/isxander/yacl3/gui/controllers/BooleanController;Ldev/isxander/yacl3/gui/YACLScreen;Ldev/isxander/yacl3/api/utils/Dimension;)V": 1,
          "dev/isxander/yacl3/gui/controllers/BooleanController$BooleanControllerElement#matchesSearch(Ljava/lang/String;)Z": 1,
          "java/lang/System#getProperty(Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/lang/System#lineSeparator()Ljava/lang/String;": 1,
          "java/nio/file/Files#notExists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/util/Collections#unmodifiableSet(Ljava/util/Set;)Ljava/util/Set;": 1,
          "java/util/Map#of()Ljava/util/Map;": 1,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 2,
          "java/util/function/BooleanSupplier#getAsBoolean()Z": 6,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 4,
          "net/minecraft/client/Options$FieldAccess#process(Ljava/lang/String;Lnet/minecraft/client/OptionInstance;)V": 1,
          "net/minecraft/client/gui/screens/worldselection/WorldSelectionList#children()Ljava/util/List;": 1,
          "net/minecraft/client/player/LocalPlayer#getInventory()Lnet/minecraft/world/entity/player/Inventory;": 2,
          "net/minecraft/client/player/LocalPlayer#getScale()F": 1,
          "net/minecraft/client/resources/sounds/SoundInstance$Attenuation#LINEAR": 1,
          "net/minecraft/core/BlockPos#getY()I": 1,
          "net/minecraft/core/component/DataComponents#MAX_DAMAGE": 1,
          "net/minecraft/network/protocol/game/ServerboundSetCommandMinecartPacket#getCommand()Ljava/lang/String;": 1,
          "net/minecraft/server/level/ServerLevel#getGameRules()Lnet/minecraft/world/level/gamerules/GameRules;": 1,
          "net/minecraft/server/players/UserBanList#get(Ljava/lang/Object;)Lnet/minecraft/server/players/StoredUserEntry;": 1,
          "net/minecraft/sounds/SoundEvents#GENERIC_DRINK": 1,
          "net/minecraft/sounds/SoundSource#HOSTILE": 1,
          "net/minecraft/sounds/SoundSource#PLAYERS": 2,
          "net/minecraft/stats/Stats#ITEM_USED": 2,
          "net/minecraft/tags/FluidTags#LAVA": 1,
          "net/minecraft/util/Mth#clamp(III)I": 1,
          "net/minecraft/world/effect/MobEffectCategory#HARMFUL": 2,
          "net/minecraft/world/entity/LivingEntity#getX()D": 1,
          "net/minecraft/world/entity/monster/Monster#getLookControl()Lnet/minecraft/world/entity/ai/control/LookControl;": 1,
          "net/minecraft/world/entity/npc/villager/Villager#isPassenger()Z": 1,
          "net/minecraft/world/entity/player/Player#getOffhandItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/player/Player#getX()D": 1,
          "net/minecraft/world/entity/projectile/FishingHook#getPlayerOwner()Lnet/minecraft/world/entity/player/Player;": 1,
          "net/minecraft/world/entity/projectile/ShulkerBullet#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 2,
          "net/minecraft/world/level/block/SoundType#COPPER": 1,
          "org/spongepowered/asm/service/MixinService#getService()Lorg/spongepowered/asm/service/IMixinService;": 1,
          "org/spongepowered/asm/util/Annotations#getValue(Lorg/objectweb/asm/tree/AnnotationNode;Ljava/lang/String;)Ljava/lang/Object;": 1
        },
        "runs": [
          {
            "class": "dev/isxander/debugify/mixins/basic/mc179072/SwellGoalMixin",
            "method": "shouldIgniteCreeper",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc94054/WallClimberNavigationMixin",
            "method": "fixSpiderSpinning",
            "desc": "(F)F",
            "value": "1f"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc215531/HudMixin",
            "method": "shouldRenderPumpkinOverlay",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc4490/FishingHookRendererMixin",
            "method": "renderSneakOffset",
            "desc": "(F)F",
            "value": "-0.2875f"
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc155509/PufferfishMixin",
            "method": "shouldStingPlayer",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc298558/AtmosphericFogEnvironmentMixin",
            "method": "clampFog",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc122627/CommandSuggestionsMixin",
            "method": "modifyX2",
            "desc": "(I)I",
            "value": "1"
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc93018/AnimalMixin",
            "method": "loveCondition",
            "desc": "(Lnet/minecraft/world/entity/animal/Animal;Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc224729/ChunkMapMixin",
            "method": "alwaysAccessibleChunkSave",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/debugify/api/DebugifyApi",
            "method": "getDisabledFixes",
            "desc": "()[Ljava/lang/String;",
            "value": "obj#71"
          },
          {
            "class": "dev/isxander/debugify/fixes/BugFixData",
            "method": "satisfiesOSRequirement",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/debugify/fixes/BugFixData",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/fixes/BugFixData",
            "method": "enabledByDefault",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc298225/CameraMixin",
            "method": "fixSkyboxFarplaneClipping",
            "desc": "(F)F",
            "value": "176f"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc90683/ClientPacketListenerMixin",
            "method": "shouldWarn",
            "desc": "(Lorg/slf4j/Logger;Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc232869/StriderMixin",
            "method": "preventPeacefulJocky",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc30391/LivingEntityMixin",
            "method": "shouldntSpawnParticles",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc46766/MinecraftMixin",
            "method": "shouldContinueAttack",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc147659/CatSpawnerMixin",
            "method": "removeOldCatSnap",
            "desc": "(Lnet/minecraft/world/entity/animal/feline/Cat;Lnet/minecraft/core/BlockPos;FF)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/client/helpers/mc251068/LastWorldDeleted",
            "method": "consume",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc242809/ManageServerScreenMixin",
            "method": "trimIp",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc119754/FireworkRocketEntityMixin",
            "method": "shouldFly",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc272431/EnderDragonMixin",
            "method": "fixTargetPath",
            "desc": "(F)F",
            "value": "0.1f"
          },
          {
            "class": "dev/isxander/debugify/mixins/basic/mc272431/EnderDragonMixin",
            "method": "fixVerticalVelocity",
            "desc": "(D)D",
            "value": "0.1"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc210318/BookSignScreenMixin",
            "method": "restoreBookTitleMaxLength",
            "desc": "(I)I",
            "value": "16"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc242809/DirectJoinServerScreenMixin",
            "method": "trimIpSelect",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc242809/DirectJoinServerScreenMixin",
            "method": "trimIpInit",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc127970/ItemInHandRendererMixin",
            "method": "isUsingRiptideHand",
            "desc": "(ZLnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/debugify/client/mixins/basic/mc251068/WorldSelectionListMixin",
            "method": "dontShowEmptyWorldList",
            "desc": "(Lnet/minecraft/client/gui/Gui;Lnet/minecraft/client/gui/screens/Screen;)Z",
            "value": "1"
          }
        ],
        "insns": 922
      },
      "verdict": "no",
      "summary": "only 3 of 16 listening patch sites have a hook (18%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "defaultoptions",
      "name": "Default Options",
      "version": "26.3.0.1",
      "license": "All Rights Reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "net/blay09/mods/defaultoptions/fabric/client/FabricDefaultOptionsClient"
        }
      ],
      "mixin_configs": [
        "defaultoptions.mixins.json",
        "defaultoptions.fabric.mixins.json"
      ],
      "depends": [
        "balm-fabric"
      ],
      "classes": 44,
      "methods": 184,
      "sites": [
        {
          "mixin": "net/blay09/mods/defaultoptions/fabric/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/Minecraft;gameDirectory:Ljava/io/File;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init> FIELD"
        },
        {
          "mixin": "net/blay09/mods/defaultoptions/mixin/GameConfigMixin",
          "targets": [
            "net/minecraft/client/main/GameConfig"
          ],
          "handler": "defaultoptions$earlyLoad",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/main/GameConfig#<init> RETURN"
        },
        {
          "mixin": "net/blay09/mods/defaultoptions/mixin/KeyMappingMixin",
          "targets": [
            "net/minecraft/client/KeyMapping"
          ],
          "handler": "setKey",
          "kind": "inject",
          "method": "setKey",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyMapping#setKey HEAD"
        },
        {
          "mixin": "net/blay09/mods/defaultoptions/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "load",
          "kind": "inject",
          "method": "load",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#load HEAD"
        },
        {
          "mixin": "net/blay09/mods/defaultoptions/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "save",
          "kind": "inject",
          "method": "save",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#save RETURN"
        }
      ],
      "listening": 4,
      "accessors": 2,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/KeyMapping#setKey @HEAD": 1,
        "net/minecraft/client/Options#load @HEAD": 1,
        "net/minecraft/client/Options#save @RETURN": 1,
        "net/minecraft/client/main/GameConfig#<init> @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Minecraft#<init> @FIELD": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 44,
        "features": {
          "command": 1,
          "mixin": 6
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 44,
        "methods": 84,
        "tried": 84,
        "completed": 25,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lnet/blay09/mods/defaultoptions/api/DefaultOptionsCategory;#clone()Ljava/lang/Object;": 1,
          "[Lnet/blay09/mods/defaultoptions/api/DefaultOptionsLoadStage;#clone()Ljava/lang/Object;": 1,
          "[Lnet/blay09/mods/defaultoptions/difficulty/UnobfuscatedDifficulty;#clone()Ljava/lang/Object;": 1,
          "[Lnet/blay09/mods/defaultoptions/keys/KeyModifier;#clone()Ljava/lang/Object;": 1,
          "java/io/BufferedReader#readLine()Ljava/lang/String;": 1,
          "java/io/File#getName()Ljava/lang/String;": 1,
          "java/io/File#isAbsolute()Z": 3,
          "java/nio/file/Path#getFileName()Ljava/nio/file/Path;": 1,
          "java/util/Collections#emptySet()Ljava/util/Set;": 2,
          "net/blay09/mods/balm/client/platform/event/callback/ScreenCallback$Init$After#EVENT": 1,
          "net/blay09/mods/defaultoptions/difficulty/UnobfuscatedDifficulty#name()Ljava/lang/String;": 1,
          "net/blay09/mods/defaultoptions/difficulty/UnobfuscatedDifficulty#ordinal()I": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 15,
          "net/minecraft/client/Options#getFile()Ljava/io/File;": 1,
          "net/minecraft/client/gui/screens/worldselection/CreateWorldScreen#children()Ljava/util/List;": 1
        },
        "runs": [
          {
            "class": "net/blay09/mods/defaultoptions/ExtraDefaultOptionsHandler",
            "method": "getCategory",
            "desc": "()Lnet/blay09/mods/defaultoptions/api/DefaultOptionsCategory;",
            "value": "obj#4"
          },
          {
            "class": "net/blay09/mods/defaultoptions/ExtraDefaultOptionsHandler",
            "method": "getLoadStage",
            "desc": "()Lnet/blay09/mods/defaultoptions/api/DefaultOptionsLoadStage;",
            "value": "obj#0"
          },
          {
            "class": "net/blay09/mods/defaultoptions/ExtraDefaultOptionsHandler",
            "method": "shouldLoadDefaults",
            "desc": "(Lnet/blay09/mods/defaultoptions/DefaultOptionsContext;)Z",
            "value": "1"
          },
          {
            "class": "net/blay09/mods/defaultoptions/resources/DefaultResourcePacksHandler",
            "method": "getCategory",
            "desc": "()Lnet/blay09/mods/defaultoptions/api/DefaultOptionsCategory;",
            "value": "obj#7"
          },
          {
            "class": "net/blay09/mods/defaultoptions/resources/DefaultResourcePacksHandler",
            "method": "getLoadStage",
            "desc": "()Lnet/blay09/mods/defaultoptions/api/DefaultOptionsLoadStage;",
            "value": "obj#2"
          },
          {
            "class": "net/blay09/mods/defaultoptions/SimpleDefaultOptionsFileHandler",
            "method": "withSaveHandler",
            "desc": "(Ljava/lang/Runnable;)Lnet/blay09/mods/defaultoptions/api/SimpleDefaultOptionsHandler;",
            "value": "obj#47"
          },
          {
            "class": "net/blay09/mods/defaultoptions/SimpleDefaultOptionsFileHandler",
            "method": "withLinePredicate",
            "desc": "(Ljava/util/function/Predicate;)Lnet/blay09/mods/defaultoptions/api/SimpleDefaultOptionsHandler;",
            "value": "obj#48"
          },
          {
            "class": "net/blay09/mods/defaultoptions/SimpleDefaultOptionsFileHandler",
            "method": "withCategory",
            "desc": "(Lnet/blay09/mods/defaultoptions/api/DefaultOptionsCategory;)Lnet/blay09/mods/defaultoptions/api/SimpleDefaultOptionsHandler;",
            "value": "obj#49"
          },
          {
            "class": "net/blay09/mods/defaultoptions/SimpleDefaultOptionsFileHandler",
            "method": "withLoadStage",
            "desc": "(Lnet/blay09/mods/defaultoptions/api/DefaultOptionsLoadStage;)Lnet/blay09/mods/defaultoptions/api/SimpleDefaultOptionsHandler;",
            "value": "obj#50"
          },
          {
            "class": "net/blay09/mods/defaultoptions/keys/KeyMappingDefaultsHandler",
            "method": "getCategory",
            "desc": "()Lnet/blay09/mods/defaultoptions/api/DefaultOptionsCategory;",
            "value": "obj#5"
          },
          {
            "class": "net/blay09/mods/defaultoptions/keys/KeyMappingDefaultsHandler",
            "method": "getLoadStage",
            "desc": "()Lnet/blay09/mods/defaultoptions/api/DefaultOptionsLoadStage;",
            "value": "obj#2"
          },
          {
            "class": "net/blay09/mods/defaultoptions/keys/KeyMappingDefaultsHandler",
            "method": "shouldLoadDefaults",
            "desc": "(Lnet/blay09/mods/defaultoptions/DefaultOptionsContext;)Z",
            "value": "1"
          }
        ],
        "insns": 640
      },
      "verdict": "no",
      "summary": "none of its 5 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "distanthorizons",
      "name": "Distant Horizons",
      "version": "3.3.4",
      "license": "LGPL",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/seibel/distanthorizons/fabric/FabricMain"
        },
        {
          "kind": "modmenu",
          "value": "com/seibel/distanthorizons/fabric/wrappers/config/ModMenuIntegration"
        },
        {
          "kind": "server",
          "value": "com/seibel/distanthorizons/fabric/FabricMain"
        }
      ],
      "mixin_configs": [
        "DistantHorizons.fabric.mixins.json"
      ],
      "depends": [],
      "classes": 1651,
      "methods": 12344,
      "sites": [
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinChunkSectionsToRender",
          "targets": [
            "net/caffeinemc/mods/sodium/client/util/SodiumChunkSection"
          ],
          "handler": "renderDeferredLayerHead",
          "kind": "inject",
          "method": "renderGroup",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/util/SodiumChunkSection#renderGroup HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onHandleLoginEnd",
          "kind": "inject",
          "method": "handleLogin",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onCleanupStart",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onEnableChunkLight",
          "kind": "inject",
          "method": "enableChunkLight",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinFogRenderer",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "onSetRenderDistanceEnd",
          "kind": "wrap-operation",
          "method": "setupFog",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/renderer/fog/FogData;renderDistanceEnd:F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "onRenderLevelStart",
          "kind": "inject",
          "method": "renderLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#renderLevel HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "onRenderLevelEnd",
          "kind": "inject",
          "method": "renderLevel",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#renderLevel RETURN"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinImmersivePortalsRenderStates",
          "targets": [
            "qouteall/imm_ptl/core/render/context_management/RenderStates"
          ],
          "handler": "preRender",
          "kind": "inject",
          "method": "updatePreRenderInfo",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at qouteall/imm_ptl/core/render/context_management/RenderStates#updatePreRenderInfo HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinIrisFrameBuffer",
          "targets": [
            "net/irisshaders/iris/gl/framebuffer/GlFramebuffer"
          ],
          "handler": "releaseStaleDepthPoints",
          "kind": "redirect",
          "method": "addDepthAttachment",
          "at": "INVOKE",
          "at_target": "Lnet/irisshaders/iris/gl/IrisRenderSystem;framebufferTexture2D(IIIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "prepareTranslucents",
          "kind": "inject",
          "method": "prepareTranslucents",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#prepareTranslucents HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "executeOutline",
          "kind": "inject",
          "method": "executeOutline",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#executeOutline HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "executeOit",
          "kind": "inject",
          "method": "executeOit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#executeOit HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinLightTexture",
          "targets": [
            "net/minecraft/client/renderer/Lightmap"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "render",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/Lightmap#render RETURN"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinMain",
          "targets": [
            "net/minecraft/client/main/Main"
          ],
          "handler": "start",
          "kind": "inject",
          "method": "Lnet/minecraft/client/main/Main;main",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/main/Main#Lnet/minecraft/client/main/Main;main HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "buildInitialScreens",
          "kind": "redirect",
          "method": "Lnet/minecraft/client/Minecraft;onGameLoadFinished",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Runnable;run()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "close",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_stopping",
          "why": "the client stops"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinOptionsScreen",
          "targets": [
            "net/minecraft/client/gui/screens/options/OptionsScreen"
          ],
          "handler": "dhConfig$init",
          "kind": "inject",
          "method": "init",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/OptionsScreen#init RETURN"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinProjectionMatrixBuffer",
          "targets": [
            "net/minecraft/client/renderer/ProjectionMatrixBuffer"
          ],
          "handler": "writeBuffer",
          "kind": "inject",
          "method": "writeBuffer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/ProjectionMatrixBuffer#writeBuffer HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/client/MixinSharedConstants",
          "targets": [
            "net/minecraft/SharedConstants"
          ],
          "handler": "setIsRunningInIde",
          "kind": "inject",
          "method": "<clinit>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/SharedConstants#<clinit> TAIL"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/server/MixinChunkMap",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "onChunkSave",
          "kind": "inject",
          "method": "save",
          "at": "RETURN",
          "at_target": "Lnet/minecraft/world/level/chunk/storage/ChunkSerializer;write(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/chunk/ChunkAccess;)Lnet/minecraft/nbt/CompoundTag;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap#save RETURN"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/server/MixinLevelTicks",
          "targets": [
            "net/minecraft/world/ticks/LevelTicks"
          ],
          "handler": "onChunkSave",
          "kind": "inject",
          "method": "schedule",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/ticks/LevelTicks#schedule HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/server/MixinServerPlayer",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "changeDimension",
          "kind": "inject",
          "method": "teleport",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerPlayer#teleport HEAD"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/server/MixinServerPlayer",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "setServerLevel",
          "kind": "inject",
          "method": "setServerLevel",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerPlayer#setServerLevel RETURN"
        },
        {
          "mixin": "com/seibel/distanthorizons/fabric/mixins/server/MixinTracingExecutor",
          "targets": [
            "net/minecraft/TracingExecutor"
          ],
          "handler": "forName",
          "kind": "inject",
          "method": "forName",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/TracingExecutor#forName HEAD"
        }
      ],
      "listening": 21,
      "accessors": 0,
      "hooks": {
        "client_stopping": 1,
        "net_from_server": 3
      },
      "wanted": {
        "net/caffeinemc/mods/sodium/client/util/SodiumChunkSection#renderGroup @HEAD": 1,
        "net/minecraft/SharedConstants#<clinit> @TAIL": 1,
        "net/minecraft/TracingExecutor#forName @HEAD": 1,
        "net/minecraft/client/gui/screens/options/OptionsScreen#init @RETURN": 1,
        "net/minecraft/client/main/Main#Lnet/minecraft/client/main/Main;main @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#renderLevel @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#renderLevel @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#executeOit @HEAD": 1,
        "net/minecraft/client/renderer/LevelRenderer#executeOutline @HEAD": 1,
        "net/minecraft/client/renderer/LevelRenderer#prepareTranslucents @HEAD": 1,
        "net/minecraft/client/renderer/Lightmap#render @RETURN": 1,
        "net/minecraft/client/renderer/ProjectionMatrixBuffer#writeBuffer @HEAD": 1,
        "net/minecraft/server/level/ChunkMap#save @RETURN": 1,
        "net/minecraft/server/level/ServerPlayer#setServerLevel @RETURN": 1,
        "net/minecraft/server/level/ServerPlayer#teleport @HEAD": 1,
        "net/minecraft/world/ticks/LevelTicks#schedule @HEAD": 1,
        "qouteall/imm_ptl/core/render/context_management/RenderStates#updatePreRenderInfo @HEAD": 1
      },
      "wanted_calls": {
        "java/lang/Runnable#run @INVOKE (redirect)": 1,
        "net/irisshaders/iris/gl/IrisRenderSystem#framebufferTexture2D @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/fog/FogData#renderDistanceEnd:F @FIELD (wrap-operation)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 2
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 2
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 2
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "AttackBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientChunkEvents",
          "horizon": "hook:chunk_load",
          "note": "a chunk loads",
          "classes": 1
        },
        {
          "class": "ClientChunkEvents$Load",
          "horizon": "hook:chunk_load",
          "note": "a chunk loads",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents$ClientStarted",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "DedicatedServerModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModOrigin",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerChunkEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerChunkEvents$Load",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityLevelChangeEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityLevelChangeEvents$AfterPlayerChange",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLevelEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLevelEvents$Load",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLevelEvents$Unload",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopped",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "UseBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 1651,
        "features": {
          "screen": 11,
          "command": 1,
          "network": 1,
          "events": 9,
          "mixin": 43
        },
        "events": [
          "AttackBlockCallback",
          "ChunkEvent",
          "Event",
          "LevelEvent",
          "PlayerEvent",
          "PlayerInteractEvent",
          "ServerAboutToStartEvent",
          "ServerEntityLevelChangeEvents",
          "UseBlockCallback"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 1651,
        "methods": 8014,
        "tried": 600,
        "completed": 159,
        "handlers_tried": 4,
        "handlers_completed": 1,
        "missing": {
          "DistantHorizons/libraries/electronwill/nightconfig/core/Config#contains(Ljava/util/List;)Z": 2,
          "DistantHorizons/libraries/electronwill/nightconfig/core/Config#getRaw(Ljava/util/List;)Ljava/lang/Object;": 4,
          "[LDistantHorizons/libraries/jpountz/util/SafeUtils;#clone()Ljava/lang/Object;": 1,
          "[Lcom/seibel/distanthorizons/api/enums/config/EDhApiGlProfileMode;#clone()Ljava/lang/Object;": 1,
          "[Lcom/seibel/distanthorizons/api/enums/config/EDhApiLodShading;#clone()Ljava/lang/Object;": 1,
          "[Lcom/seibel/distanthorizons/api/enums/config/EDhApiRenderingApi;#clone()Ljava/lang/Object;": 1,
          "[Lcom/seibel/distanthorizons/api/enums/config/EDhApiRenderingEngine;#clone()Ljava/lang/Object;": 1,
          "[Lcom/seibel/distanthorizons/api/enums/rendering/EDhApiFogDrawMode;#clone()Ljava/lang/Object;": 1,
          "[Lcom/seibel/distanthorizons/common/wrappers/block/ClientBlockStateColorCache$EColorMode;#clone()Ljava/lang/Object;": 1,
          "[Lcom/seibel/distanthorizons/core/enums/EDhDirection;#clone()Ljava/lang/Object;": 1,
          "[Lcom/seibel/distanthorizons/core/generation/tasks/ERetrievalResultState;#clone()Ljava/lang/Object;": 1,
          "[Lcom/seibel/distanthorizons/core/util/objects/GLMessages/EGLMessageSeverity;#clone()Ljava/lang/Object;": 1,
          "[Ldh_sqlite/SQLiteConfig$LockingMode;#clone()Ljava/lang/Object;": 1,
          "[Ldh_sqlite/SQLiteConfig$Pragma;#clone()Ljava/lang/Object;": 1,
          "[Ldh_sqlite/SQLiteConfig$TempStore;#clone()Ljava/lang/Object;": 1,
          "[Ldhcomgithubluben/zstd/util/Native;#clone()Ljava/lang/Object;": 1,
          "com/google/common/base/Preconditions#checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/mojang/blaze3d/systems/RenderSystem#getDevice()Lcom/mojang/renderpearl/api/device/GpuDevice;": 1,
          "com/mojang/renderpearl/api/GpuFormat#D32_FLOAT": 1,
          "com/mojang/renderpearl/api/GpuFormat#RGBA8_UNORM": 2,
          "com/mojang/renderpearl/api/device/GpuDevice#createTexture(Ljava/lang/String;ILcom/mojang/renderpearl/api/GpuFormat;IIII)Lcom/mojang/renderpearl/api/textures/GpuTexture;": 2,
          "com/mojang/renderpearl/api/textures/AddressMode#CLAMP_TO_EDGE": 1,
          "com/seibel/distanthorizons/api/enums/rendering/EDhApiDirection#ordinal()I": 1,
          "com/seibel/distanthorizons/common/wrappers/gui/DhScreen#init()V": 1,
          "com/seibel/distanthorizons/core/enums/EDhDirection#ordinal()I": 2,
          "com/seibel/distanthorizons/core/network/messages/fullData/FullDataSourceRequestMessage#readString(Lio/netty/buffer/ByteBuf;)Ljava/lang/String;": 1,
          "com/seibel/distanthorizons/core/network/messages/fullData/FullDataSourceRequestMessage#writeString(Ljava/lang/String;Lio/netty/buffer/ByteBuf;)V": 1,
          "com/seibel/distanthorizons/core/util/gridList/MovableGridRingList#iterator()Ljava/util/Iterator;": 1,
          "com/seibel/distanthorizons/core/wrapperInterfaces/world/IClientLevelWrapper#getMinHeight()I": 2,
          "dh_sqlite/SQLiteConfig$LockingMode#name()Ljava/lang/String;": 1,
          "dh_sqlite/SQLiteConfig$TempStore#name()Ljava/lang/String;": 1,
          "java/awt/Color#red": 1,
          "java/io/File#toPath()Ljava/nio/file/Path;": 1,
          "java/io/InputStream#read()I": 1,
          "java/io/ObjectInputStream#defaultReadObject()V": 2,
          "java/io/RandomAccessFile#close()V": 1,
          "java/io/RandomAccessFile#getFilePointer()J": 1,
          "java/io/RandomAccessFile#length()J": 1,
          "java/io/RandomAccessFile#read()I": 1,
          "java/io/RandomAccessFile#read([B)I": 1,
          "java/io/RandomAccessFile#read([BII)I": 1,
          "java/io/RandomAccessFile#seek(J)V": 1,
          "java/io/Writer#write(I)V": 1,
          "java/io/Writer#write([CII)V": 2,
          "java/lang/Class#forName(Ljava/lang/String;)Ljava/lang/Class;": 1,
          "java/lang/Comparable#compareTo(Ljava/lang/Object;)I": 4,
          "java/lang/Enum#getDeclaringClass()Ljava/lang/Class;": 4,
          "java/lang/Object#clone()Ljava/lang/Object;": 2,
          "java/lang/Runtime#getRuntime()Ljava/lang/Runtime;": 1,
          "java/lang/String#format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 4,
          "java/lang/String#replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/lang/String#split(Ljava/lang/String;)[Ljava/lang/String;": 2,
          "java/lang/System#getProperty(Ljava/lang/String;)Ljava/lang/String;": 5,
          "java/lang/Thread#currentThread()Ljava/lang/Thread;": 1,
          "java/lang/invoke/MethodHandles#lookup()Ljava/lang/invoke/MethodHandles$Lookup;": 1,
          "java/net/URL#openConnection()Ljava/net/URLConnection;": 2,
          "java/nio/ByteBuffer#capacity()I": 1,
          "java/nio/ByteBuffer#hasRemaining()Z": 3,
          "java/nio/ByteBuffer#isDirect()Z": 1,
          "java/nio/ByteBuffer#limit()I": 1,
          "java/nio/ByteOrder#BIG_ENDIAN": 1,
          "java/nio/charset/Charset#newDecoder()Ljava/nio/charset/CharsetDecoder;": 2,
          "java/nio/charset/StandardCharsets#UTF_8": 6,
          "java/nio/file/Files#notExists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/security/AccessController#doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object;": 2,
          "java/sql/ResultSet#getInt(Ljava/lang/String;)I": 2,
          "java/text/DateFormatSymbols#getEras()[Ljava/lang/String;": 2,
          "java/text/ParsePosition#getIndex()I": 4,
          "java/util/Calendar#getDisplayNames(IILjava/util/Locale;)Ljava/util/Map;": 1,
          "java/util/Calendar#setTime(Ljava/util/Date;)V": 3,
          "java/util/Calendar#setTimeInMillis(J)V": 1,
          "java/util/HashSet#add(Ljava/lang/Object;)Z": 1,
          "java/util/HashSet#clear()V": 1,
          "java/util/Iterator#forEachRemaining(Ljava/util/function/Consumer;)V": 1,
          "java/util/Locale#hashCode()I": 2,
          "java/util/Map#compute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;": 1,
          "java/util/Map#computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;": 1,
          "java/util/Map#computeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;": 1,
          "java/util/Map#containsValue(Ljava/lang/Object;)Z": 1,
          "java/util/Map#equals(Ljava/lang/Object;)Z": 1,
          "java/util/Map#hashCode()I": 2,
          "java/util/Map#merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;": 1,
          "java/util/Map#putAll(Ljava/util/Map;)V": 1,
          "java/util/Map#putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Map#replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Map#replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z": 1,
          "java/util/Map#replaceAll(Ljava/util/function/BiFunction;)V": 1,
          "java/util/Map$Entry#setValue(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Objects#hashCode(Ljava/lang/Object;)I": 1,
          "java/util/Queue#size()I": 3,
          "java/util/TimeZone#getID()Ljava/lang/String;": 2,
          "java/util/Timer#schedule(Ljava/util/TimerTask;J)V": 1,
          "java/util/TimerTask#cancel()Z": 1,
          "java/util/UUID#fromString(Ljava/lang/String;)Ljava/util/UUID;": 2,
          "java/util/concurrent/ConcurrentHashMap#clear()V": 1,
          "java/util/concurrent/ConcurrentLinkedQueue#poll()Ljava/lang/Object;": 1,
          "java/util/concurrent/ConcurrentMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/concurrent/ThreadPoolExecutor#afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V": 1,
          "java/util/concurrent/ThreadPoolExecutor#beforeExecute(Ljava/lang/Thread;Ljava/lang/Runnable;)V": 1,
          "java/util/concurrent/ThreadPoolExecutor#purge()V": 1,
          "java/util/concurrent/ThreadPoolExecutor#terminated()V": 1,
          "java/util/concurrent/atomic/AtomicBoolean#get()Z": 14,
          "java/util/concurrent/atomic/AtomicBoolean#set(Z)V": 1,
          "java/util/concurrent/atomic/AtomicReference#get()Ljava/lang/Object;": 17,
          "java/util/concurrent/locks/ReentrantReadWriteLock#readLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;": 3,
          "java/util/concurrent/locks/ReentrantReadWriteLock#writeLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;": 2,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 3,
          "java/util/regex/Pattern#matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;": 1,
          "java/util/zip/CRC32#update([BII)V": 1,
          "net/minecraft/client/Minecraft#getDeltaTracker()Lnet/minecraft/client/DeltaTracker;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/core/Registry#holderByNameCodec()Lcom/mojang/serialization/Codec;": 1,
          "net/minecraft/nbt/CompoundTag#getCompound(Ljava/lang/String;)Ljava/util/Optional;": 1,
          "net/minecraft/nbt/CompoundTag#getInt(Ljava/lang/String;)Ljava/util/Optional;": 1,
          "net/minecraft/network/FriendlyByteBuf#markReaderIndex()Lnet/minecraft/network/FriendlyByteBuf;": 2,
          "net/minecraft/world/level/LevelAccessor#getSectionsCount()I": 1,
          "net/minecraft/world/level/LevelAccessor#registryAccess()Lnet/minecraft/core/RegistryAccess;": 2,
          "net/minecraft/world/level/block/Block#toString()Ljava/lang/String;": 1,
          "net/minecraft/world/level/lighting/LayerLightEventListener$DummyLightLayerEventListener#INSTANCE": 1,
          "net/minecraft/world/level/portal/TeleportTransition#newLevel()Lnet/minecraft/server/level/ServerLevel;": 1,
          "new net/minecraft/client/renderer/fog/FogRenderer": 1,
          "new net/minecraft/world/level/chunk/ProtoChunk": 2
        },
        "runs": [
          {
            "class": "DistantHorizons/libraries/jpountz/xxhash/StreamingXXHash64JavaUnsafe$Factory",
            "method": "newStreamingHash",
            "desc": "(J)LDistantHorizons/libraries/jpountz/xxhash/StreamingXXHash64;",
            "value": "obj#12"
          },
          {
            "class": "com/seibel/distanthorizons/core/sql/repo/BeaconBeamRepo",
            "method": "getTableName",
            "desc": "()Ljava/lang/String;",
            "value": "\"BeaconBeam\""
          },
          {
            "class": "com/seibel/distanthorizons/core/sql/repo/BeaconBeamRepo",
            "method": "CreateParameterizedWhereString",
            "desc": "()Ljava/lang/String;",
            "value": "\"BlockPosX = ? AND BlockPosY = ? AND BlockPosZ = ?\""
          },
          {
            "class": "com/seibel/distanthorizons/core/util/LodUtil",
            "method": "getChunkPosFromDouble",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/util/LodUtil",
            "method": "getSubChunkPosFromDouble",
            "desc": "(D)F",
            "value": "0f"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/InMemoryCommentedFormat",
            "method": "defaultInstance",
            "desc": "()LDistantHorizons/libraries/electronwill/nightconfig/core/InMemoryCommentedFormat;",
            "value": "obj#48"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/InMemoryCommentedFormat",
            "method": "withSupport",
            "desc": "(Ljava/util/function/Predicate;)LDistantHorizons/libraries/electronwill/nightconfig/core/InMemoryCommentedFormat;",
            "value": "obj#50"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/InMemoryCommentedFormat",
            "method": "supportsComments",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/InMemoryCommentedFormat",
            "method": "isInMemory",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiFarFogConfig",
            "method": "farFogStartDistance",
            "desc": "()Lcom/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue;",
            "value": "obj#73"
          },
          {
            "class": "com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiFarFogConfig",
            "method": "farFogEndDistance",
            "desc": "()Lcom/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue;",
            "value": "obj#76"
          },
          {
            "class": "com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiFarFogConfig",
            "method": "farFogMinThickness",
            "desc": "()Lcom/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue;",
            "value": "obj#79"
          },
          {
            "class": "com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiFarFogConfig",
            "method": "farFogMaxThickness",
            "desc": "()Lcom/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue;",
            "value": "obj#82"
          },
          {
            "class": "com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiFarFogConfig",
            "method": "farFogFalloff",
            "desc": "()Lcom/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue;",
            "value": "obj#85"
          },
          {
            "class": "com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiFarFogConfig",
            "method": "farFogDensity",
            "desc": "()Lcom/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue;",
            "value": "obj#88"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/utils/ObservedMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/utils/ObservedMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/utils/ObservedMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/CountingInputStream",
            "method": "getSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper",
            "method": "mcRendersToFrameBuffer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper",
            "method": "runningLegacyOpenGL",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper",
            "method": "getMcDepthDirection",
            "desc": "()Lcom/seibel/distanthorizons/api/enums/config/EDhApiDepthDirection;",
            "value": "obj#151"
          },
          {
            "class": "com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper",
            "method": "getTargetFramebuffer",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/serde/TypeConstraint$RefinedWildcard",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/serde/TypeConstraint$RefinedWildcard",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/QuadTree/LodRenderSection",
            "method": "canRender",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/QuadTree/LodRenderSection",
            "method": "gpuUploadComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/QuadTree/LodRenderSection",
            "method": "getRenderingEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureWrapper",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureWrapper",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureWrapper",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/LZMA2Options",
            "method": "getDictSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/LZMA2Options",
            "method": "getLc",
            "desc": "()I",
            "value": "3"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/LZMA2Options",
            "method": "getLp",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/LZMA2Options",
            "method": "getPb",
            "desc": "()I",
            "value": "2"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/LZMA2Options",
            "method": "getMode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/LZMA2Options",
            "method": "getNiceLen",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/LZMA2Options",
            "method": "getMatchFinder",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/LZMA2Options",
            "method": "getDepthLimit",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/LZMA2Options",
            "method": "getEncoderMemoryUsage",
            "desc": "()I",
            "value": "70"
          },
          {
            "class": "com/seibel/distanthorizons/core/util/objects/SortedArraySet",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/util/objects/SortedArraySet",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"SortedArraySet{list=null, comparator=null}\""
          },
          {
            "class": "com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGenerator",
            "method": "getSmallestDataDetailLevel",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGenerator",
            "method": "getLargestDataDetailLevel",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGenerator",
            "method": "runApiValidation",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGenerator",
            "method": "getReturnType",
            "desc": "()Lcom/seibel/distanthorizons/api/enums/worldGeneration/EDhApiWorldGeneratorReturnType;",
            "value": "obj#450"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/serde/ObjectSerializer",
            "method": "blankBuilder",
            "desc": "()LDistantHorizons/libraries/electronwill/nightconfig/core/serde/ObjectSerializerBuilder;",
            "value": "obj#495"
          },
          {
            "class": "com/seibel/distanthorizons/core/util/gridList/MovableGridRingList",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/util/gridList/MovableGridRingList",
            "method": "getHalfWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dh_sqlite/date/FastDateParser",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dh_sqlite/date/FastDateParser",
            "method": "adjustYear",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dh_sqlite/date/FastDateParser",
            "method": "isNextNumber",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dh_sqlite/date/FastDateParser",
            "method": "getFieldWidth",
            "desc": "()I",
            "value": "4"
          },
          {
            "class": "dh_sqlite/date/FastDateParser",
            "method": "getStrategy",
            "desc": "(Ljava/lang/String;Ljava/util/Calendar;)Ldh_sqlite/date/FastDateParser$Strategy;",
            "value": "obj#582"
          },
          {
            "class": "DistantHorizons/libraries/jpountz/lz4/LZ4ByteBufferUtils$Match",
            "method": "end",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodBufferContainer",
            "method": "createIndexBuffers",
            "desc": "(Lcom/seibel/distanthorizons/core/util/objects/pooling/PhantomArrayList/PhantomArrayListCheckout;Ljava/util/ArrayList;)Ljava/util/ArrayList;",
            "value": "obj#614"
          },
          {
            "class": "com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodBufferContainer",
            "method": "hasNonNullVbos",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodBufferContainer",
            "method": "vboBufferCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/fabric/wrappers/modAccessor/StarlightAccessor",
            "method": "getModName",
            "desc": "()Ljava/lang/String;",
            "value": "\"Starlight-Fabric-1.18.X\""
          },
          {
            "class": "com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiGenericRenderingConfig",
            "method": "renderingEnabled",
            "desc": "()Lcom/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue;",
            "value": "obj#650"
          },
          {
            "class": "com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiGenericRenderingConfig",
            "method": "beaconRenderingEnabled",
            "desc": "()Lcom/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue;",
            "value": "obj#653"
          },
          {
            "class": "com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiGenericRenderingConfig",
            "method": "cloudRenderingEnabled",
            "desc": "()Lcom/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue;",
            "value": "obj#656"
          },
          {
            "class": "DistantHorizons/libraries/tukaani/xz/lzma/LZMAEncoderFast",
            "method": "changePair",
            "desc": "(II)Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/sql/DbConnectionClosedException",
            "method": "isClosedException",
            "desc": "(Ljava/lang/Throwable;)Z",
            "value": "0"
          },
          {
            "class": "dh_sqlite/date/FastDatePrinter",
            "method": "newCalendar",
            "desc": "()Ljava/util/GregorianCalendar;",
            "value": "obj#710"
          },
          {
            "class": "dh_sqlite/date/FastDatePrinter",
            "method": "getMaxLengthEstimate",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dh_sqlite/date/FastDatePrinter",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/renderer/BeaconRenderHandler$BeaconBeamWithWidth",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dh_sqlite/JDBC",
            "method": "jdbcCompliant",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dh_sqlite/JDBC",
            "method": "acceptsURL",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "dh_sqlite/JDBC",
            "method": "isValidURL",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "dh_sqlite/JDBC",
            "method": "extractAddress",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/file/FileWatcher$ControlMessage",
            "method": "remove",
            "desc": "(LDistantHorizons/libraries/electronwill/nightconfig/core/file/FileWatcher$CanonicalPath;Ljava/util/concurrent/CompletableFuture;)LDistantHorizons/libraries/electronwill/nightconfig/core/file/FileWatcher$ControlMessage;",
            "value": "obj#782"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/file/FileWatcher$ControlMessage",
            "method": "poison",
            "desc": "(Ljava/util/concurrent/CompletableFuture;)LDistantHorizons/libraries/electronwill/nightconfig/core/file/FileWatcher$ControlMessage;",
            "value": "obj#783"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/file/FileWatcher$ControlMessage",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"ControlMessage[kind=null, path=null, handler=null, future=null]\""
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/AbstractConfig$EntryWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/io/ParsingException",
            "method": "readFailed",
            "desc": "(Ljava/lang/Throwable;)LDistantHorizons/libraries/electronwill/nightconfig/core/io/ParsingException;",
            "value": "obj#819"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/io/ParsingException",
            "method": "notEnoughData",
            "desc": "()LDistantHorizons/libraries/electronwill/nightconfig/core/io/ParsingException;",
            "value": "obj#820"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/DhApiRenderProxy",
            "method": "clearRenderDataCache",
            "desc": "()Lcom/seibel/distanthorizons/api/objects/DhApiResult;",
            "value": "obj#822"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/DhApiRenderProxy",
            "method": "getDhDepthTextureGlId",
            "desc": "()Lcom/seibel/distanthorizons/api/objects/DhApiResult;",
            "value": "obj#829"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/DhApiRenderProxy",
            "method": "getDhDepthTextureBlazeWrapper",
            "desc": "()Lcom/seibel/distanthorizons/api/objects/DhApiResult;",
            "value": "obj#831"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/DhApiRenderProxy",
            "method": "getDhColorTextureGlId",
            "desc": "()Lcom/seibel/distanthorizons/api/objects/DhApiResult;",
            "value": "obj#833"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/DhApiRenderProxy",
            "method": "getDhColorTextureBlazeWrapper",
            "desc": "()Lcom/seibel/distanthorizons/api/objects/DhApiResult;",
            "value": "obj#835"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/DhApiRenderProxy",
            "method": "getDhBlockRatioAtlasTextureGlId",
            "desc": "()Lcom/seibel/distanthorizons/api/objects/DhApiResult;",
            "value": "obj#837"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/DhApiRenderProxy",
            "method": "getDhBlockRatioAtlasTextureBlazeWrapper",
            "desc": "()Lcom/seibel/distanthorizons/api/objects/DhApiResult;",
            "value": "obj#839"
          },
          {
            "class": "com/seibel/distanthorizons/core/render/DhApiRenderProxy",
            "method": "getDeferTransparentRendering",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dh_sqlite/jdbc3/JDBC3Savepoint",
            "method": "getSavepointId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnBox",
            "method": "tryGetTextureId",
            "desc": "([SLcom/seibel/distanthorizons/core/enums/EDhDirection;)S",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/AbstractConfig",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/AbstractConfig",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/AbstractConfig",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"AbstractConfig:null\""
          },
          {
            "class": "dh_sqlite/date/FastDateParser$2",
            "method": "modify",
            "desc": "(I)I",
            "value": "-1"
          },
          {
            "class": "DistantHorizons/libraries/electronwill/nightconfig/core/concurrent/StampedConfig$WritableLockedView",
            "method": "valueMap",
            "desc": "()Ljava/util/Map;",
            "value": "obj#915"
          },
          {
            "class": "com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DummyLightEngine",
            "method": "runLightUpdates",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DummyLightEngine",
            "method": "lightOnInSection",
            "desc": "(Lnet/minecraft/core/SectionPos;)Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DummyLightEngine",
            "method": "hasLightWork",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DummyLightEngine",
            "method": "getRawBrightness",
            "desc": "(Lnet/minecraft/core/BlockPos;I)I",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/util/objects/UncheckedInterruptedException",
            "method": "convert",
            "desc": "(Ljava/lang/InterruptedException;)Lcom/seibel/distanthorizons/core/util/objects/UncheckedInterruptedException;",
            "value": "obj#944"
          },
          {
            "class": "com/seibel/distanthorizons/core/util/objects/UncheckedInterruptedException",
            "method": "isInterrupt",
            "desc": "(Ljava/lang/Throwable;)Z",
            "value": "0"
          },
          {
            "class": "com/seibel/distanthorizons/core/wrapperInterfaces/modAccessor/AbstractImmersivePortalsAccessor",
            "method": "getModName",
            "desc": "()Ljava/lang/String;",
            "value": "\"Immersive Portals\""
          }
        ],
        "insns": 11598
      },
      "verdict": "no",
      "summary": "only 4 of 21 listening patch sites have a hook (19%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "drippyloadingscreen",
      "name": "Drippy Loading Screen",
      "version": "3.1.6",
      "license": "DSMSLv3.1 (DON'T SNATCH MA STUFF LICENSE v3.1)",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "de/keksuccino/drippyloadingscreen/DrippyLoadingScreenFabric"
        }
      ],
      "mixin_configs": [
        "drippyloadingscreen.mixins.json",
        "drippyloadingscreen.fabric.mixins.json"
      ],
      "depends": [
        "fancymenu",
        "konkrete"
      ],
      "classes": 41,
      "methods": 174,
      "sites": [
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinAbstractEditorElement",
          "targets": [
            "de/keksuccino/fancymenu/customization/element/editor/AbstractEditorElement"
          ],
          "handler": "after_init_Drippy",
          "kind": "inject",
          "method": "init",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/element/editor/AbstractEditorElement#init RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinCustomizationOverlay",
          "targets": [
            "de/keksuccino/fancymenu/customization/overlay/CustomizationOverlay"
          ],
          "handler": "on_isOverlayVisible_Drippy",
          "kind": "inject",
          "method": "isOverlayVisible",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/overlay/CustomizationOverlay#isOverlayVisible HEAD"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinCustomizationOverlayUI",
          "targets": [
            "de/keksuccino/fancymenu/customization/overlay/CustomizationOverlayUI"
          ],
          "handler": "onReturnBuildMenuBarDrippy",
          "kind": "inject",
          "method": "buildMenuBar",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/overlay/CustomizationOverlayUI#buildMenuBar RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinElementBuilder",
          "targets": [
            "de/keksuccino/fancymenu/customization/element/ElementBuilder"
          ],
          "handler": "return_shouldShowUpInEditorElementMenu_Drippy",
          "kind": "inject",
          "method": "shouldShowUpInEditorElementMenu",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/element/ElementBuilder#shouldShowUpInEditorElementMenu RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinFontManager",
          "targets": [
            "net/minecraft/client/gui/font/FontManager"
          ],
          "handler": "after_apply_Drippy",
          "kind": "inject",
          "method": "apply",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/FontManager#apply RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinGuiRenderState",
          "targets": [
            "net/minecraft/client/renderer/state/gui/GuiRenderState"
          ],
          "handler": "before_submitText_Drippy",
          "kind": "inject",
          "method": "addText",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/state/gui/GuiRenderState#addText HEAD"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinImageElement",
          "targets": [
            "de/keksuccino/fancymenu/customization/element/elements/image/ImageElement"
          ],
          "handler": "afterGetResourceDrippy",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lde/keksuccino/fancymenu/customization/element/elements/image/ImageElement;getTextureResource()Lde/keksuccino/fancymenu/util/resource/resources/texture/ITexture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/element/elements/image/ImageElement#extractRenderState INVOKE"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinImageElement",
          "targets": [
            "de/keksuccino/fancymenu/customization/element/elements/image/ImageElement"
          ],
          "handler": "wrap_renderSmoothImageRectRoundAllCornersScaled_Drippy",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lde/keksuccino/fancymenu/util/rendering/SmoothImageRectangleRenderer;renderSmoothImageRectRoundAllCornersScaled(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/resources/Identifier;FFFFFFFFIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinImageMenuBackground",
          "targets": [
            "de/keksuccino/fancymenu/customization/background/backgrounds/image/ImageMenuBackground"
          ],
          "handler": "afterGetResourceDrippy",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lde/keksuccino/fancymenu/util/resource/ResourceSupplier;get()Lde/keksuccino/fancymenu/util/resource/Resource;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/background/backgrounds/image/ImageMenuBackground#extractRenderState INVOKE"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLayout",
          "targets": [
            "de/keksuccino/fancymenu/customization/layout/Layout"
          ],
          "handler": "atReturnConvertLegacyElementsDrippy",
          "kind": "inject",
          "method": "convertLegacyElements",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/layout/Layout#convertLegacyElements RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLayout",
          "targets": [
            "de/keksuccino/fancymenu/customization/layout/Layout"
          ],
          "handler": "atReturnConvertLegacyVanillaButtonCustomizationsDrippy",
          "kind": "inject",
          "method": "convertLegacyVanillaButtonCustomizations",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/layout/Layout#convertLegacyVanillaButtonCustomizations RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLayoutEditorScreen",
          "targets": [
            "de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorScreen"
          ],
          "handler": "before_scaling_in_init_Drippy",
          "kind": "inject",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lde/keksuccino/fancymenu/customization/layout/editor/LayoutEditorScreen;serializeElementInstancesToLayoutInstance()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorScreen#init INVOKE"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLayoutEditorUI",
          "targets": [
            "de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorUI"
          ],
          "handler": "wrapGetBuildersDrippy",
          "kind": "redirect",
          "method": "buildElementContextMenu",
          "at": "INVOKE",
          "at_target": "Lde/keksuccino/fancymenu/customization/element/ElementRegistry;getBuilders()Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLayoutEditorUI",
          "targets": [
            "de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorUI"
          ],
          "handler": "wrap_List_sort_in_buildDecorationOverlaysMenu_Drippy",
          "kind": "wrap-operation",
          "method": "buildDecorationOverlaysMenu",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;sort(Ljava/util/Comparator;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLayoutEditorUI",
          "targets": [
            "de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorUI"
          ],
          "handler": "after_buildRightClickContextMenu_Drippy",
          "kind": "inject",
          "method": "buildRightClickContextMenu",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorUI#buildRightClickContextMenu RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLoadingOverlay",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "afterConstructDrippy",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/LoadingOverlay#<init> RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLoadingOverlay",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "after_render_Drippy",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/LoadingOverlay#extractRenderState RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLoadingOverlay",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "wrap_Screen_render_in_render_Drippy",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;extractRenderStateWithTooltipAndSubtitles(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLoadingOverlay",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "beforeCloseOverlayDrippy",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Gui;setOverlay(Lnet/minecraft/client/gui/screens/Overlay;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/LoadingOverlay#extractRenderState INVOKE"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLoadingOverlay",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "cancelOriginalProgressBarRenderingDrippy",
          "kind": "inject",
          "method": "extractProgressBar",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/LoadingOverlay#extractProgressBar HEAD"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLoadingOverlay",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "cancelOriginalLogoRenderingDrippy",
          "kind": "wrap-with-condition",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blit(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIFFIIIIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLoadingOverlay",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "cancelBackgroundRenderingDrippy",
          "kind": "wrap-with-condition",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;fill(IIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinMenuBackgroundBuilder",
          "targets": [
            "de/keksuccino/fancymenu/customization/background/MenuBackgroundBuilder"
          ],
          "handler": "return_shouldShowUpInEditorBackgroundMenu_Drippy",
          "kind": "inject",
          "method": "shouldShowUpInEditorBackgroundMenu",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/background/MenuBackgroundBuilder#shouldShowUpInEditorBackgroundMenu RETURN"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinPlayerEntityElement",
          "targets": [
            "de/keksuccino/fancymenu/customization/element/elements/playerentity/PlayerEntityElement"
          ],
          "handler": "headRenderDrippy",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/element/elements/playerentity/PlayerEntityElement#extractRenderState HEAD"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinProgressBarElement",
          "targets": [
            "de/keksuccino/fancymenu/customization/element/elements/progressbar/ProgressBarElement"
          ],
          "handler": "beforeRenderBackgroundDrippy",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lde/keksuccino/fancymenu/customization/element/elements/progressbar/ProgressBarElement;extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/element/elements/progressbar/ProgressBarElement#extractRenderState INVOKE"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinScreenCustomization",
          "targets": [
            "de/keksuccino/fancymenu/customization/ScreenCustomization"
          ],
          "handler": "beforeInitLayoutHandlerDrippy",
          "kind": "inject",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lde/keksuccino/fancymenu/customization/layout/LayoutHandler;init()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/ScreenCustomization#init INVOKE"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinScreenCustomizationLayer",
          "targets": [
            "de/keksuccino/fancymenu/customization/layer/ScreenCustomizationLayer"
          ],
          "handler": "before_scaling_in_onInitOrResizeScreenPre_Drippy",
          "kind": "inject",
          "method": "onInitOrResizeScreenPre",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;getWindow()Lcom/mojang/blaze3d/platform/Window;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/keksuccino/fancymenu/customization/layer/ScreenCustomizationLayer#onInitOrResizeScreenPre INVOKE"
        },
        {
          "mixin": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinScreenCustomizationLayer",
          "targets": [
            "de/keksuccino/fancymenu/customization/layer/ScreenCustomizationLayer"
          ],
          "handler": "onGetEnabledLayoutsForScreenIdentifierDrippy",
          "kind": "redirect",
          "method": "onInitOrResizeScreenPre",
          "at": "INVOKE",
          "at_target": "Lde/keksuccino/fancymenu/customization/layout/LayoutHandler;getEnabledLayoutsForScreenIdentifier(Ljava/lang/String;Z)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        }
      ],
      "listening": 14,
      "accessors": 3,
      "hooks": {},
      "wanted": {
        "de/keksuccino/fancymenu/customization/background/MenuBackgroundBuilder#shouldShowUpInEditorBackgroundMenu @RETURN": 1,
        "de/keksuccino/fancymenu/customization/element/ElementBuilder#shouldShowUpInEditorElementMenu @RETURN": 1,
        "de/keksuccino/fancymenu/customization/element/editor/AbstractEditorElement#init @RETURN": 1,
        "de/keksuccino/fancymenu/customization/element/elements/playerentity/PlayerEntityElement#extractRenderState @HEAD": 1,
        "de/keksuccino/fancymenu/customization/layout/Layout#convertLegacyElements @RETURN": 1,
        "de/keksuccino/fancymenu/customization/layout/Layout#convertLegacyVanillaButtonCustomizations @RETURN": 1,
        "de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorUI#buildRightClickContextMenu @RETURN": 1,
        "de/keksuccino/fancymenu/customization/overlay/CustomizationOverlay#isOverlayVisible @HEAD": 1,
        "de/keksuccino/fancymenu/customization/overlay/CustomizationOverlayUI#buildMenuBar @RETURN": 1,
        "net/minecraft/client/gui/font/FontManager#apply @RETURN": 1,
        "net/minecraft/client/gui/screens/LoadingOverlay#<init> @RETURN": 1,
        "net/minecraft/client/gui/screens/LoadingOverlay#extractProgressBar @HEAD": 1,
        "net/minecraft/client/gui/screens/LoadingOverlay#extractRenderState @RETURN": 1,
        "net/minecraft/client/renderer/state/gui/GuiRenderState#addText @HEAD": 1
      },
      "wanted_calls": {
        "de/keksuccino/fancymenu/customization/ScreenCustomization#init @INVOKE": 1,
        "de/keksuccino/fancymenu/customization/background/backgrounds/image/ImageMenuBackground#extractRenderState @INVOKE": 1,
        "de/keksuccino/fancymenu/customization/element/ElementRegistry#getBuilders @INVOKE (redirect)": 1,
        "de/keksuccino/fancymenu/customization/element/elements/image/ImageElement#extractRenderState @INVOKE": 1,
        "de/keksuccino/fancymenu/customization/element/elements/progressbar/ProgressBarElement#extractRenderState @INVOKE": 1,
        "de/keksuccino/fancymenu/customization/layer/ScreenCustomizationLayer#onInitOrResizeScreenPre @INVOKE": 1,
        "de/keksuccino/fancymenu/customization/layout/LayoutHandler#getEnabledLayoutsForScreenIdentifier @INVOKE (redirect)": 1,
        "de/keksuccino/fancymenu/customization/layout/editor/LayoutEditorScreen#init @INVOKE": 1,
        "de/keksuccino/fancymenu/util/rendering/SmoothImageRectangleRenderer#renderSmoothImageRectRoundAllCornersScaled @INVOKE (wrap-operation)": 1,
        "java/util/List#sort @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#blit @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#fill @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/gui/screens/LoadingOverlay#extractRenderState @INVOKE": 1,
        "net/minecraft/client/gui/screens/Screen#extractRenderStateWithTooltipAndSubtitles @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 41,
        "features": {
          "screen": 1,
          "mixin": 20
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 41,
        "methods": 67,
        "tried": 67,
        "completed": 17,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "de/keksuccino/drippyloadingscreen/customization/elements/vanillabar/VanillaBarElement#getAbsoluteX()I": 1,
          "de/keksuccino/fancymenu/customization/element/AbstractElement#<init>(Lde/keksuccino/fancymenu/customization/element/ElementBuilder;)V": 2,
          "de/keksuccino/fancymenu/customization/element/ElementRegistry#getBuilders()Ljava/util/List;": 1,
          "de/keksuccino/fancymenu/customization/element/ElementRegistry#register(Lde/keksuccino/fancymenu/customization/element/ElementBuilder;)V": 1,
          "de/keksuccino/fancymenu/customization/element/editor/AbstractEditorElement#<init>(Lde/keksuccino/fancymenu/customization/element/AbstractElement;Lde/keksuccino/fancymenu/customization/layout/editor/LayoutEditorScreen;)V": 2,
          "de/keksuccino/fancymenu/customization/layer/ScreenCustomizationLayerHandler#getLayerOfScreen(Lnet/minecraft/client/gui/screens/Screen;)Lde/keksuccino/fancymenu/customization/layer/ScreenCustomizationLayer;": 1,
          "de/keksuccino/fancymenu/customization/layout/LayoutHandler#getEnabledLayoutsForScreenIdentifier(Ljava/lang/String;Z)Ljava/util/List;": 1,
          "de/keksuccino/fancymenu/customization/placeholder/PlaceholderRegistry#register(Lde/keksuccino/fancymenu/customization/placeholder/Placeholder;)V": 1,
          "de/keksuccino/fancymenu/events/screen/RenderScreenEvent$Post#getScreen()Lnet/minecraft/client/gui/screens/Screen;": 1,
          "de/keksuccino/fancymenu/util/file/FileUtils#createDirectory(Ljava/io/File;)Ljava/io/File;": 1,
          "java/util/ServiceLoader#load(Ljava/lang/Class;)Ljava/util/ServiceLoader;": 1,
          "net/fabricmc/fabric/api/client/keymapping/v1/KeyMappingHelper#getBoundKeyOf(Lnet/minecraft/client/KeyMapping;)Lcom/mojang/blaze3d/platform/InputConstants$Key;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 4,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 5,
          "net/minecraft/client/gui/GuiGraphicsExtractor#pose()Lorg/joml/Matrix3x2fStack;": 2,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "new de/keksuccino/fancymenu/customization/element/SerializedElement": 1
        },
        "runs": [
          {
            "class": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinLoadingOverlay",
            "method": "getFadeInOpacityDrippy",
            "desc": "()F",
            "value": "-1f"
          },
          {
            "class": "de/keksuccino/drippyloadingscreen/DrippyUtils",
            "method": "isDrippyIdentifier",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "de/keksuccino/drippyloadingscreen/DrippyUtils",
            "method": "fontsReady",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "de/keksuccino/drippyloadingscreen/customization/DrippyOverlayScreen",
            "method": "replaceAlpha",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/keksuccino/drippyloadingscreen/customization/elements/vanillabar/VanillaBarElement",
            "method": "mergeOpacity",
            "desc": "(IF)I",
            "value": "83886080"
          },
          {
            "class": "de/keksuccino/drippyloadingscreen/mixin/mixins/common/client/MixinImageElement",
            "method": "hasSmoothImageShaders_Drippy",
            "desc": "(Lcom/mojang/renderpearl/api/pipeline/ShaderSource;)Z",
            "value": "0"
          }
        ],
        "insns": 482
      },
      "verdict": "no",
      "summary": "none of its 28 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "durabilitytooltip",
      "name": "Durability Tooltip",
      "version": "1.2.0+a",
      "license": "All rights reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/supermartijn642/durabilitytooltip/DurabilityTooltipClient"
        },
        {
          "kind": "main",
          "value": "com/supermartijn642/durabilitytooltip/DurabilityTooltip"
        }
      ],
      "mixin_configs": [
        "durabilitytooltip.mixins.json"
      ],
      "depends": [
        "supermartijn642configlib"
      ],
      "classes": 5,
      "methods": 23,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemTooltipCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 5,
        "features": {
          "events": 1
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 5,
        "methods": 5,
        "tried": 5,
        "completed": 1,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/supermartijn642/durabilitytooltip/TooltipColorStyle;#clone()Ljava/lang/Object;": 1,
          "[Lcom/supermartijn642/durabilitytooltip/TooltipStyle;#clone()Ljava/lang/Object;": 1,
          "com/supermartijn642/durabilitytooltip/TooltipColorStyle#ordinal()I": 1,
          "net/fabricmc/fabric/api/client/item/v1/ItemTooltipCallback#EVENT": 1
        },
        "runs": [],
        "insns": 113
      },
      "verdict": "no",
      "summary": "no patch sites and no content: nothing to convert"
    },
    {
      "mod_id": "dynamic_fps",
      "name": "Dynamic FPS",
      "version": "3.11.10",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "net/lostluma/dynamic_fps/impl/fabric/compat/FREX"
        },
        {
          "kind": "modmenu",
          "value": "net/lostluma/dynamic_fps/impl/fabric/compat/ModMenu"
        }
      ],
      "mixin_configs": [
        "dynamic_fps.fabric.mixins.json"
      ],
      "depends": [],
      "classes": 5,
      "methods": 23,
      "sites": [
        {
          "mixin": "net/lostluma/dynamic_fps/impl/fabric/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "load",
          "kind": "inject",
          "method": "load",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#load HEAD"
        }
      ],
      "listening": 1,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/Options#load @HEAD": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 5,
        "features": {
          "events": 1,
          "mixin": 1
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 5,
        "methods": 11,
        "tried": 11,
        "completed": 4,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/google/common/collect/Lists#newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientTickEvents#START_CLIENT_TICK": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 4
        },
        "runs": [
          {
            "class": "net/lostluma/dynamic_fps/impl/fabric/compat/FREX",
            "method": "isFlawlessFramesActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/lostluma/dynamic_fps/impl/fabric/service/FabricModCompat",
            "method": "isDisabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/lostluma/dynamic_fps/impl/fabric/service/FabricModCompat",
            "method": "disableOverlayOptimization",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 57
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "dynamiccrosshair",
      "name": "Dynamic Crosshair",
      "version": "9.15",
      "license": "LGPL-3.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "autohud",
          "value": "mod/crend/dynamiccrosshair/compat/AutoHudCompat"
        },
        {
          "kind": "client",
          "value": "mod/crend/dynamiccrosshair/DynamicCrosshairMod"
        },
        {
          "kind": "modmenu",
          "value": "mod/crend/dynamiccrosshair/compat/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "dynamiccrosshair.mixins.json",
        "dynamiccrosshair.compat.mixins.json"
      ],
      "depends": [],
      "classes": 144,
      "methods": 617,
      "sites": [
        {
          "mixin": "mod/crend/dynamiccrosshair/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "dynamiccrosshair$drawCrosshair",
          "kind": "wrap-operation",
          "method": "extractCrosshair",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blitSprite(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 0,
      "accessors": 2,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "ClientLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents$ClientStarted",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ContainerItemContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FluidStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Storage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "StorageUtil",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Transaction",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 144,
        "features": {
          "events": 1,
          "mixin": 84
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 144,
        "methods": 282,
        "tried": 282,
        "completed": 80,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lmod/crend/dynamiccrosshair/component/CrosshairVariant;#clone()Ljava/lang/Object;": 1,
          "[Lmod/crend/dynamiccrosshair/component/ModifierHit;#clone()Ljava/lang/Object;": 1,
          "[Lmod/crend/dynamiccrosshair/config/BlockCrosshairPolicy;#clone()Ljava/lang/Object;": 1,
          "[Lmod/crend/dynamiccrosshair/config/CrosshairPolicy;#clone()Ljava/lang/Object;": 1,
          "[Lmod/crend/dynamiccrosshair/config/UsableCrosshairPolicy;#clone()Ljava/lang/Object;": 1,
          "com/google/gson/JsonObject#has(Ljava/lang/String;)Z": 1,
          "com/llamalad7/mixinextras/MixinExtrasBootstrap#init()V": 1,
          "dev/isxander/yacl3/api/Option#pendingValue()Ljava/lang/Object;": 3,
          "dev/isxander/yacl3/gui/AbstractWidget#<init>(Ldev/isxander/yacl3/api/utils/Dimension;)V": 1,
          "dev/isxander/yacl3/gui/AbstractWidget#isMouseOver(DD)Z": 1,
          "dev/isxander/yacl3/gui/YACLScreen#init()V": 1,
          "dev/isxander/yacl3/gui/YACLScreen#onClose()V": 1,
          "dev/isxander/yacl3/gui/YACLScreen#tick()V": 1,
          "dev/isxander/yacl3/gui/controllers/ControllerWidget#getControlWidth()I": 1,
          "java/nio/file/Path#toFile()Ljava/io/File;": 1,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#of()Ljava/util/List;": 1,
          "mod/crend/dynamiccrosshair/compat/AutoHudCompat$DynamicCrosshairElement#centeredX()I": 1,
          "mod/crend/dynamiccrosshair/compat/AutoHudCompat$DynamicCrosshairElement#centeredY()I": 1,
          "mod/crend/dynamiccrosshair/component/CrosshairVariant#ordinal()I": 1,
          "mod/crend/dynamiccrosshair/config/BlockCrosshairPolicy#name()Ljava/lang/String;": 1,
          "mod/crend/dynamiccrosshair/config/CrosshairPolicy#name()Ljava/lang/String;": 1,
          "mod/crend/dynamiccrosshair/config/UsableCrosshairPolicy#name()Ljava/lang/String;": 1,
          "mod/crend/dynamiccrosshair/config/gui/CrosshairButton#isMouseOver(DD)Z": 1,
          "mod/crend/dynamiccrosshair/config/gui/CrosshairStyleControllerElement#getUnhoveredControlWidth()I": 1,
          "mod/crend/dynamiccrosshair/config/gui/CrosshairStyleControllerElement#playDownSound()V": 1,
          "mod/crend/dynamiccrosshair/config/gui/DrawCrosshairWidget#getDimension()Ldev/isxander/yacl3/api/utils/Dimension;": 2,
          "mod/crend/dynamiccrosshairapi/DynamicCrosshairApi#getModId()Ljava/lang/String;": 1,
          "mod/crend/dynamiccrosshairapi/VersionUtils#getGuiTextured()Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;": 1,
          "mod/crend/dynamiccrosshairapi/crosshair/CrosshairContext#api()Lmod/crend/dynamiccrosshairapi/internal/ContextedApi;": 1,
          "mod/crend/dynamiccrosshairapi/crosshair/CrosshairContext#isWithBlock()Z": 1,
          "mod/crend/dynamiccrosshairapi/crosshair/CrosshairContext#isWithEntity()Z": 3,
          "mod/crend/dynamiccrosshairapi/crosshair/CrosshairPart#ordinal()I": 1,
          "mod/crend/dynamiccrosshairapi/interaction/InteractionType#EMPTY": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairBlockTags#ALWAYS_INTERACTABLE": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairBlockTags#ALWAYS_INTERACTABLE_IN_CREATIVE_MODE": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairBlockTags#INTERACTABLE": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairEntityTags#ALWAYS_INTERACTABLE": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairEntityTags#INTERACTABLE": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#ALWAYS_USABLE": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#ALWAYS_USABLE_ON_BLOCK": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#ALWAYS_USABLE_ON_ENTITY": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#ALWAYS_USABLE_ON_MISS": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#MELEE_WEAPONS": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#RANGED_WEAPONS": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#SHIELDS": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#THROWABLES": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#TOOLS": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairItemTags#USABLE": 1,
          "mod/crend/dynamiccrosshairapi/registry/DynamicCrosshairStyles#DEFAULT": 1,
          "mod/crend/libbamboo/opt/ConfigStore#config()Ljava/lang/Object;": 47,
          "mod/crend/libbamboo/opt/ConfigStore#withYacl()Lmod/crend/libbamboo/opt/WithYacl;": 1,
          "net/fabricmc/fabric/api/transfer/v1/context/ContainerItemContext#forPlayerInteraction(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;)Lnet/fabricmc/fabric/api/transfer/v1/context/ContainerItemContext;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 3,
          "net/minecraft/client/gui/GuiGraphicsExtractor#pose()Lorg/joml/Matrix3x2fStack;": 1,
          "net/minecraft/client/gui/components/events/ContainerEventHandler#getCurrentFocusPath()Lnet/minecraft/client/gui/ComponentPath;": 1,
          "net/minecraft/client/gui/components/events/ContainerEventHandler#nextFocusPath(Lnet/minecraft/client/gui/navigation/FocusNavigationEvent;)Lnet/minecraft/client/gui/ComponentPath;": 1,
          "net/minecraft/client/input/MouseButtonEvent#button()I": 2,
          "net/minecraft/client/input/MouseButtonEvent#x()D": 4,
          "net/minecraft/client/player/LocalPlayer#getActiveItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/client/player/LocalPlayer#getCooldowns()Lnet/minecraft/world/item/ItemCooldowns;": 1,
          "net/minecraft/client/player/LocalPlayer#getEyePosition(F)Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/client/player/LocalPlayer#getMainHandItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/client/player/LocalPlayer#isFallFlying()Z": 1,
          "net/minecraft/client/player/LocalPlayer#isSecondaryUseActive()Z": 1,
          "net/minecraft/client/renderer/texture/TextureManager#getTexture(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/texture/AbstractTexture;": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ENTITY_TYPE": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 1,
          "net/minecraft/network/chat/Component#empty()Lnet/minecraft/network/chat/MutableComponent;": 2,
          "net/minecraft/world/InteractionHand#MAIN_HAND": 4,
          "net/minecraft/world/InteractionHand#OFF_HAND": 2,
          "net/minecraft/world/InteractionHand#ordinal()I": 4,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 1,
          "net/minecraft/world/level/ClipContext$Fluid#ANY": 1,
          "net/minecraft/world/phys/HitResult#getType()Lnet/minecraft/world/phys/HitResult$Type;": 2,
          "new mod/crend/autohud/hud/state/BooleanElementState": 3,
          "new mod/crend/dynamiccrosshairapi/crosshair/Crosshair": 2
        },
        "runs": [
          {
            "class": "mod/crend/dynamiccrosshair/config/Config$CrosshairStyleSettings",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/Config$CrosshairStyleSettings",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/impl/VanillaApiImpl",
            "method": "forceCheck",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/gui/CrosshairStyleController$Factory",
            "method": "create",
            "desc": "(Ldev/isxander/yacl3/api/Option;)Ldev/isxander/yacl3/api/Controller;",
            "value": "obj#45"
          },
          {
            "class": "mod/crend/dynamiccrosshair/mixin/block/RedstoneWireBlockMixin",
            "method": "isDot",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/mixin/block/RedstoneWireBlockMixin",
            "method": "isCross",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/component/State$HitStateFluid",
            "method": "isChanged",
            "desc": "(Lmod/crend/dynamiccrosshair/component/State$HitStateFluid;)Z",
            "value": "1"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/gui/CrosshairButton",
            "method": "isFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/style/BuiltinCrosshairStyle",
            "method": "isCustom",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/mixin/entity/AgeableMobMixin",
            "method": "canUseGoldenDandelion",
            "desc": "(Lnet/minecraft/world/item/ItemStack;ZILnet/minecraft/world/entity/Mob;)Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/compat/AutoHudCompat$DynamicCrosshairElement",
            "method": "originalWidth",
            "desc": "()I",
            "value": "16"
          },
          {
            "class": "mod/crend/dynamiccrosshair/compat/AutoHudCompat$DynamicCrosshairElement",
            "method": "originalHeight",
            "desc": "()I",
            "value": "16"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/gui/SelectCrosshairElement",
            "method": "canReset",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/gui/SelectCrosshairElement",
            "method": "mouseDragged",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/gui/SelectCrosshairElement",
            "method": "isDragging",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/gui/PreviewCrosshairWidget",
            "method": "isFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/impl/CrosshairContextImpl",
            "method": "isWithBlock",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/impl/CrosshairContextImpl",
            "method": "isWithEntity",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/impl/CrosshairContextImpl",
            "method": "canPlaceItemAsBlock",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/impl/CrosshairContextImpl",
            "method": "canUseWeaponAsTool",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/gui/DrawCrosshairWidget",
            "method": "isFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/component/CrosshairHandler",
            "method": "shouldShowCrosshair",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/mixin/entity/SulfurCubeMixin",
            "method": "isSwallowableItem",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/gui/SelectCrosshairController",
            "method": "isInEditMode",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/gui/CrosshairStyleControllerElement",
            "method": "getDecorationPadding",
            "desc": "()I",
            "value": "15"
          },
          {
            "class": "mod/crend/dynamiccrosshair/impl/ApiList",
            "method": "add",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Lmod/crend/dynamiccrosshair/impl/ApiList;",
            "value": "obj#272"
          },
          {
            "class": "mod/crend/dynamiccrosshair/impl/ApiList",
            "method": "add",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Lmod/crend/dynamiccrosshair/impl/ApiList;",
            "value": "obj#274"
          },
          {
            "class": "mod/crend/dynamiccrosshair/impl/ApiList",
            "method": "add",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Lmod/crend/dynamiccrosshair/impl/ApiList;",
            "value": "obj#276"
          },
          {
            "class": "mod/crend/dynamiccrosshair/impl/ApiList",
            "method": "get",
            "desc": "()Ljava/util/List;",
            "value": "obj#279"
          },
          {
            "class": "mod/crend/dynamiccrosshair/style/CrosshairStyleManager",
            "method": "has",
            "desc": "(Lnet/minecraft/resources/Identifier;)Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/style/CrosshairStyleManager",
            "method": "isCustomStyle",
            "desc": "(Lnet/minecraft/resources/Identifier;)Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/style/CrosshairStyleManager",
            "method": "getCustomStyles",
            "desc": "()Ljava/util/Collection;",
            "value": "obj#294"
          },
          {
            "class": "mod/crend/dynamiccrosshair/config/Config$BlockCrosshairActivePredicate",
            "method": "test",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "mod/crend/dynamiccrosshair/style/CrosshairStyle",
            "method": "color",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/style/CrosshairStyle",
            "method": "enableBlend",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/style/CrosshairStyle",
            "method": "coalesce",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "mod/crend/dynamiccrosshair/style/CustomCrosshairStyle",
            "method": "isCustom",
            "desc": "()Z",
            "value": "1"
          }
        ],
        "insns": 3301
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "e4mc",
      "name": "e4mc",
      "version": "6.2.3+modern",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "link/e4mc/fabric/E4mcClientFabric"
        }
      ],
      "mixin_configs": [
        "e4mc.mixins.json"
      ],
      "depends": [],
      "classes": 217,
      "methods": 1948,
      "sites": [
        {
          "mixin": "link/e4mc/mixin/BanListCommandsMixin",
          "targets": [
            "net/minecraft/server/commands/BanListCommands"
          ],
          "handler": "allowOwner",
          "kind": "redirect",
          "method": "register",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;requires(Ljava/util/function/Predicate;)Lcom/mojang/brigadier/builder/ArgumentBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/BanPlayerCommandsMixin",
          "targets": [
            "net/minecraft/server/commands/BanPlayerCommands"
          ],
          "handler": "allowOwner",
          "kind": "redirect",
          "method": "register",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;requires(Ljava/util/function/Predicate;)Lcom/mojang/brigadier/builder/ArgumentBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ClientHandshakePacketListenerImplMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl"
          ],
          "handler": "publicKey",
          "kind": "redirect",
          "method": "handleHello",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/login/ClientboundHelloPacket;getPublicKey()Ljava/security/PublicKey;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ClientHandshakePacketListenerImplMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl"
          ],
          "handler": "digestData",
          "kind": "redirect",
          "method": "handleHello",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Crypt;digestData(Ljava/lang/String;Ljava/security/PublicKey;Ljavax/crypto/SecretKey;)[B",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "hijackStart",
          "kind": "inject",
          "method": "/^",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/Connection#/^ HEAD"
        },
        {
          "mixin": "link/e4mc/mixin/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "hijackStartAlt",
          "kind": "inject",
          "method": "name=/^",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/Connection#name=/^ HEAD"
        },
        {
          "mixin": "link/e4mc/mixin/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "hijackChannel",
          "kind": "modify-arg",
          "method": "/^",
          "at": "INVOKE",
          "at_target": "Lio/netty/bootstrap/Bootstrap;channel(Ljava/lang/Class;)Lio/netty/bootstrap/AbstractBootstrap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "link/e4mc/mixin/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "hijackGroup",
          "kind": "modify-arg",
          "method": "/^",
          "at": "INVOKE",
          "at_target": "Lio/netty/bootstrap/Bootstrap;group(Lio/netty/channel/EventLoopGroup;)Lio/netty/bootstrap/AbstractBootstrap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "link/e4mc/mixin/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "hijackConnect",
          "kind": "wrap-operation",
          "method": "/^",
          "at": "INVOKE",
          "at_target": "Lio/netty/bootstrap/Bootstrap;connect(Ljava/net/InetAddress;I)Lio/netty/channel/ChannelFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "link/e4mc/mixin/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "killDoubleEncryption",
          "kind": "inject",
          "method": "setEncryptionKey",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/network/Connection;channel:Lio/netty/channel/Channel;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/Connection#setEncryptionKey FIELD"
        },
        {
          "mixin": "link/e4mc/mixin/DirsUtilMixin",
          "targets": [
            "link/e4mc/shadow/dirs/Util"
          ],
          "handler": "useJna",
          "kind": "inject",
          "method": "getWinDirs",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at link/e4mc/shadow/dirs/Util#getWinDirs HEAD"
        },
        {
          "mixin": "link/e4mc/mixin/PardonCommandMixin",
          "targets": [
            "net/minecraft/server/commands/PardonCommand"
          ],
          "handler": "allowOwner",
          "kind": "redirect",
          "method": "register",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;requires(Ljava/util/function/Predicate;)Lcom/mojang/brigadier/builder/ArgumentBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "injectListLoads",
          "kind": "inject",
          "method": "/^<init>$/",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#/^<init>$/ TAIL"
        },
        {
          "mixin": "link/e4mc/mixin/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "allowOwnerLogin",
          "kind": "inject",
          "method": "/^",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#/^ HEAD"
        },
        {
          "mixin": "link/e4mc/mixin/ServerConnectionListenerMixin",
          "targets": [
            "net/minecraft/server/network/ServerConnectionListener"
          ],
          "handler": "interceptHandler",
          "kind": "modify-arg",
          "method": "startTcpServerListener",
          "at": "INVOKE",
          "at_target": "Lio/netty/bootstrap/ServerBootstrap;childHandler(Lio/netty/channel/ChannelHandler;)Lio/netty/bootstrap/ServerBootstrap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerConnectionListenerMixin",
          "targets": [
            "net/minecraft/server/network/ServerConnectionListener"
          ],
          "handler": "interceptGroup",
          "kind": "modify-arg",
          "method": "startTcpServerListener",
          "at": "INVOKE",
          "at_target": "Lio/netty/bootstrap/ServerBootstrap;group(Lio/netty/channel/EventLoopGroup;)Lio/netty/bootstrap/ServerBootstrap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerConnectionListenerMixin",
          "targets": [
            "net/minecraft/server/network/ServerConnectionListener"
          ],
          "handler": "interceptGroup",
          "kind": "inject",
          "method": "startTcpServerListener",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerConnectionListener#startTcpServerListener TAIL"
        },
        {
          "mixin": "link/e4mc/mixin/ServerConnectionListenerMixin",
          "targets": [
            "net/minecraft/server/network/ServerConnectionListener"
          ],
          "handler": "interceptStop",
          "kind": "inject",
          "method": "stop",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerConnectionListener#stop HEAD"
        },
        {
          "mixin": "link/e4mc/mixin/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "killDoubleEncryption",
          "kind": "redirect",
          "method": "handleHello",
          "at": "INVOKE",
          "at_target": "Ljava/security/PublicKey;getEncoded()[B",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "isChallengeValid",
          "kind": "redirect",
          "method": "handleKey",
          "at": "INVOKE",
          "at_target": "*([BLjava/security/PrivateKey;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "isNonceEqual",
          "kind": "redirect",
          "method": "handleKey",
          "at": "INVOKE",
          "at_target": "Ljava/util/Arrays;equals([B[B)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "patchGetNonce",
          "kind": "modify-arg",
          "method": "handleKey",
          "at": "INVOKE",
          "at_target": "*(Ljava/security/PrivateKey;)[B",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "getSecretKey",
          "kind": "redirect",
          "method": "handleKey",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/login/ServerboundKeyPacket;getSecretKey(Ljava/security/PrivateKey;)Ljavax/crypto/SecretKey;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "getCipher",
          "kind": "redirect",
          "method": "handleKey",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Crypt;getCipher(ILjava/security/Key;)Ljavax/crypto/Cipher;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "digestData",
          "kind": "redirect",
          "method": "handleKey",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Crypt;digestData(Ljava/lang/String;Ljava/security/PublicKey;Ljavax/crypto/SecretKey;)[B",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerNameResolverMixin",
          "targets": [
            "net/minecraft/client/multiplayer/resolver/ServerNameResolver"
          ],
          "handler": "addDialtoneRedirectHandler",
          "kind": "modify-arg",
          "method": "<clinit>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/resolver/ServerNameResolver;<init>(Lnet/minecraft/client/multiplayer/resolver/ServerAddressResolver;Lnet/minecraft/client/multiplayer/resolver/ServerRedirectHandler;Lnet/minecraft/client/multiplayer/resolver/AddressCheck;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerNameResolverMixin",
          "targets": [
            "net/minecraft/client/multiplayer/resolver/ServerNameResolver"
          ],
          "handler": "resolveBogus",
          "kind": "redirect",
          "method": "resolveAddress",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/resolver/ServerAddressResolver;resolve(Lnet/minecraft/client/multiplayer/resolver/ServerAddress;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerboundKeyPacketMixin",
          "targets": [
            "net/minecraft/network/protocol/login/ServerboundKeyPacket"
          ],
          "handler": "encryptUsingKey",
          "kind": "redirect",
          "method": "/^<init>$/",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Crypt;encryptUsingKey(Ljava/security/Key;[B)[B",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "link/e4mc/mixin/ServerboundKeyPacketMixin",
          "targets": [
            "net/minecraft/network/protocol/login/ServerboundKeyPacket"
          ],
          "handler": "patchGetNonce",
          "kind": "inject",
          "method": "*",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/protocol/login/ServerboundKeyPacket#* HEAD"
        },
        {
          "mixin": "link/e4mc/mixin/WhitelistCommandMixin",
          "targets": [
            "net/minecraft/server/commands/WhitelistCommand"
          ],
          "handler": "allowOwner",
          "kind": "redirect",
          "method": "register",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;requires(Ljava/util/function/Predicate;)Lcom/mojang/brigadier/builder/ArgumentBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        }
      ],
      "listening": 8,
      "accessors": 1,
      "hooks": {},
      "wanted": {
        "link/e4mc/shadow/dirs/Util#getWinDirs @HEAD": 1,
        "net/minecraft/network/Connection#/^ @HEAD": 1,
        "net/minecraft/network/Connection#name=/^ @HEAD": 1,
        "net/minecraft/network/protocol/login/ServerboundKeyPacket#* @HEAD": 1,
        "net/minecraft/server/network/ServerConnectionListener#startTcpServerListener @TAIL": 1,
        "net/minecraft/server/network/ServerConnectionListener#stop @HEAD": 1,
        "net/minecraft/server/players/PlayerList#/^ @HEAD": 1,
        "net/minecraft/server/players/PlayerList#/^<init>$/ @TAIL": 1
      },
      "wanted_calls": {
        "com/mojang/brigadier/builder/LiteralArgumentBuilder#requires @INVOKE (redirect)": 4,
        "io/netty/bootstrap/Bootstrap#channel @INVOKE (modify-arg)": 1,
        "io/netty/bootstrap/Bootstrap#connect @INVOKE (wrap-operation)": 1,
        "io/netty/bootstrap/Bootstrap#group @INVOKE (modify-arg)": 1,
        "io/netty/bootstrap/ServerBootstrap#childHandler @INVOKE (modify-arg)": 1,
        "io/netty/bootstrap/ServerBootstrap#group @INVOKE (modify-arg)": 1,
        "java/security/PublicKey#getEncoded @INVOKE (redirect)": 1,
        "java/util/Arrays#equals @INVOKE (redirect)": 1,
        "net/minecraft/client/multiplayer/resolver/ServerAddressResolver#resolve @INVOKE (redirect)": 1,
        "net/minecraft/client/multiplayer/resolver/ServerNameResolver#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/network/Connection#setEncryptionKey @FIELD": 1,
        "net/minecraft/network/protocol/login/ClientboundHelloPacket#getPublicKey @INVOKE (redirect)": 1,
        "net/minecraft/network/protocol/login/ServerboundKeyPacket#getSecretKey @INVOKE (redirect)": 1,
        "net/minecraft/server/network/ServerLoginPacketListenerImpl#handleKey @INVOKE (modify-arg)": 1,
        "net/minecraft/server/network/ServerLoginPacketListenerImpl#handleKey @INVOKE (redirect)": 1,
        "net/minecraft/util/Crypt#digestData @INVOKE (redirect)": 2,
        "net/minecraft/util/Crypt#encryptUsingKey @INVOKE (redirect)": 1,
        "net/minecraft/util/Crypt#getCipher @INVOKE (redirect)": 1
      },
      "api": [
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModOrigin",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 217,
        "features": {
          "command": 1,
          "events": 1,
          "mixin": 14
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 217,
        "methods": 1172,
        "tried": 600,
        "completed": 172,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[B#clone()Ljava/lang/Object;": 3,
          "[Lio/netty/incubator/codec/quic/QuicStreamType;#clone()Ljava/lang/Object;": 1,
          "[Lio/netty/incubator/codec/quic/QuicheError;#clone()Ljava/lang/Object;": 1,
          "[Lio/netty/incubator/codec/quic/QuicheQuicChannel$ChannelState;#clone()Ljava/lang/Object;": 1,
          "[Llink/e4mc/QuiclimeSession$State;#clone()Ljava/lang/Object;": 1,
          "io/netty/buffer/ByteBuf#hasMemoryAddress()Z": 1,
          "io/netty/buffer/ByteBuf#nioBufferCount()I": 1,
          "io/netty/buffer/ByteBufAllocator#buffer()Lio/netty/buffer/ByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#buffer(I)Lio/netty/buffer/ByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#buffer(II)Lio/netty/buffer/ByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#calculateNewCapacity(II)I": 1,
          "io/netty/buffer/ByteBufAllocator#compositeBuffer()Lio/netty/buffer/CompositeByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#compositeBuffer(I)Lio/netty/buffer/CompositeByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#compositeDirectBuffer()Lio/netty/buffer/CompositeByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#compositeDirectBuffer(I)Lio/netty/buffer/CompositeByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#compositeHeapBuffer()Lio/netty/buffer/CompositeByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#compositeHeapBuffer(I)Lio/netty/buffer/CompositeByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#directBuffer()Lio/netty/buffer/ByteBuf;": 2,
          "io/netty/buffer/ByteBufAllocator#directBuffer(I)Lio/netty/buffer/ByteBuf;": 2,
          "io/netty/buffer/ByteBufAllocator#directBuffer(II)Lio/netty/buffer/ByteBuf;": 2,
          "io/netty/buffer/ByteBufAllocator#heapBuffer()Lio/netty/buffer/ByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#heapBuffer(I)Lio/netty/buffer/ByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#heapBuffer(II)Lio/netty/buffer/ByteBuf;": 1,
          "io/netty/buffer/ByteBufAllocator#isDirectBufferPooled()Z": 1,
          "io/netty/buffer/Unpooled#EMPTY_BUFFER": 1,
          "io/netty/buffer/Unpooled#directBuffer(I)Lio/netty/buffer/ByteBuf;": 2,
          "io/netty/channel/AbstractChannel#flush()Lio/netty/channel/Channel;": 3,
          "io/netty/channel/AbstractChannel#read()Lio/netty/channel/Channel;": 3,
          "io/netty/channel/AbstractChannel#toString()Ljava/lang/String;": 1,
          "io/netty/channel/AbstractChannel$AbstractUnsafe#<init>(Lio/netty/channel/AbstractChannel;)V": 2,
          "io/netty/channel/Channel#config()Lio/netty/channel/ChannelConfig;": 1,
          "io/netty/channel/Channel#id()Lio/netty/channel/ChannelId;": 2,
          "io/netty/channel/ChannelHandlerContext#channel()Lio/netty/channel/Channel;": 1,
          "io/netty/channel/ChannelHandlerContext#connect(Ljava/net/SocketAddress;Ljava/net/SocketAddress;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;": 1,
          "io/netty/channel/ChannelHandlerContext#flush()Lio/netty/channel/ChannelHandlerContext;": 1,
          "io/netty/channel/ChannelId#asShortText()Ljava/lang/String;": 1,
          "io/netty/channel/ChannelPipeline#flush()Lio/netty/channel/ChannelPipeline;": 3,
          "io/netty/channel/ChannelPipeline#read()Lio/netty/channel/ChannelOutboundInvoker;": 3,
          "io/netty/channel/ChannelPromise#setUncancellable()Z": 1,
          "io/netty/channel/DefaultChannelConfig#getOptions()Ljava/util/Map;": 1,
          "io/netty/channel/DefaultChannelConfig#setAllocator(Lio/netty/buffer/ByteBufAllocator;)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setAutoClose(Z)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setAutoRead(Z)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setConnectTimeoutMillis(I)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setMaxMessagesPerRead(I)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setMessageSizeEstimator(Lio/netty/channel/MessageSizeEstimator;)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setRecvByteBufAllocator(Lio/netty/channel/RecvByteBufAllocator;)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setWriteBufferHighWaterMark(I)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setWriteBufferLowWaterMark(I)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setWriteBufferWaterMark(Lio/netty/channel/WriteBufferWaterMark;)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelConfig#setWriteSpinCount(I)Lio/netty/channel/ChannelConfig;": 2,
          "io/netty/channel/DefaultChannelPipeline#<init>(Lio/netty/channel/Channel;)V": 1,
          "io/netty/channel/DefaultChannelPipeline#onUnhandledInboundMessage(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V": 1,
          "io/netty/channel/EventLoop#inEventLoop()Z": 1,
          "io/netty/channel/MessageSizeEstimator$Handle#size(Ljava/lang/Object;)I": 1,
          "io/netty/channel/RecvByteBufAllocator$Handle#readComplete()V": 1,
          "io/netty/channel/socket/DatagramPacket#content()Ljava/lang/Object;": 1,
          "io/netty/handler/ssl/ClientAuth#NONE": 6,
          "io/netty/handler/ssl/SslContext#toX509Certificates(Ljava/io/InputStream;)[Ljava/security/cert/X509Certificate;": 2,
          "io/netty/incubator/codec/quic/QuicSslContext#isServer()Z": 1,
          "io/netty/incubator/codec/quic/QuicStreamChannel#pipeline()Lio/netty/channel/ChannelPipeline;": 2,
          "io/netty/incubator/codec/quic/QuicStreamChannelConfig#getAllocator()Lio/netty/buffer/ByteBufAllocator;": 1,
          "io/netty/incubator/codec/quic/QuicStreamType#ordinal()I": 1,
          "io/netty/incubator/codec/quic/QuicheQuicChannel#eventLoop()Lio/netty/channel/EventLoop;": 19,
          "io/netty/incubator/codec/quic/QuicheQuicChannel#parent()Lio/netty/channel/Channel;": 4,
          "io/netty/incubator/codec/quic/QuicheQuicChannel#pipeline()Lio/netty/channel/ChannelPipeline;": 1,
          "io/netty/incubator/codec/quic/QuicheQuicChannel#unsafe()Lio/netty/channel/Channel$Unsafe;": 2,
          "io/netty/incubator/codec/quic/QuicheQuicSslContext#buildTrustManagerFactory([Ljava/security/cert/X509Certificate;Ljavax/net/ssl/TrustManagerFactory;Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;": 1,
          "io/netty/incubator/codec/quic/QuicheQuicSslContext#toX509Certificates(Ljava/io/File;)[Ljava/security/cert/X509Certificate;": 2,
          "io/netty/util/ReferenceCountUtil#touch(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "io/netty/util/collection/LongObjectMap#isEmpty()Z": 1,
          "io/netty/util/collection/LongObjectMap#remove(J)Ljava/lang/Object;": 1,
          "io/netty/util/internal/EmptyArrays#EMPTY_BYTES": 2,
          "io/netty/util/internal/EmptyArrays#EMPTY_STRINGS": 1,
          "io/netty/util/internal/ObjectUtil#checkInRange(IIILjava/lang/String;)I": 1,
          "io/netty/util/internal/ObjectUtil#checkNotNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;": 9,
          "io/netty/util/internal/ObjectUtil#checkPositive(ILjava/lang/String;)I": 1,
          "io/netty/util/internal/ObjectUtil#checkPositive(JLjava/lang/String;)J": 1,
          "io/netty/util/internal/ObjectUtil#checkPositiveOrZero(JLjava/lang/String;)J": 11,
          "io/netty/util/internal/StringUtil#simpleClassName(Ljava/lang/Object;)Ljava/lang/String;": 6,
          "io/netty/util/internal/logging/InternalLogger#debug(Ljava/lang/String;)V": 1,
          "java/io/File#list()[Ljava/lang/String;": 1,
          "java/io/File#toPath()Ljava/nio/file/Path;": 1,
          "java/lang/ProcessBuilder#start()Ljava/lang/Process;": 1,
          "java/lang/Runnable#run()V": 1,
          "java/lang/String#codePointCount(II)I": 1,
          "java/lang/String#format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 1,
          "java/lang/System#getenv(Ljava/lang/String;)Ljava/lang/String;": 2,
          "java/net/InetSocketAddress#getAddress()Ljava/net/InetAddress;": 2,
          "java/nio/ByteBuffer#position()I": 3,
          "java/nio/charset/Charset#forName(Ljava/lang/String;)Ljava/nio/charset/Charset;": 1,
          "java/nio/charset/StandardCharsets#UTF_8": 1,
          "java/security/KeyStore#getDefaultType()Ljava/lang/String;": 1,
          "java/util/Arrays#hashCode([B)I": 1,
          "java/util/Arrays#toString([B)Ljava/lang/String;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 2,
          "java/util/LinkedHashMap#entrySet()Ljava/util/Set;": 1,
          "java/util/Queue#poll()Ljava/lang/Object;": 2,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#remove(Ljava/lang/Object;)Z": 1,
          "java/util/Set#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 3,
          "java/util/concurrent/CompletableFuture#complete(Ljava/lang/Object;)Z": 1,
          "java/util/concurrent/CompletableFuture#completeExceptionally(Ljava/lang/Throwable;)Z": 1,
          "java/util/concurrent/ConcurrentMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/concurrent/ConcurrentMap#put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/concurrent/ConcurrentMap#remove(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/concurrent/atomic/AtomicBoolean#compareAndExchange(ZZ)Z": 1,
          "javax/net/ssl/KeyManagerFactory#getKeyManagers()[Ljavax/net/ssl/KeyManager;": 1,
          "javax/net/ssl/KeyManagerFactory#init(Ljava/security/KeyStore;[C)V": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 3,
          "net/minecraft/network/Connection#getRemoteAddress()Ljava/net/SocketAddress;": 9,
          "new io/netty/channel/socket/DatagramPacket": 1,
          "new io/netty/channel/unix/SegmentedDatagramPacket": 1,
          "new io/netty/handler/ssl/util/KeyManagerFactoryWrapper": 1,
          "new io/netty/handler/ssl/util/TrustManagerFactoryWrapper": 1,
          "new javax/crypto/spec/SecretKeySpec": 2,
          "new javax/net/ssl/SSLPeerUnverifiedException": 3,
          "new javax/net/ssl/SSLSessionBindingEvent": 1,
          "org/slf4j/Logger#info(Ljava/lang/String;)V": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#setReturnValue(Ljava/lang/Object;)V": 1
        },
        "runs": [
          {
            "class": "io/netty/incubator/codec/quic/QuicSslContextBuilder",
            "method": "option",
            "desc": "(Lio/netty/handler/ssl/SslContextOption;Ljava/lang/Object;)Lio/netty/incubator/codec/quic/QuicSslContextBuilder;",
            "value": "obj#20"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicSslContextBuilder",
            "method": "earlyData",
            "desc": "(Z)Lio/netty/incubator/codec/quic/QuicSslContextBuilder;",
            "value": "obj#21"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicSslContextBuilder",
            "method": "keylog",
            "desc": "(Z)Lio/netty/incubator/codec/quic/QuicSslContextBuilder;",
            "value": "obj#22"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicSslContextBuilder",
            "method": "keylog",
            "desc": "(Lio/netty/incubator/codec/quic/BoringSSLKeylog;)Lio/netty/incubator/codec/quic/QuicSslContextBuilder;",
            "value": "obj#23"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicSslContextBuilder",
            "method": "trustManager",
            "desc": "(Ljavax/net/ssl/TrustManagerFactory;)Lio/netty/incubator/codec/quic/QuicSslContextBuilder;",
            "value": "obj#26"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicSslContextBuilder",
            "method": "keyManager",
            "desc": "(Ljavax/net/ssl/KeyManagerFactory;Ljava/lang/String;)Lio/netty/incubator/codec/quic/QuicSslContextBuilder;",
            "value": "obj#30"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicSslContextBuilder",
            "method": "applicationProtocols",
            "desc": "([Ljava/lang/String;)Lio/netty/incubator/codec/quic/QuicSslContextBuilder;",
            "value": "obj#32"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicSslContextBuilder",
            "method": "sessionCacheSize",
            "desc": "(J)Lio/netty/incubator/codec/quic/QuicSslContextBuilder;",
            "value": "obj#33"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicSslContextBuilder",
            "method": "sessionTimeout",
            "desc": "(J)Lio/netty/incubator/codec/quic/QuicSslContextBuilder;",
            "value": "obj#34"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheError",
            "method": "code",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicPathEvent$FailedValidation",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"QuicPathEvent.FailedValidation{local=null, remote=null}\""
          },
          {
            "class": "link/e4mc/dialtone/DialtoneChannel",
            "method": "isCompatible",
            "desc": "(Lio/netty/channel/EventLoop;)Z",
            "value": "1"
          },
          {
            "class": "link/e4mc/dialtone/DialtoneChannel",
            "method": "isOpen",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "link/e4mc/dialtone/DialtoneChannel",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicCodec",
            "method": "isSharable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/Quic",
            "method": "isAvailable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/SegmentedDatagramPacketAllocator",
            "method": "maxNumSegments",
            "desc": "()I",
            "value": "10"
          },
          {
            "class": "io/netty/incubator/codec/quic/SslSessionTicketKey",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicCodecBuilder",
            "method": "self",
            "desc": "()Lio/netty/incubator/codec/quic/QuicCodecBuilder;",
            "value": "obj#188"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicCodecBuilder",
            "method": "congestionControlAlgorithm",
            "desc": "(Lio/netty/incubator/codec/quic/QuicCongestionControlAlgorithm;)Lio/netty/incubator/codec/quic/QuicCodecBuilder;",
            "value": "obj#190"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicCodecBuilder",
            "method": "initialCongestionWindowPackets",
            "desc": "(I)Lio/netty/incubator/codec/quic/QuicCodecBuilder;",
            "value": "obj#191"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicCodecBuilder",
            "method": "grease",
            "desc": "(Z)Lio/netty/incubator/codec/quic/QuicCodecBuilder;",
            "value": "obj#192"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicCodecBuilder",
            "method": "activeMigration",
            "desc": "(Z)Lio/netty/incubator/codec/quic/QuicCodecBuilder;",
            "value": "obj#204"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicCodecBuilder",
            "method": "hystart",
            "desc": "(Z)Lio/netty/incubator/codec/quic/QuicCodecBuilder;",
            "value": "obj#205"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicCodecBuilder",
            "method": "version",
            "desc": "(I)Lio/netty/incubator/codec/quic/QuicCodecBuilder;",
            "value": "obj#207"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicCodecBuilder",
            "method": "sslEngineProvider",
            "desc": "(Ljava/util/function/Function;)Lio/netty/incubator/codec/quic/QuicCodecBuilder;",
            "value": "obj#210"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicCodecBuilder",
            "method": "sslTaskExecutor",
            "desc": "(Ljava/util/concurrent/Executor;)Lio/netty/incubator/codec/quic/QuicCodecBuilder;",
            "value": "obj#211"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "isTimedOut",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "tryFailConnectPromise",
            "desc": "(Ljava/lang/Exception;)Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "markInFireChannelReadCompleteQueue",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "isOpen",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "freeIfClosed",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "isStreamLocalCreated",
            "desc": "(J)Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "streamType",
            "desc": "(J)Lio/netty/incubator/codec/quic/QuicStreamType;",
            "value": "obj#139"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "runTasksDirectly",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicChannel",
            "method": "isSendWindowUsed",
            "desc": "(II)Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/NoQuicTokenHandler",
            "method": "writeToken",
            "desc": "(Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;Ljava/net/InetSocketAddress;)Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/NoQuicTokenHandler",
            "method": "validateToken",
            "desc": "(Lio/netty/buffer/ByteBuf;Ljava/net/InetSocketAddress;)I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/NoQuicTokenHandler",
            "method": "maxTokenLength",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/EpollQuicUtils$EpollSegmentedDatagramPacketAllocator",
            "method": "maxNumSegments",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicTransportError",
            "method": "isCryptoError",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicTransportError",
            "method": "code",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicTransportError",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicTransportError",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicTransportError",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"QuicTransportError{code=0, name='null'}\""
          },
          {
            "class": "link/e4mc/mixin/ServerboundKeyPacketMixin",
            "method": "encryptUsingKey",
            "desc": "(Ljava/security/Key;[B)[B",
            "value": "obj#673"
          },
          {
            "class": "link/e4mc/shadow/dirs/ProjectDirectories",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"ProjectDirectories (null):\\n  projectPath   = 'null'\\n  cacheDir      = 'null'\\n  configDir     = 'null'\\n  dataDir       = 'null'\\n  dataLocalDir  = 'null'\\n  preferenceDir = 'null'\\n  runtimeDir    = 'null'\\n\""
          },
          {
            "class": "link/e4mc/shadow/dirs/ProjectDirectories",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "link/e4mc/shadow/dirs/ProjectDirectories",
            "method": "hashCode",
            "desc": "()I",
            "value": "-554351545"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicPathEvent$New",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"QuicPathEvent.New{local=null, remote=null}\""
          },
          {
            "class": "io/netty/incubator/codec/quic/HmacSignQuicConnectionIdGenerator",
            "method": "isIdempotent",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicSslEngine$QuicheQuicSslSession",
            "method": "isEmpty",
            "desc": "([Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicSslEngine$QuicheQuicSslSession",
            "method": "isEmpty",
            "desc": "([B)Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicSslEngine$QuicheQuicSslSession",
            "method": "getCreationTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicSslEngine$QuicheQuicSslSession",
            "method": "getLastAccessedTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicSslEngine$QuicheQuicSslSession",
            "method": "isValid",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicSslEngine$QuicheQuicSslSession",
            "method": "getPacketBufferSize",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicSslEngine$QuicheQuicSslSession",
            "method": "getApplicationBufferSize",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicSslEngine$QuicheQuicSslSession",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "link/e4mc/shadow/dirs/Util",
            "method": "isNullOrEmpty",
            "desc": "(Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "link/e4mc/shadow/dirs/Util",
            "method": "ensureSingleSlash",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null/null\""
          },
          {
            "class": "link/e4mc/shadow/dirs/Util",
            "method": "macOSApplicationPath",
            "desc": "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "link/e4mc/shadow/dirs/Util",
            "method": "windowsApplicationPath",
            "desc": "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "link/e4mc/shadow/dirs/Util",
            "method": "stripQualification",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "link/e4mc/shadow/dirs/Util",
            "method": "stringLength",
            "desc": "(Ljava/lang/String;)I",
            "value": "-1"
          },
          {
            "class": "link/e4mc/shadow/dirs/Util",
            "method": "codePointExistsAndNotSpace",
            "desc": "(Ljava/lang/String;II)Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicStreamPriority",
            "method": "urgency",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicStreamPriority",
            "method": "isIncremental",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicStreamPriority",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicStreamPriority",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicStreamPriority",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"QuicStreamPriority{urgency=0, incremental=0}\""
          },
          {
            "class": "link/e4mc/shadow/dirs/UserDirectories",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"UserDirectories (null):\\n  homeDir     = 'null'\\n  audioDir    = 'null'\\n  fontDir     = 'null'\\n  desktopDir  = 'null'\\n  documentDir = 'null'\\n  downloadDir = 'null'\\n  pictureDir  = 'null'\\n  publicDir   = 'null'\\n  templateDir = 'null'\\n  videoDir    = 'null'\\n\""
          },
          {
            "class": "link/e4mc/shadow/dirs/UserDirectories",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "link/e4mc/shadow/dirs/UserDirectories",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicClientSessionCache$SessionHolder",
            "method": "isValid",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicClientSessionCache$SessionHolder",
            "method": "isValid",
            "desc": "(J)Z",
            "value": "1"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicClientSessionCache$SessionHolder",
            "method": "isSingleUse",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "isInputShutdown",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "isOutputShutdown",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "isShutdown",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "isOpen",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "isRegistered",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "isWritable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "bytesBeforeUnwritable",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "bytesBeforeWritable",
            "desc": "()J",
            "value": "8"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicheQuicStreamChannel",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicDatagramExtensionEvent",
            "method": "maxLength",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/netty/incubator/codec/quic/QuicDatagramExtensionEvent",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"QuicDatagramExtensionEvent{maxLength=0}\""
          },
          {
            "class": "link/e4mc/dialtone/DialtoneServerChannel",
            "method": "isCompatible",
            "desc": "(Lio/netty/channel/EventLoop;)Z",
            "value": "1"
          },
          {
            "class": "link/e4mc/dialtone/DialtoneServerChannel",
            "method": "isOpen",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "link/e4mc/dialtone/DialtoneServerChannel",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 11199
      },
      "verdict": "no",
      "summary": "none of its 30 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "easyanvils",
      "name": "Easy Anvils",
      "version": "26.3.1",
      "license": "MPL-2.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "fuzs/easyanvils/fabric/client/EasyAnvilsFabricClient"
        },
        {
          "kind": "main",
          "value": "fuzs/easyanvils/fabric/EasyAnvilsFabric"
        }
      ],
      "mixin_configs": [
        "easyanvils.common.mixins.json",
        "easyanvils.fabric.mixins.json"
      ],
      "depends": [
        "forgeconfigapiport",
        "puzzleslib"
      ],
      "classes": 49,
      "methods": 252,
      "sites": [
        {
          "mixin": "fuzs/easyanvils/common/mixin/AnvilBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/AnvilBlock"
          ],
          "handler": "damage$0",
          "kind": "modify-variable",
          "method": "damage",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "fuzs/easyanvils/common/mixin/AnvilMenuMixin",
          "targets": [
            "net/minecraft/world/inventory/AnvilMenu"
          ],
          "handler": "onTake",
          "kind": "wrap-with-condition",
          "method": "onTake",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/inventory/ContainerLevelAccess;execute(Ljava/util/function/BiConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/world/inventory/ContainerLevelAccess#execute @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/block/AnvilBlock#damage @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 49,
        "features": {
          "block-behaviour": 1,
          "block-entity": 1,
          "menu": 5,
          "screen": 3,
          "renderer": 1,
          "mixin": 2
        },
        "events": [],
        "examples": {
          "AnvilWithInventoryBlock": [
            "affectNeighborsAfterRemoval",
            "getAnalogOutputSignal",
            "getMenuProvider",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "useWithoutItem"
          ]
        }
      },
      "interp": {
        "classes": 49,
        "methods": 124,
        "tried": 124,
        "completed": 22,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lfuzs/easyanvils/common/config/FreeRenames;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/easyanvils/common/config/PriorWorkPenalty;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/easyanvils/common/config/RenameAndRepairCost;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/BiMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/google/common/collect/Maps#unmodifiableBiMap(Lcom/google/common/collect/BiMap;)Lcom/google/common/collect/BiMap;": 2,
          "fuzs/easyanvils/common/client/gui/components/FormattableEditBox#canConsumeInput()Z": 1,
          "fuzs/easyanvils/common/client/gui/components/FormattingGuideWidget#isHoveredOrFocused()Z": 2,
          "fuzs/easyanvils/common/data/tags/ModBlockTagsProvider#tag(Lnet/minecraft/tags/TagKey;)Lfuzs/puzzleslib/common/api/data/v3/tags/AbstractTagAppender;": 1,
          "fuzs/easyanvils/common/util/FormattedStringUtil$1#length()I": 1,
          "fuzs/easyanvils/common/world/inventory/ModAnvilMenu#createResult()V": 1,
          "fuzs/easyanvils/common/world/inventory/ModAnvilMenu#setData(II)V": 1,
          "fuzs/easyanvils/common/world/inventory/state/BuiltInAnvilMenu#createResult()V": 1,
          "fuzs/easyanvils/common/world/inventory/state/BuiltInAnvilMenu#getCost()I": 1,
          "fuzs/easyanvils/common/world/level/block/entity/AnvilBlockEntity#canPlaceItem(ILnet/minecraft/world/item/ItemStack;)Z": 1,
          "fuzs/easyanvils/common/world/level/block/entity/AnvilBlockEntity#saveWithoutMetadata(Lnet/minecraft/core/HolderLookup$Provider;)Lnet/minecraft/nbt/CompoundTag;": 1,
          "fuzs/puzzleslib/common/api/client/event/v1/ClientTagsUpdatedCallback#EVENT": 2,
          "fuzs/puzzleslib/common/api/container/v1/ContainerMenuHelper#copyItemsIntoContainer(Lnet/minecraft/core/NonNullList;Lnet/minecraft/world/Container;)V": 1,
          "fuzs/puzzleslib/common/api/network/v4/message/MessageListener#<init>()V": 2,
          "fuzs/puzzleslib/common/api/network/v4/message/play/ClientboundPlayMessage$Context#level()Lnet/minecraft/client/multiplayer/ClientLevel;": 2,
          "java/lang/Character#charCount(I)I": 1,
          "java/lang/Character#isHighSurrogate(C)Z": 2,
          "java/lang/Character#toString(I)Ljava/lang/String;": 2,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "net/minecraft/client/input/MouseButtonEvent#x()D": 1,
          "net/minecraft/client/renderer/blockentity/state/BlockEntityRenderState#<init>()V": 2,
          "net/minecraft/core/Direction#DOWN": 1,
          "net/minecraft/core/Holder$Reference#value()Ljava/lang/Object;": 5,
          "net/minecraft/core/NonNullList#size()I": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 1,
          "net/minecraft/network/chat/Style#EMPTY": 1,
          "net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket#create(Lnet/minecraft/world/level/block/entity/BlockEntity;)Lnet/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket;": 2,
          "net/minecraft/world/Container#stillValid(Lnet/minecraft/world/entity/player/Player;)Z": 1,
          "net/minecraft/world/Container#stillValidBlockEntity(Lnet/minecraft/world/level/block/entity/BlockEntity;Lnet/minecraft/world/entity/player/Player;)Z": 1,
          "net/minecraft/world/Containers#updateNeighboursAfterDestroy(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V": 1,
          "net/minecraft/world/entity/player/Player#getAbilities()Lnet/minecraft/world/entity/player/Abilities;": 1,
          "net/minecraft/world/inventory/AnvilMenu#<init>(ILnet/minecraft/world/entity/player/Inventory;Lnet/minecraft/world/inventory/ContainerLevelAccess;)V": 2,
          "net/minecraft/world/inventory/AnvilMenu#slotsChanged(Lnet/minecraft/world/Container;)V": 1,
          "net/minecraft/world/item/Items#IRON_BLOCK": 1,
          "net/minecraft/world/level/Level#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 2,
          "net/minecraft/world/level/block/entity/BaseContainerBlockEntity#loadAdditional(Lnet/minecraft/world/level/storage/ValueInput;)V": 1,
          "net/minecraft/world/level/block/entity/BaseContainerBlockEntity#saveAdditional(Lnet/minecraft/world/level/storage/ValueOutput;)V": 1,
          "net/minecraft/world/level/block/entity/BaseContainerBlockEntity#setChanged()V": 1,
          "net/minecraft/world/level/block/state/BlockState#getValues()Ljava/util/stream/Stream;": 1,
          "new org/joml/Vector2i": 1
        },
        "runs": [
          {
            "class": "fuzs/easyanvils/common/config/PriorWorkPenalty",
            "method": "repairCostToRepairs",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "fuzs/easyanvils/common/handler/ItemInteractionHandler",
            "method": "tryRepairAnvil",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "fuzs/easyanvils/common/client/util/WidthClosestCharSink",
            "method": "getPosition",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fuzs/easyanvils/common/world/level/block/AnvilWithInventoryBlock",
            "method": "hasAnalogOutputSignal",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "fuzs/easyanvils/common/world/level/block/entity/AnvilBlockEntity",
            "method": "canTakeItemThroughFace",
            "desc": "(ILnet/minecraft/world/item/ItemStack;Lnet/minecraft/core/Direction;)Z",
            "value": "0"
          },
          {
            "class": "fuzs/easyanvils/common/client/util/WidthLimitedCharSink",
            "method": "getPosition",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 672
      },
      "verdict": "no",
      "summary": "none of its 2 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "easymagic",
      "name": "Easy Magic",
      "version": "26.3.0",
      "license": "MPL-2.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "fuzs/easymagic/fabric/client/EasyMagicFabricClient"
        },
        {
          "kind": "main",
          "value": "fuzs/easymagic/fabric/EasyMagicFabric"
        }
      ],
      "mixin_configs": [
        "easymagic.common.mixins.json",
        "easymagic.fabric.mixins.json"
      ],
      "depends": [
        "forgeconfigapiport",
        "puzzleslib"
      ],
      "classes": 38,
      "methods": 219,
      "sites": [
        {
          "mixin": "fuzs/easymagic/common/mixin/ChiseledBookShelfBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity"
          ],
          "handler": "updateState",
          "kind": "inject",
          "method": "updateState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity#updateState HEAD"
        },
        {
          "mixin": "fuzs/easymagic/common/mixin/EnchantingTableBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/EnchantingTableBlock"
          ],
          "handler": "isValidBookShelf",
          "kind": "inject",
          "method": "isValidBookShelf",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/EnchantingTableBlock#isValidBookShelf HEAD"
        }
      ],
      "listening": 2,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/world/level/block/EnchantingTableBlock#isValidBookShelf @HEAD": 1,
        "net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity#updateState @HEAD": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 38,
        "features": {
          "block-behaviour": 1,
          "block-entity": 2,
          "menu": 1,
          "screen": 4,
          "renderer": 2,
          "mixin": 2
        },
        "events": [],
        "examples": {
          "EnchantingTableContainerBlock": [
            "affectNeighborsAfterRemoval",
            "getAnalogOutputSignal",
            "getBlockEntityType",
            "getMenuProvider",
            "getTicker",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "useWithoutItem"
          ]
        }
      },
      "interp": {
        "classes": 38,
        "methods": 123,
        "tried": 123,
        "completed": 20,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lfuzs/easymagic/common/config/ClientConfig$ChiseledBookshelfTooltip;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/easymagic/common/config/ClientConfig$ItemRenderType;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/easymagic/common/config/ServerConfig$ChiseledBookshelfPower;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/easymagic/common/config/ServerConfig$EnchantmentHint;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/BiMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/google/common/collect/Maps#unmodifiableBiMap(Lcom/google/common/collect/BiMap;)Lcom/google/common/collect/BiMap;": 2,
          "fuzs/easymagic/common/client/gui/components/EnchantmentSlotButton#isActive()Z": 2,
          "fuzs/easymagic/common/client/gui/screens/inventory/ModEnchantmentScreen#children()Ljava/util/List;": 1,
          "fuzs/easymagic/common/data/tags/ModItemTagsProvider#tag(Lnet/minecraft/tags/TagKey;)Lfuzs/puzzleslib/common/api/data/v3/tags/AbstractTagAppender;": 1,
          "fuzs/easymagic/common/mixin/ChiseledBookShelfBlockEntityMixin#problemPath()Lnet/minecraft/util/ProblemReporter$PathElement;": 1,
          "fuzs/easymagic/common/mixin/ChiseledBookShelfBlockEntityMixin#setChanged()V": 1,
          "fuzs/easymagic/common/world/level/block/entity/BaseEnchantingTableContainerBlockEntity#getName()Lnet/minecraft/network/chat/Component;": 1,
          "fuzs/easymagic/common/world/level/block/entity/BaseEnchantingTableContainerBlockEntity#setChanged()V": 1,
          "fuzs/easymagic/common/world/level/block/entity/EnchantingTableContainerBlockEntity#bookAnimationTick(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/entity/EnchantingTableBlockEntity;)V": 1,
          "fuzs/easymagic/common/world/level/block/entity/EnchantingTableContainerBlockEntity#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "fuzs/easymagic/common/world/level/block/entity/EnchantingTableContainerBlockEntity#saveWithoutMetadata(Lnet/minecraft/core/HolderLookup$Provider;)Lnet/minecraft/nbt/CompoundTag;": 1,
          "fuzs/puzzleslib/common/api/block/v1/entity/TickingEntityBlock#getTicker(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/entity/BlockEntityType;)Lnet/minecraft/world/level/block/entity/BlockEntityTicker;": 1,
          "fuzs/puzzleslib/common/api/block/v1/entity/TickingEntityBlock#newBlockEntity(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "fuzs/puzzleslib/common/api/client/event/v1/ClientTagsUpdatedCallback#EVENT": 2,
          "fuzs/puzzleslib/common/api/event/v1/entity/player/PlayerInteractEvents#USE_BLOCK": 2,
          "fuzs/puzzleslib/common/api/network/v4/message/MessageListener#<init>()V": 1,
          "fuzs/puzzleslib/common/api/network/v4/message/play/ClientboundPlayMessage$Context#player()Lnet/minecraft/client/player/LocalPlayer;": 2,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/components/ImageButton#extractContents(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 2,
          "net/minecraft/client/gui/screens/inventory/EnchantmentScreen#containerTick()V": 1,
          "net/minecraft/client/gui/screens/inventory/EnchantmentScreen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/inventory/EnchantmentScreen#getMenu()Lnet/minecraft/world/inventory/AbstractContainerMenu;": 2,
          "net/minecraft/client/gui/screens/inventory/EnchantmentScreen#init()V": 1,
          "net/minecraft/client/renderer/blockentity/state/EnchantTableRenderState#<init>()V": 2,
          "net/minecraft/core/Holder#unwrapKey()Ljava/util/Optional;": 1,
          "net/minecraft/core/Holder$Reference#key()Lnet/minecraft/resources/ResourceKey;": 1,
          "net/minecraft/core/Holder$Reference#value()Ljava/lang/Object;": 6,
          "net/minecraft/core/HolderSet#direct([Lnet/minecraft/core/Holder;)Lnet/minecraft/core/HolderSet$Direct;": 1,
          "net/minecraft/core/NonNullList#getFirst()Ljava/lang/Object;": 2,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 1,
          "net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket#create(Lnet/minecraft/world/level/block/entity/BlockEntity;)Lnet/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket;": 4,
          "net/minecraft/sounds/SoundEvents#ENCHANTMENT_TABLE_USE": 1,
          "net/minecraft/world/Container#getItem(I)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/Container#stillValidBlockEntity(Lnet/minecraft/world/level/block/entity/BlockEntity;Lnet/minecraft/world/entity/player/Player;)Z": 1,
          "net/minecraft/world/Containers#updateNeighboursAfterDestroy(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V": 1,
          "net/minecraft/world/LockCode#NO_LOCK": 1,
          "net/minecraft/world/LockCode#canUnlock(Lnet/minecraft/world/entity/player/Player;)Z": 2,
          "net/minecraft/world/inventory/EnchantmentMenu#broadcastChanges()V": 1,
          "net/minecraft/world/item/ItemStack#is(Lnet/minecraft/tags/TagKey;)Z": 2,
          "net/minecraft/world/item/ItemStack#isEnchanted()Z": 1,
          "net/minecraft/world/level/Level#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 2,
          "net/minecraft/world/level/block/EnchantingTableBlock#BOOKSHELF_OFFSETS": 1,
          "net/minecraft/world/level/block/entity/EnchantingTableBlockEntity#applyImplicitComponents(Lnet/minecraft/core/component/DataComponentGetter;)V": 1,
          "net/minecraft/world/level/block/entity/EnchantingTableBlockEntity#collectImplicitComponents(Lnet/minecraft/core/component/DataComponentMap$Builder;)V": 1,
          "net/minecraft/world/level/block/entity/EnchantingTableBlockEntity#loadAdditional(Lnet/minecraft/world/level/storage/ValueInput;)V": 1,
          "net/minecraft/world/level/block/entity/EnchantingTableBlockEntity#saveAdditional(Lnet/minecraft/world/level/storage/ValueOutput;)V": 1,
          "net/minecraft/world/level/block/state/BlockState#getValues()Ljava/util/stream/Stream;": 1
        },
        "runs": [
          {
            "class": "fuzs/easymagic/common/network/ClientboundEnchantmentCluesMessage",
            "method": "containerId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fuzs/easymagic/common/config/ServerConfig",
            "method": "dedicatedRerollCatalyst",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fuzs/easymagic/common/client/util/EnchantmentTooltipHelper",
            "method": "getEnchantingComponent",
            "desc": "(IILjava/lang/String;Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#41"
          },
          {
            "class": "fuzs/easymagic/common/client/util/EnchantmentTooltipHelper",
            "method": "getEnchantingComponent",
            "desc": "(IILnet/minecraft/network/chat/MutableComponent;)Ljava/util/Optional;",
            "value": "obj#42"
          },
          {
            "class": "fuzs/easymagic/common/world/inventory/ModEnchantmentMenu$2",
            "method": "getMaxStackSize",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "fuzs/easymagic/common/world/level/block/EnchantingTableContainerBlock",
            "method": "hasAnalogOutputSignal",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "fuzs/easymagic/common/util/PlayerExperienceHelper",
            "method": "getExperienceFromLevels",
            "desc": "(I)I",
            "value": "0"
          }
        ],
        "insns": 711
      },
      "verdict": "no",
      "summary": "none of its 2 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "enchdesc",
      "name": "EnchantmentDescriptions",
      "version": "26.3.0.2",
      "license": "LGPL 2.1",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "net/darkhax/enchdesc/fabric/EnchantmentDescriptionsFabricClient"
        },
        {
          "kind": "main",
          "value": "net/darkhax/enchdesc/fabric/EnchantmentDescriptionsFabric"
        }
      ],
      "mixin_configs": [
        "enchdesc.common.mixins.json",
        "enchdesc.fabric.mixins.json"
      ],
      "depends": [
        "prickle"
      ],
      "classes": 7,
      "methods": 21,
      "sites": [
        {
          "mixin": "net/darkhax/enchdesc/common/mixin/patch/MixinItemEnchants",
          "targets": [
            "net/minecraft/world/item/enchantment/ItemEnchantments"
          ],
          "handler": "sortedEnchantment",
          "kind": "inject",
          "method": "addToTooltip",
          "at": "INVOKE",
          "at_target": "Ljava/util/function/Consumer;accept(Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/enchantment/ItemEnchantments#addToTooltip INVOKE"
        },
        {
          "mixin": "net/darkhax/enchdesc/common/mixin/patch/MixinItemEnchants",
          "targets": [
            "net/minecraft/world/item/enchantment/ItemEnchantments"
          ],
          "handler": "unsortedEnchantment",
          "kind": "inject",
          "method": "addToTooltip",
          "at": "INVOKE",
          "at_target": "Ljava/util/function/Consumer;accept(Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/enchantment/ItemEnchantments#addToTooltip INVOKE"
        },
        {
          "mixin": "net/darkhax/enchdesc/common/mixin/patch/MixinItemStack",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "afterEnchantmentTooltips",
          "kind": "inject",
          "method": "getTooltipLines",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "tooltip",
          "why": "ItemTooltipEvent"
        },
        {
          "mixin": "net/darkhax/enchdesc/common/mixin/patch/MixinItemStack",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "beforeTooltipComponent",
          "kind": "inject",
          "method": "addDetailsToTooltip",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#addDetailsToTooltip HEAD"
        }
      ],
      "listening": 2,
      "accessors": 1,
      "hooks": {
        "tooltip": 1
      },
      "wanted": {
        "net/minecraft/world/item/ItemStack#addDetailsToTooltip @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/world/item/enchantment/ItemEnchantments#addToTooltip @INVOKE": 2
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 7,
        "features": {
          "mixin": 3
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 7,
        "methods": 9,
        "tried": 9,
        "completed": 2,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "net/minecraft/core/component/DataComponents#ENCHANTMENTS": 1,
          "net/minecraft/resources/Identifier#getNamespace()Ljava/lang/String;": 1
        },
        "runs": [],
        "insns": 36
      },
      "verdict": "partly",
      "summary": "1 of 2 listening patch sites land on a Horizon hook (50%); of 4 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "enhancedvisuals",
      "name": "EnhancedVisuals",
      "version": "1.8.35",
      "license": "LGPL-3.0-only",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "team/creative/enhancedvisuals/EnhancedVisuals"
        },
        {
          "kind": "main",
          "value": "team/creative/enhancedvisuals/EnhancedVisuals"
        }
      ],
      "mixin_configs": [
        "enhancedvisuals.mixins.json"
      ],
      "depends": [
        "creativecore"
      ],
      "classes": 83,
      "methods": 351,
      "sites": [
        {
          "mixin": "team/creative/enhancedvisuals/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "handleRespawn",
          "kind": "inject",
          "method": "handleRespawn",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "team/creative/enhancedvisuals/mixin/ExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "onDetonate",
          "kind": "wrap-operation",
          "method": "hurtEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "team/creative/enhancedvisuals/mixin/ExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "onDetonateFabric",
          "kind": "wrap-operation",
          "method": "hurtEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "team/creative/enhancedvisuals/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "extractGuiEnd",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/render/GuiRenderer;endFrame()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render INVOKE"
        },
        {
          "mixin": "team/creative/enhancedvisuals/mixin/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "actuallyHurt",
          "kind": "inject",
          "method": "Lnet/minecraft/world/entity/player/Player;actuallyHurt",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;getHealth()F",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#Lnet/minecraft/world/entity/player/Player;actuallyHurt INVOKE"
        },
        {
          "mixin": "team/creative/enhancedvisuals/mixin/ProjectileMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/Projectile"
          ],
          "handler": "onHit",
          "kind": "inject",
          "method": "Lnet/minecraft/world/entity/projectile/Projectile;onHit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/Projectile#Lnet/minecraft/world/entity/projectile/Projectile;onHit HEAD"
        }
      ],
      "listening": 2,
      "accessors": 6,
      "hooks": {
        "net_from_server": 1
      },
      "wanted": {
        "net/minecraft/world/entity/projectile/Projectile#Lnet/minecraft/world/entity/projectile/Projectile;onHit @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/renderer/GameRenderer#render @INVOKE": 1,
        "net/minecraft/server/level/ServerLevel#getEntities @INVOKE (wrap-operation)": 2,
        "net/minecraft/world/entity/player/Player#Lnet/minecraft/world/entity/player/Player;actuallyHurt @INVOKE": 1
      },
      "api": [],
      "code": {
        "classes": 83,
        "features": {
          "mixin": 10
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 83,
        "methods": 183,
        "tried": 183,
        "completed": 83,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lteam/creative/enhancedvisuals/api/VisualCategory;#clone()Ljava/lang/Object;": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "com/momosoftworks/coldsweat/api/util/Temperature$Trait#BODY": 1,
          "com/stereowalker/survive/api/needs/PlayerNeeds#api()Lcom/stereowalker/survive/api/needs/PlayerNeeds;": 2,
          "java/util/Collections#EMPTY_LIST": 1,
          "java/util/LinkedHashMap#entrySet()Ljava/util/Set;": 1,
          "java/util/LinkedHashMap#put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/LinkedHashMap#values()Ljava/util/Collection;": 1,
          "java/util/Random#nextDouble()D": 1,
          "net/minecraft/client/DeltaTracker#getGameTimeDeltaPartialTick(Z)F": 1,
          "net/minecraft/client/Minecraft#getDeltaTracker()Lnet/minecraft/client/DeltaTracker;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 11,
          "net/minecraft/core/registries/Registries#ENCHANTMENT": 1,
          "net/minecraft/sounds/SoundSource#MASTER": 1,
          "net/minecraft/world/entity/player/Player#blockPosition()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/entity/player/Player#getHealth()F": 2,
          "net/minecraft/world/entity/player/Player#level()Lnet/minecraft/world/level/Level;": 2,
          "net/minecraft/world/item/ItemStack#getComponents()Lnet/minecraft/core/component/DataComponentMap;": 1,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 3,
          "net/minecraft/world/level/Explosion#center()Lnet/minecraft/world/phys/Vec3;": 1,
          "new net/minecraft/world/damagesource/DamageSource": 1,
          "new team/creative/creativecore/common/config/premade/curve/DecimalCurve": 2,
          "new team/creative/creativecore/common/util/type/Color": 1,
          "team/creative/creativecore/CreativeCore#loader()Lteam/creative/creativecore/ICreativeLoader;": 1,
          "team/creative/creativecore/common/config/premade/DecimalMinMax#next(Ljava/util/Random;)D": 1,
          "team/creative/creativecore/common/config/premade/IntMinMax#next(Ljava/util/Random;)I": 1,
          "team/creative/creativecore/common/config/premade/curve/Curve#valueAt(D)D": 1,
          "team/creative/creativecore/common/config/premade/curve/DecimalCurve#valueAt(D)D": 1,
          "team/creative/creativecore/common/util/type/list/PairList#add(Ljava/lang/Object;Ljava/lang/Object;)Z": 1,
          "team/creative/creativecore/common/util/type/map/HashMapList#get(Ljava/lang/Object;)Ljava/util/ArrayList;": 1,
          "team/creative/creativecore/common/util/type/map/HashMapList#iterator()Ljava/util/Iterator;": 1,
          "team/creative/creativecore/common/util/type/map/HashMapList#removeKey(Ljava/lang/Object;)Ljava/util/ArrayList;": 2
        },
        "runs": [
          {
            "class": "team/creative/enhancedvisuals/server/EVManagerServer",
            "method": "remove",
            "desc": "(Lteam/creative/enhancedvisuals/api/Visual;)Z",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/server/EVManagerServer",
            "method": "generateOffset",
            "desc": "(Ljava/util/Random;II)I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/server/EVManagerServer",
            "method": "random",
            "desc": "()Ljava/util/Random;",
            "value": "obj#47"
          },
          {
            "class": "team/creative/enhancedvisuals/api/VisualCategory$3",
            "method": "isAffectedByWater",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/client/EVManagerClient",
            "method": "random",
            "desc": "()Ljava/util/Random;",
            "value": "obj#60"
          },
          {
            "class": "team/creative/enhancedvisuals/api/type/VisualTypeParticle",
            "method": "scaleVariants",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "team/creative/enhancedvisuals/api/VisualCategory$1",
            "method": "isAffectedByWater",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/client/sound/SoundMuteHandler",
            "method": "getClampedVolume",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "team/creative/enhancedvisuals/common/handler/HeartbeatHandler",
            "method": "shouldHeartbeatTrigger",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/client/type/VisualTypeShaderClient",
            "method": "getVariantAmount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/type/VisualType",
            "method": "types",
            "desc": "()Ljava/lang/Iterable;",
            "value": "obj#135"
          },
          {
            "class": "team/creative/enhancedvisuals/api/type/VisualType",
            "method": "setIgnoreWater",
            "desc": "()Lteam/creative/enhancedvisuals/api/type/VisualType;",
            "value": "obj#137"
          },
          {
            "class": "team/creative/enhancedvisuals/api/type/VisualType",
            "method": "canRotate",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "team/creative/enhancedvisuals/api/type/VisualType",
            "method": "scaleVariants",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/type/VisualType",
            "method": "randomScale",
            "desc": "(Ljava/util/Random;)D",
            "value": "1"
          },
          {
            "class": "team/creative/enhancedvisuals/api/Visual",
            "method": "getOpacityInternal",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "team/creative/enhancedvisuals/api/Visual",
            "method": "displayed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/Visual",
            "method": "getWidth",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/Visual",
            "method": "getHeight",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/event/VisualExplosionEvent",
            "method": "isBlurDisabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/event/VisualExplosionEvent",
            "method": "getNewDamage",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "team/creative/enhancedvisuals/api/Particle",
            "method": "getWidth",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/Particle",
            "method": "getHeight",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/common/handler/DamageHandler$1",
            "method": "canRotate",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/client/type/VisualTypeTextureClient",
            "method": "getWidth",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/client/type/VisualTypeTextureClient",
            "method": "getHeight",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/client/type/VisualTypeClient",
            "method": "getVariantAmount",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "team/creative/enhancedvisuals/client/type/VisualTypeClient",
            "method": "getWidth",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/client/type/VisualTypeClient",
            "method": "getHeight",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/VisualCategory$2",
            "method": "isAffectedByWater",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "team/creative/enhancedvisuals/api/VisualHandler",
            "method": "isEnabled",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "team/creative/enhancedvisuals/api/event/FireParticlesEvent",
            "method": "getNewFireSplashes",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/event/FireParticlesEvent",
            "method": "getNewFireDurationMin",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "team/creative/enhancedvisuals/api/event/FireParticlesEvent",
            "method": "getNewFireDurationMax",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 1841
      },
      "verdict": "partly",
      "summary": "1 of 2 listening patch sites land on a Horizon hook (50%); of 6 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "entityculling",
      "name": "EntityCulling",
      "version": "1.11.3",
      "license": "tr7zw Protective License",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/tr7zw/entityculling/EntityCullingMod"
        },
        {
          "kind": "modmenu",
          "value": "dev/tr7zw/entityculling/config/EntityCullingModMenu"
        }
      ],
      "mixin_configs": [
        "entityculling.mixins.json"
      ],
      "depends": [],
      "classes": 38,
      "methods": 187,
      "sites": [
        {
          "mixin": "dev/tr7zw/entityculling/mixin/BlockEntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher"
          ],
          "handler": "tryExtractRenderState",
          "kind": "inject",
          "method": "tryExtractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#tryExtractRenderState HEAD"
        },
        {
          "mixin": "dev/tr7zw/entityculling/mixin/ClientWorldMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "tickEntity",
          "kind": "inject",
          "method": "tickNonPassenger",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger HEAD"
        },
        {
          "mixin": "dev/tr7zw/entityculling/mixin/WorldRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "extractEntityRedir",
          "kind": "inject",
          "method": "extractEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractEntity HEAD"
        },
        {
          "mixin": "dev/tr7zw/entityculling/mixin/WorldRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "extractVisibleEntities",
          "kind": "inject",
          "method": "extractVisibleEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities HEAD"
        }
      ],
      "listening": 4,
      "accessors": 4,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#tryExtractRenderState @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractEntity @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities @HEAD": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 38,
        "features": {
          "mixin": 10
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 38,
        "methods": 100,
        "tried": 100,
        "completed": 39,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/logisticscraft/occlusionculling/OcclusionCullingInstance$Relative;#clone()Ljava/lang/Object;": 1,
          "dev/tr7zw/transition/loader/ModLoaderUtil#registerKeybind(Lnet/minecraft/client/KeyMapping;)V": 1,
          "dev/tr7zw/transition/mc/GeneralUtil#getPlayer()Lnet/minecraft/client/player/LocalPlayer;": 1,
          "java/io/File#exists()Z": 1,
          "java/lang/Double#doubleToLongBits(D)J": 1,
          "java/util/Arrays#fill([BB)V": 1,
          "java/util/Arrays#fill([ZZ)V": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 2,
          "net/minecraft/client/Minecraft#getEntityRenderDispatcher()Lnet/minecraft/client/renderer/entity/EntityRenderDispatcher;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/renderer/entity/EntityRenderer#createRenderState(Lnet/minecraft/world/entity/Entity;F)Lnet/minecraft/client/renderer/entity/state/EntityRenderState;": 2,
          "net/minecraft/core/Position#x()D": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK_ENTITY_TYPE": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ENTITY_TYPE": 1,
          "net/minecraft/resources/ResourceKey#identifier()Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraft/world/entity/Display#getBoundingBoxForCulling()Lnet/minecraft/world/phys/AABB;": 1,
          "net/minecraft/world/entity/Entity#setOldPosAndRot()V": 1,
          "net/minecraft/world/entity/monster/warden/Warden#getClientAngerLevel()I": 1,
          "new net/minecraft/core/BlockPos": 1,
          "new net/minecraft/world/phys/AABB": 1
        },
        "runs": [
          {
            "class": "dev/tr7zw/entityculling/debugEntries/CullTimingEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/entityculling/debugEntries/CulledEntitiesEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/entityculling/DebugCollector",
            "method": "isRunning",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/DebugCollector",
            "method": "getDataHolder",
            "desc": "()Ldev/tr7zw/entityculling/DebugCollector$DataHolder;",
            "value": "obj#107"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "getX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "getY",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "getZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "normalize",
            "desc": "()Lcom/logisticscraft/occlusionculling/util/Vec3d;",
            "value": "obj#123"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/debugEntries/CulledBlockEntitiesEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/MathUtilities",
            "method": "floor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/MathUtilities",
            "method": "fastFloor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/MathUtilities",
            "method": "ceil",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/debugEntries/TickCullingEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/entityculling/mixin/CullableMixin",
            "method": "isForcedVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/mixin/CullableMixin",
            "method": "isCulled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/mixin/CullableMixin",
            "method": "isOutOfCamera",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/mixin/CullableMixin",
            "method": "isShouldEntityAppearGlowing",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 1330
      },
      "verdict": "no",
      "summary": "none of its 4 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "entityculling",
      "name": "EntityCulling",
      "version": "1.11.3",
      "license": "tr7zw Protective License",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/tr7zw/entityculling/EntityCullingMod"
        },
        {
          "kind": "modmenu",
          "value": "dev/tr7zw/entityculling/config/EntityCullingModMenu"
        }
      ],
      "mixin_configs": [
        "entityculling.mixins.json"
      ],
      "depends": [],
      "classes": 38,
      "methods": 187,
      "sites": [
        {
          "mixin": "dev/tr7zw/entityculling/mixin/BlockEntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher"
          ],
          "handler": "tryExtractRenderState",
          "kind": "inject",
          "method": "tryExtractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#tryExtractRenderState HEAD"
        },
        {
          "mixin": "dev/tr7zw/entityculling/mixin/ClientWorldMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "tickEntity",
          "kind": "inject",
          "method": "tickNonPassenger",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger HEAD"
        },
        {
          "mixin": "dev/tr7zw/entityculling/mixin/WorldRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "extractEntityRedir",
          "kind": "inject",
          "method": "extractEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractEntity HEAD"
        },
        {
          "mixin": "dev/tr7zw/entityculling/mixin/WorldRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "extractVisibleEntities",
          "kind": "inject",
          "method": "extractVisibleEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities HEAD"
        }
      ],
      "listening": 4,
      "accessors": 4,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#tryExtractRenderState @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractEntity @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities @HEAD": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 38,
        "features": {
          "mixin": 10
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 38,
        "methods": 100,
        "tried": 100,
        "completed": 39,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/logisticscraft/occlusionculling/OcclusionCullingInstance$Relative;#clone()Ljava/lang/Object;": 1,
          "dev/tr7zw/transition/loader/ModLoaderUtil#registerKeybind(Lnet/minecraft/client/KeyMapping;)V": 1,
          "dev/tr7zw/transition/mc/GeneralUtil#getPlayer()Lnet/minecraft/client/player/LocalPlayer;": 1,
          "java/io/File#exists()Z": 1,
          "java/lang/Double#doubleToLongBits(D)J": 1,
          "java/util/Arrays#fill([BB)V": 1,
          "java/util/Arrays#fill([ZZ)V": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 2,
          "net/minecraft/client/Minecraft#getEntityRenderDispatcher()Lnet/minecraft/client/renderer/entity/EntityRenderDispatcher;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/renderer/entity/EntityRenderer#createRenderState(Lnet/minecraft/world/entity/Entity;F)Lnet/minecraft/client/renderer/entity/state/EntityRenderState;": 2,
          "net/minecraft/core/Position#x()D": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK_ENTITY_TYPE": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ENTITY_TYPE": 1,
          "net/minecraft/resources/ResourceKey#identifier()Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraft/world/entity/Display#getBoundingBox()Lnet/minecraft/world/phys/AABB;": 1,
          "net/minecraft/world/entity/Entity#setOldPosAndRot()V": 1,
          "net/minecraft/world/entity/monster/warden/Warden#getClientAngerLevel()I": 1,
          "new net/minecraft/core/BlockPos": 1,
          "new net/minecraft/world/phys/AABB": 1
        },
        "runs": [
          {
            "class": "dev/tr7zw/entityculling/debugEntries/TickCullingEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/entityculling/debugEntries/CulledBlockEntitiesEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "getX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "getY",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "getZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "normalize",
            "desc": "()Lcom/logisticscraft/occlusionculling/util/Vec3d;",
            "value": "obj#55"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/Vec3d",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/debugEntries/CulledEntitiesEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/MathUtilities",
            "method": "floor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/MathUtilities",
            "method": "fastFloor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "com/logisticscraft/occlusionculling/util/MathUtilities",
            "method": "ceil",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/DebugCollector",
            "method": "isRunning",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/DebugCollector",
            "method": "getDataHolder",
            "desc": "()Ldev/tr7zw/entityculling/DebugCollector$DataHolder;",
            "value": "obj#135"
          },
          {
            "class": "dev/tr7zw/entityculling/debugEntries/CullTimingEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/entityculling/mixin/CullableMixin",
            "method": "isForcedVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/mixin/CullableMixin",
            "method": "isCulled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/mixin/CullableMixin",
            "method": "isOutOfCamera",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/entityculling/mixin/CullableMixin",
            "method": "isShouldEntityAppearGlowing",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 1331
      },
      "verdict": "no",
      "summary": "none of its 4 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "explorerscompass",
      "name": "Explorer's Compass",
      "version": "26.3-2.5.2-fabric",
      "license": "CC BY-NC-SA 4.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/chaosthedude/explorerscompass/ExplorersCompassClient"
        },
        {
          "kind": "main",
          "value": "com/chaosthedude/explorerscompass/ExplorersCompass"
        }
      ],
      "mixin_configs": [
        "explorerscompass.mixins.json"
      ],
      "depends": [],
      "classes": 40,
      "methods": 267,
      "sites": [
        {
          "mixin": "com/chaosthedude/explorerscompass/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "renderCompassInfo",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "com/chaosthedude/explorerscompass/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "startTick",
          "kind": "inject",
          "method": "tickServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "server_tick",
          "why": "ServerTickEvent.Pre/Post"
        },
        {
          "mixin": "com/chaosthedude/explorerscompass/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "endTick",
          "kind": "inject",
          "method": "tickServer",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#tickServer TAIL"
        },
        {
          "mixin": "com/chaosthedude/explorerscompass/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "onShutdown",
          "kind": "inject",
          "method": "stopServer",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#stopServer TAIL"
        },
        {
          "mixin": "com/chaosthedude/explorerscompass/mixin/RangeSelectItemModelPropertiesMixin",
          "targets": [
            "net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties"
          ],
          "handler": "registerCompassProperty",
          "kind": "inject",
          "method": "bootstrap",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties#bootstrap TAIL"
        }
      ],
      "listening": 5,
      "accessors": 0,
      "hooks": {
        "hud": 1,
        "server_tick": 1
      },
      "wanted": {
        "net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties#bootstrap @TAIL": 1,
        "net/minecraft/server/MinecraftServer#stopServer @TAIL": 1,
        "net/minecraft/server/MinecraftServer#tickServer @TAIL": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 5
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 4
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents$ModifyOutput",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricCreativeModeTabOutput",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        }
      ],
      "code": {
        "classes": 40,
        "features": {
          "item-behaviour": 1,
          "screen": 5,
          "renderer": 1,
          "network": 4,
          "events": 1,
          "mixin": 3
        },
        "events": [
          "Event"
        ],
        "examples": {
          "ExplorersCompassItem": [
            "allowComponentsUpdateAnimation",
            "clearSearchData",
            "damageCompass",
            "fail",
            "getCompassState",
            "getDamage",
            "isBarVisible",
            "isBroken",
            "search",
            "searchForNextStructure",
            "searchForStructure",
            "setCompassState",
            "succeed",
            "use"
          ]
        }
      },
      "interp": {
        "classes": 40,
        "methods": 169,
        "tried": 169,
        "completed": 54,
        "handlers_tried": 2,
        "handlers_completed": 1,
        "missing": {
          "[Lcom/chaosthedude/explorerscompass/util/CompassState;#clone()Ljava/lang/Object;": 2,
          "[Lcom/chaosthedude/explorerscompass/util/OverlaySide;#clone()Ljava/lang/Object;": 1,
          "com/chaosthedude/explorerscompass/gui/StructureSearchList#clearEntries()V": 2,
          "com/chaosthedude/explorerscompass/gui/StructureSearchList#enableScissor(Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V": 1,
          "com/chaosthedude/explorerscompass/gui/StructureSearchList#getItemCount()I": 1,
          "com/chaosthedude/explorerscompass/gui/StructureSearchList#getRowLeft()I": 1,
          "com/chaosthedude/explorerscompass/gui/StructureSearchList#getSelected()Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;": 2,
          "com/chaosthedude/explorerscompass/gui/StructureSearchList#getWidth()I": 1,
          "com/chaosthedude/explorerscompass/gui/StructureSearchList#scrollable()Z": 1,
          "com/chaosthedude/explorerscompass/gui/StructureSearchList#setSelected(Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;)V": 1,
          "com/chaosthedude/explorerscompass/gui/TransparentEditBox#getWidth()I": 1,
          "com/chaosthedude/explorerscompass/gui/TransparentEditBox#isVisible()Z": 1,
          "com/chaosthedude/explorerscompass/util/ExplorersCompassAngleState#get(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/world/entity/ItemOwner;I)F": 1,
          "com/google/common/collect/ArrayListMultimap#create()Lcom/google/common/collect/ArrayListMultimap;": 1,
          "com/google/common/collect/ListMultimap#get(Ljava/lang/Object;)Ljava/util/List;": 3,
          "java/util/Collections#sort(Ljava/util/List;Ljava/util/Comparator;)V": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayNetworking#send(Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload;)V": 3,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayNetworking$Context#client()Lnet/minecraft/client/Minecraft;": 1,
          "net/fabricmc/fabric/api/networking/v1/ServerPlayNetworking$Context#server()Lnet/minecraft/server/MinecraftServer;": 3,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/screens/Screen#charTyped(Lnet/minecraft/client/input/CharacterEvent;)Z": 1,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/Screen#keyPressed(Lnet/minecraft/client/input/KeyEvent;)Z": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getRespawnData()Lnet/minecraft/world/level/storage/LevelData$RespawnData;": 1,
          "net/minecraft/client/renderer/item/properties/numeric/NeedleDirectionHelper$Wobbler#shouldUpdate(J)Z": 1,
          "net/minecraft/core/BlockPos#getX()I": 7,
          "net/minecraft/network/FriendlyByteBuf#readBoolean()Z": 1,
          "net/minecraft/network/FriendlyByteBuf#readIdentifier()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/network/FriendlyByteBuf#writeBoolean(Z)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/network/FriendlyByteBuf#writeIdentifier(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/resources/Identifier#compareTo(Lnet/minecraft/resources/Identifier;)I": 2,
          "net/minecraft/server/level/ServerLevel#getServer()Lnet/minecraft/server/MinecraftServer;": 1,
          "net/minecraft/server/level/ServerLevel#registryAccess()Lnet/minecraft/core/RegistryAccess;": 9,
          "net/minecraft/world/entity/Entity#getVisualRotationYInDegrees()F": 1,
          "net/minecraft/world/entity/player/Player#blockPosition()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/entity/player/Player#getMainHandItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/player/Player#hasInfiniteMaterials()Z": 1,
          "net/minecraft/world/entity/player/Player#isCrouching()Z": 1,
          "net/minecraft/world/item/ItemStack#getOrDefault(Lnet/minecraft/core/component/DataComponentType;Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "net/minecraft/world/item/ItemStack#has(Lnet/minecraft/core/component/DataComponentType;)Z": 2,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 1,
          "net/minecraft/world/item/ItemStack#remove(Lnet/minecraft/core/component/DataComponentType;)Ljava/lang/Object;": 2,
          "net/minecraft/world/level/Level#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 2,
          "net/minecraft/world/level/Level#getSeaLevel()I": 1,
          "net/minecraft/world/phys/Vec3#atCenterOf(Lnet/minecraft/core/Vec3i;)Lnet/minecraft/world/phys/Vec3;": 2,
          "new net/minecraft/core/BlockPos": 1
        },
        "runs": [
          {
            "class": "com/chaosthedude/explorerscompass/worker/StructureSearchWorker",
            "method": "shouldIgnore",
            "desc": "(Lnet/minecraft/core/BlockPos;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/util/ExplorersCompassAngleState",
            "method": "isValidCompassTargetPos",
            "desc": "(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/GlobalPos;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/util/ExplorersCompassAngleState",
            "method": "hash",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/sorting/NameSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/explorerscompass/sorting/ISorting;",
            "value": "obj#29"
          },
          {
            "class": "com/chaosthedude/explorerscompass/worker/SearchWorkerManager",
            "method": "start",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/worker/ConcentricRingsSearchWorker",
            "method": "shouldLogRadius",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/network/SearchPacket",
            "method": "isGroup",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/network/SyncPacket",
            "method": "canTeleport",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/network/SyncPacket",
            "method": "maxNextSearches",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/network/SyncPacket",
            "method": "infiniteXp",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/util/CompassState",
            "method": "getID",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/util/PlayerUtils",
            "method": "canTeleport",
            "desc": "(Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/util/PlayerUtils",
            "method": "cheatModeEnabled",
            "desc": "(Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/util/PlayerUtils",
            "method": "isOp",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/sorting/GroupSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/explorerscompass/sorting/ISorting;",
            "value": "obj#87"
          },
          {
            "class": "com/chaosthedude/explorerscompass/network/TeleportPacket",
            "method": "read",
            "desc": "(Lnet/minecraft/network/FriendlyByteBuf;)Lcom/chaosthedude/explorerscompass/network/TeleportPacket;",
            "value": "obj#89"
          },
          {
            "class": "com/chaosthedude/explorerscompass/worker/GenericSearchWorker",
            "method": "shouldLogRadius",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/chaosthedude/explorerscompass/util/OverlaySide",
            "method": "fromString",
            "desc": "(Ljava/lang/String;)Lcom/chaosthedude/explorerscompass/util/OverlaySide;",
            "value": "obj#100"
          },
          {
            "class": "com/chaosthedude/explorerscompass/util/RenderUtils",
            "method": "getBackgroundColor",
            "desc": "(ZZ)I",
            "value": "721420288"
          },
          {
            "class": "com/chaosthedude/explorerscompass/sorting/DimensionSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/explorerscompass/sorting/ISorting;",
            "value": "obj#106"
          },
          {
            "class": "com/chaosthedude/explorerscompass/item/ExplorersCompassItem",
            "method": "isBarVisible",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/item/ExplorersCompassItem",
            "method": "getBarWidth",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)I",
            "value": "13"
          },
          {
            "class": "com/chaosthedude/explorerscompass/item/ExplorersCompassItem",
            "method": "isBroken",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/explorerscompass/network/SearchForNextPacket",
            "method": "read",
            "desc": "(Lnet/minecraft/network/FriendlyByteBuf;)Lcom/chaosthedude/explorerscompass/network/SearchForNextPacket;",
            "value": "obj#137"
          },
          {
            "class": "com/chaosthedude/explorerscompass/sorting/SourceSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/explorerscompass/sorting/ISorting;",
            "value": "obj#152"
          },
          {
            "class": "com/chaosthedude/explorerscompass/worker/RandomSpreadSearchWorker",
            "method": "shouldLogRadius",
            "desc": "()Z",
            "value": "1"
          }
        ],
        "insns": 1181
      },
      "verdict": "partly",
      "summary": "2 of 5 listening patch sites land on a Horizon hook (40%); of 5 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "fabric-api",
      "name": "Fabric API",
      "version": "0.161.0+26.2",
      "license": "Apache-2.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [],
      "mixin_configs": [],
      "depends": [],
      "classes": 0,
      "methods": 0,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [],
      "code": {
        "classes": 0,
        "features": {},
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 0,
        "methods": 0,
        "tried": 0,
        "completed": 0,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {},
        "runs": [],
        "insns": 0
      },
      "verdict": "no",
      "summary": "no patch sites and no content: nothing to convert"
    },
    {
      "mod_id": "fabrishot",
      "name": "Fabrishot",
      "version": "1.19.0",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "main",
          "value": "me/ramidzkh/fabrishot/Fabrishot::initialize"
        },
        {
          "kind": "modmenu",
          "value": "me/ramidzkh/fabrishot/config/ModMenuBridge"
        }
      ],
      "mixin_configs": [
        "mixins.fabrishot.json"
      ],
      "depends": [],
      "classes": 16,
      "methods": 56,
      "sites": [
        {
          "mixin": "me/ramidzkh/fabrishot/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "postRender",
          "kind": "inject",
          "method": "renderFrame",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GameRenderer;render()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#renderFrame INVOKE"
        },
        {
          "mixin": "me/ramidzkh/fabrishot/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "preScreenshot",
          "kind": "inject",
          "method": "handleGlobalKeyPress",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/Options;keyScreenshot:Lnet/minecraft/client/KeyMapping;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#handleGlobalKeyPress FIELD"
        },
        {
          "mixin": "me/ramidzkh/fabrishot/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onScreenshot",
          "kind": "inject",
          "method": "handleGlobalKeyPress",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Screenshot;grab(Lnet/minecraft/client/Minecraft;Z)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#handleGlobalKeyPress INVOKE"
        },
        {
          "mixin": "me/ramidzkh/fabrishot/mixins/RenderscaleCommonClassMixin",
          "targets": [
            "dev/zelo/renderscale/RenderScale"
          ],
          "handler": "disableScalingDuringScreenshot",
          "kind": "inject",
          "method": "setShouldScale",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at dev/zelo/renderscale/RenderScale#setShouldScale HEAD"
        }
      ],
      "listening": 1,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "dev/zelo/renderscale/RenderScale#setShouldScale @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Minecraft#handleGlobalKeyPress @FIELD": 1,
        "net/minecraft/client/Minecraft#handleGlobalKeyPress @INVOKE": 1,
        "net/minecraft/client/Minecraft#renderFrame @INVOKE": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "EventFactory",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 16,
        "features": {
          "screen": 2,
          "events": 2,
          "mixin": 2
        },
        "events": [
          "Event",
          "EventFactory"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 16,
        "methods": 26,
        "tried": 26,
        "completed": 8,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/ramidzkh/fabrishot/config/FileFormat;#clone()Ljava/lang/Object;": 1,
          "java/nio/file/StandardOpenOption#CREATE": 1,
          "me/ramidzkh/fabrishot/capture/FramebufferWriter$WriteCallback#free()V": 1,
          "me/ramidzkh/fabrishot/config/FileFormat#name()Ljava/lang/String;": 1,
          "net/fabricmc/fabric/api/client/keymapping/v1/KeyMappingHelper#registerKeyMapping(Lnet/minecraft/client/KeyMapping;)Lnet/minecraft/client/KeyMapping;": 1,
          "net/minecraft/client/KeyMapping#matches(Lcom/mojang/blaze3d/platform/InputConstants$Key;)Z": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 3,
          "net/minecraft/client/Minecraft#getWindow()Lcom/mojang/blaze3d/platform/Window;": 2,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/network/chat/CommonComponents#GUI_OK": 1,
          "net/minecraft/util/Unit#INSTANCE": 3,
          "org/lwjgl/stb/STBIWriteCallback#getData(JI)Ljava/nio/ByteBuffer;": 1
        },
        "runs": [
          {
            "class": "me/ramidzkh/fabrishot/Fabrishot",
            "method": "isInCapture",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 159
      },
      "verdict": "no",
      "summary": "none of its 4 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "fallingleaves",
      "name": "Falling Leaves",
      "version": "2.0.8",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "randommcsomethin/fallingleaves/FallingLeavesClient"
        },
        {
          "kind": "modmenu",
          "value": "randommcsomethin/fallingleaves/config/gui/FallingLeavesMenu"
        }
      ],
      "mixin_configs": [
        "fallingleaves.mixins.json"
      ],
      "depends": [
        "cloth-config"
      ],
      "classes": 51,
      "methods": 199,
      "sites": [
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/BlockMixin",
          "targets": [
            "net/minecraft/world/level/block/Block"
          ],
          "handler": "randomLeafBlockTick",
          "kind": "inject",
          "method": "animateTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/Block#animateTick HEAD"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/ClientPlayNetworkHandlerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "loadRegisteredLeafBlocks",
          "kind": "inject",
          "method": "handleUpdateTags",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/LeafTickMixin",
          "targets": [
            "net/minecraft/world/level/block/LeavesBlock"
          ],
          "handler": "addLeafParticles",
          "kind": "inject",
          "method": "animateTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/LeavesBlock#animateTick HEAD"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/LeafTickMixin",
          "targets": [
            "net/minecraft/world/level/block/LeavesBlock"
          ],
          "handler": "addDecayingLeafParticles",
          "kind": "inject",
          "method": "randomTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;removeBlock(Lnet/minecraft/core/BlockPos;Z)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/LeavesBlock#randomTick INVOKE"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/LeafTickMixin2",
          "targets": [
            "net/minecraft/world/level/block/FallingParticlesLeavesBlock"
          ],
          "handler": "captureBlockState",
          "kind": "inject",
          "method": "animateTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/FallingParticlesLeavesBlock#animateTick HEAD"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/LeafTickMixin2",
          "targets": [
            "net/minecraft/world/level/block/FallingParticlesLeavesBlock"
          ],
          "handler": "skipCheck",
          "kind": "wrap-operation",
          "method": "makeFallingLeavesParticles",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/FallingParticlesLeavesBlock;isFaceFull(Lnet/minecraft/world/phys/shapes/VoxelShape;Lnet/minecraft/core/Direction;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/LeafTickMixin2",
          "targets": [
            "net/minecraft/world/level/block/FallingParticlesLeavesBlock"
          ],
          "handler": "replaceLeafParticles",
          "kind": "wrap-operation",
          "method": "makeFallingLeavesParticles",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/FallingParticlesLeavesBlock;spawnFallingLeavesParticle(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "initWind",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_level_load",
          "why": "LevelEvent.Load: a level is set on the client"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/ParticleManagerMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#tick HEAD"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/ParticleSpriteManagerMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources"
          ],
          "handler": "registerLeafFactories",
          "kind": "inject",
          "method": "registerProviders",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleResources#registerProviders RETURN"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/ParticleSpriteManagerMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources"
          ],
          "handler": "clearCustomSpriteProviders",
          "kind": "inject",
          "method": "reload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleResources#reload HEAD"
        },
        {
          "mixin": "randommcsomethin/fallingleaves/mixin/ParticleSpriteManagerMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources"
          ],
          "handler": "useCustomSpriteProvider",
          "kind": "wrap-operation",
          "method": "lambda$reload$5",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 8,
      "accessors": 8,
      "hooks": {
        "client_level_load": 1,
        "net_from_server": 1
      },
      "wanted": {
        "net/minecraft/client/particle/ParticleEngine#tick @HEAD": 1,
        "net/minecraft/client/particle/ParticleResources#registerProviders @RETURN": 1,
        "net/minecraft/client/particle/ParticleResources#reload @HEAD": 1,
        "net/minecraft/world/level/block/Block#animateTick @HEAD": 1,
        "net/minecraft/world/level/block/FallingParticlesLeavesBlock#animateTick @HEAD": 1,
        "net/minecraft/world/level/block/LeavesBlock#animateTick @HEAD": 1
      },
      "wanted_calls": {
        "java/util/Map#get @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/FallingParticlesLeavesBlock#isFaceFull @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/FallingParticlesLeavesBlock#spawnFallingLeavesParticle @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/LeavesBlock#randomTick @INVOKE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "AttackBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricParticleTypes",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry$PendingParticleProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 51,
        "features": {
          "particle": 1,
          "command": 1,
          "events": 2,
          "mixin": 15
        },
        "events": [
          "AttackBlockCallback",
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 51,
        "methods": 82,
        "tried": 82,
        "completed": 26,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "[Lrandommcsomethin/fallingleaves/particle/ParticleImplementation;#clone()Ljava/lang/Object;": 1,
          "[Lrandommcsomethin/fallingleaves/seasons/Season;#clone()Ljava/lang/Object;": 1,
          "[Lrandommcsomethin/fallingleaves/util/Wind$State;#clone()Ljava/lang/Object;": 1,
          "com/google/gson/TypeAdapter#read(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;": 1,
          "com/google/gson/stream/JsonReader#nextString()Ljava/lang/String;": 2,
          "com/google/gson/stream/JsonWriter#beginObject()Lcom/google/gson/stream/JsonWriter;": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/llamalad7/mixinextras/sugar/ref/LocalRef#get()Ljava/lang/Object;": 1,
          "java/nio/file/Files#exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/nio/file/Files#newBufferedWriter(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/BufferedWriter;": 1,
          "java/util/Map#of()Ljava/util/Map;": 1,
          "java/util/Random#nextFloat()F": 1,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "me/shedaniel/autoconfig/ConfigHolder#save()V": 1,
          "net/fabricmc/fabric/api/event/player/AttackBlockCallback#EVENT": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/particle/SingleQuadParticle$Layer#TRANSLUCENT": 1,
          "net/minecraft/core/Vec3i#getX()I": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 2,
          "net/minecraft/locale/Language#getInstance()Lnet/minecraft/locale/Language;": 1,
          "net/minecraft/resources/Identifier#toString()Ljava/lang/String;": 2
        },
        "runs": [
          {
            "class": "randommcsomethin/fallingleaves/config/ConfigDefaults",
            "method": "useCustomCherryImplementation",
            "desc": "(Lnet/minecraft/resources/Identifier;)Z",
            "value": "0"
          },
          {
            "class": "randommcsomethin/fallingleaves/config/ConfigDefaults",
            "method": "spawnBreakingLeaves",
            "desc": "(Lnet/minecraft/resources/Identifier;)Z",
            "value": "1"
          },
          {
            "class": "randommcsomethin/fallingleaves/util/LeafUtil",
            "method": "isLeafBlock",
            "desc": "(Lnet/minecraft/world/level/block/Block;Z)Z",
            "value": "0"
          },
          {
            "class": "randommcsomethin/fallingleaves/config/FallingLeavesConfig",
            "method": "getLeafSize",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "randommcsomethin/fallingleaves/config/FallingLeavesConfig",
            "method": "getBaseLeafSpawnChance",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "randommcsomethin/fallingleaves/config/FallingLeavesConfig",
            "method": "getBaseConiferLeafSpawnChance",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "randommcsomethin/fallingleaves/config/FallingLeavesConfig",
            "method": "getSnowflakeSpawnChance",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "randommcsomethin/fallingleaves/math/SmoothNoise",
            "method": "smoothstep",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "randommcsomethin/fallingleaves/math/SmoothNoise",
            "method": "getLeftNoise",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "randommcsomethin/fallingleaves/math/SmoothNoise",
            "method": "getRightNoise",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "randommcsomethin/fallingleaves/math/SmoothNoise",
            "method": "getLerp",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "randommcsomethin/fallingleaves/math/SmoothNoise",
            "method": "getNoise",
            "desc": "()F",
            "value": "0f"
          }
        ],
        "insns": 652
      },
      "verdict": "partly",
      "summary": "2 of 8 listening patch sites land on a Horizon hook (25%); of 12 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "fallingtree",
      "name": "FallingTree",
      "version": "25",
      "license": "LGPL-3.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "fr/rakambda/fallingtree/fabric/client/FallingTreeClient"
        },
        {
          "kind": "main",
          "value": "fr/rakambda/fallingtree/fabric/FallingTree"
        },
        {
          "kind": "modmenu",
          "value": "fr/rakambda/fallingtree/fabric/client/ModMenuImpl"
        }
      ],
      "mixin_configs": [
        "fallingtree.mixins.json"
      ],
      "depends": [],
      "classes": 185,
      "methods": 1300,
      "sites": [
        {
          "mixin": "fr/rakambda/fallingtree/fabric/mixin/AbstractBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour"
          ],
          "handler": "calcBlockBreakingDelta",
          "kind": "inject",
          "method": "getDestroyProgress",
          "at": "TAIL",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour#getDestroyProgress TAIL"
        },
        {
          "mixin": "fr/rakambda/fallingtree/fabric/mixin/LevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "updateNeighborsAlways",
          "kind": "inject",
          "method": "updateNeighborsAt",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#updateNeighborsAt TAIL"
        },
        {
          "mixin": "fr/rakambda/fallingtree/fabric/mixin/LevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "updateNeighborsExcept",
          "kind": "inject",
          "method": "updateNeighborsAtExceptFromFacing",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#updateNeighborsAtExceptFromFacing TAIL"
        }
      ],
      "listening": 3,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/server/level/ServerLevel#updateNeighborsAt @TAIL": 1,
        "net/minecraft/server/level/ServerLevel#updateNeighborsAtExceptFromFacing @TAIL": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour#getDestroyProgress @TAIL": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 2
        },
        {
          "class": "PlayerBlockBreakEvents",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "PlayerBlockBreakEvents$Before",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ServerLevelEvents",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ServerTickEvents",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 2
        },
        {
          "class": "ClientConfigurationNetworking",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientConfigurationNetworking$ConfigurationPayloadHandler",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientConfigurationNetworking$Context",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "ServerConfigurationConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerConfigurationConnectionEvents$Configure",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerConfigurationNetworking",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLevelEvents$Unload",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerTickEvents$EndTick",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        }
      ],
      "code": {
        "classes": 185,
        "features": {
          "command": 1,
          "network": 3,
          "events": 9,
          "mixin": 2
        },
        "events": [
          "BlockEvent",
          "BreakBlockEvent",
          "CustomPayloadEvent",
          "Event",
          "LevelEvent",
          "PlayerBlockBreakEvents",
          "PlayerEvent",
          "ServerTickEvent",
          "TickEvent"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 185,
        "methods": 832,
        "tried": 600,
        "completed": 254,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lfr/rakambda/fallingtree/common/config/enums/AdjacentStopMode;#clone()Ljava/lang/Object;": 1,
          "[Lfr/rakambda/fallingtree/common/config/enums/BreakMode;#clone()Ljava/lang/Object;": 1,
          "[Lfr/rakambda/fallingtree/common/config/enums/DamageRounding;#clone()Ljava/lang/Object;": 1,
          "[Lfr/rakambda/fallingtree/common/config/enums/DetectionMode;#clone()Ljava/lang/Object;": 1,
          "[Lfr/rakambda/fallingtree/common/config/enums/DurabilityMode;#clone()Ljava/lang/Object;": 1,
          "[Lfr/rakambda/fallingtree/common/config/enums/MaxSizeAction;#clone()Ljava/lang/Object;": 1,
          "[Lfr/rakambda/fallingtree/common/config/enums/SneakMode;#clone()Ljava/lang/Object;": 1,
          "[Lfr/rakambda/fallingtree/common/tree/TreePartType;#clone()Ljava/lang/Object;": 1,
          "fr/rakambda/fallingtree/common/config/enums/BreakMode#ordinal()I": 1,
          "fr/rakambda/fallingtree/common/utils/BoundedList#size()I": 4,
          "fr/rakambda/fallingtree/common/wrapper/DirectionCompat#name()Ljava/lang/String;": 5,
          "fr/rakambda/fallingtree/common/wrapper/IBlockBreakEvent#getRaw()Ljava/lang/Object;": 1,
          "fr/rakambda/fallingtree/common/wrapper/IBlockPos#getRaw()Ljava/lang/Object;": 19,
          "fr/rakambda/fallingtree/common/wrapper/IComponent#getRaw()Ljava/lang/Object;": 5,
          "fr/rakambda/fallingtree/common/wrapper/IItemStack#getRaw()Ljava/lang/Object;": 4,
          "fr/rakambda/fallingtree/common/wrapper/ILevel#getRaw()Ljava/lang/Object;": 2,
          "fr/rakambda/fallingtree/common/wrapper/IPlayer#getRaw()Ljava/lang/Object;": 2,
          "fr/rakambda/fallingtree/common/wrapper/IServerLevel#getRaw()Ljava/lang/Object;": 2,
          "java/lang/Double#compare(DD)I": 1,
          "java/lang/Double#doubleToLongBits(D)J": 1,
          "java/lang/Float#floatToIntBits(F)I": 2,
          "java/nio/file/Files#exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/util/Arrays#stream([Ljava/lang/Object;)Ljava/util/stream/Stream;": 3,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 9,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 8,
          "java/util/function/BiFunction#apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 2,
          "net/minecraft/core/BlockPos#getX()I": 1,
          "net/minecraft/core/BlockPos#getY()I": 1,
          "net/minecraft/core/BlockPos#getZ()I": 1,
          "net/minecraft/core/BlockPos#hashCode()I": 1,
          "net/minecraft/core/BlockPos#immutable()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/BlockPos#offset(III)Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/Direction#name()Ljava/lang/String;": 4,
          "net/minecraft/core/Holder#getRegisteredName()Ljava/lang/String;": 2,
          "net/minecraft/core/Registry#get(Lnet/minecraft/resources/Identifier;)Ljava/util/Optional;": 1,
          "net/minecraft/core/Registry#get(Lnet/minecraft/tags/TagKey;)Ljava/util/Optional;": 4,
          "net/minecraft/core/Registry#getOptional(Lnet/minecraft/resources/Identifier;)Ljava/util/Optional;": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 2,
          "net/minecraft/network/FriendlyByteBuf#readBoolean()Z": 2,
          "net/minecraft/network/FriendlyByteBuf#readDouble()D": 2,
          "net/minecraft/network/FriendlyByteBuf#readInt()I": 2,
          "net/minecraft/network/FriendlyByteBuf#writeBoolean(Z)Lnet/minecraft/network/FriendlyByteBuf;": 2,
          "net/minecraft/network/FriendlyByteBuf#writeDouble(D)Lnet/minecraft/network/FriendlyByteBuf;": 2,
          "net/minecraft/network/FriendlyByteBuf#writeInt(I)Lnet/minecraft/network/FriendlyByteBuf;": 2,
          "net/minecraft/resources/Identifier#parse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 3,
          "net/minecraft/stats/Stats#ITEM_USED": 3,
          "net/minecraft/tags/ItemTags#AXES": 2,
          "net/minecraft/util/RandomSource#nextDouble()D": 1,
          "net/minecraft/world/entity/player/Player#addTag(Ljava/lang/String;)Z": 3,
          "net/minecraft/world/entity/player/Player#entityTags()Ljava/util/Set;": 3,
          "net/minecraft/world/entity/player/Player#getMainHandItem()Lnet/minecraft/world/item/ItemStack;": 3,
          "net/minecraft/world/entity/player/Player#getUUID()Ljava/util/UUID;": 3,
          "net/minecraft/world/entity/player/Player#isCreative()Z": 3,
          "net/minecraft/world/entity/player/Player#isCrouching()Z": 3,
          "net/minecraft/world/entity/player/Player#level()Lnet/minecraft/world/level/Level;": 3,
          "net/minecraft/world/entity/player/Player#removeTag(Ljava/lang/String;)Z": 3,
          "net/minecraft/world/item/ItemStack#EMPTY": 2,
          "net/minecraft/world/item/ItemStack#getDamageValue()I": 2,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 2,
          "net/minecraft/world/item/ItemStack#getMaxDamage()I": 2,
          "net/minecraft/world/item/ItemStack#isDamageableItem()Z": 2,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 2,
          "net/minecraft/world/item/Items#AIR": 2,
          "net/minecraft/world/level/ChunkPos#x()I": 3,
          "net/minecraft/world/level/ChunkPos#z()I": 3,
          "net/minecraft/world/level/Level#getRandom()Lnet/minecraft/util/RandomSource;": 1,
          "net/minecraft/world/level/Level#hasChunk(II)Z": 1,
          "net/minecraft/world/level/Level#isClientSide()Z": 1,
          "net/minecraft/world/level/LevelAccessor#getRandom()Lnet/minecraft/util/RandomSource;": 2,
          "net/minecraft/world/level/LevelAccessor#hasChunk(II)Z": 2,
          "net/minecraft/world/level/LevelAccessor#isClientSide()Z": 2,
          "net/minecraft/world/level/block/Block#getName()Lnet/minecraft/network/chat/MutableComponent;": 3,
          "net/minecraft/world/level/block/Blocks#AIR": 3,
          "net/minecraft/world/level/block/Blocks#MANGROVE_ROOTS": 2,
          "net/minecraft/world/level/block/Blocks#OAK_LOG": 2,
          "net/minecraft/world/level/block/LeavesBlock#PERSISTENT": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 1,
          "net/minecraft/world/level/block/state/BlockState#isRandomlyTicking()Z": 1,
          "net/minecraft/world/level/chunk/ChunkAccess#getPos()Lnet/minecraft/world/level/ChunkPos;": 1,
          "net/minecraftforge/common/util/Result#DENY": 1,
          "net/minecraftforge/event/entity/player/PlayerEvent$BreakSpeed#getPosition()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraftforge/event/level/BlockEvent$BreakEvent#getPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraftforge/event/level/BlockEvent$BreakEvent#getResult()Lnet/minecraftforge/common/util/Result;": 1,
          "net/neoforged/neoforge/event/entity/player/PlayerEvent$BreakSpeed#isCanceled()Z": 1,
          "net/neoforged/neoforge/event/level/BlockEvent$NeighborNotifyEvent#getLevel()Lnet/minecraft/world/level/LevelAccessor;": 1,
          "net/neoforged/neoforge/event/level/LevelEvent$Unload#getLevel()Lnet/minecraft/world/level/LevelAccessor;": 1,
          "net/neoforged/neoforge/event/level/block/BreakBlockEvent#getPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/neoforged/neoforge/event/level/block/BreakBlockEvent#isCanceled()Z": 1
        },
        "runs": [
          {
            "class": "fr/rakambda/fallingtree/common/tree/breaking/InstantaneousTreeBreakingHandler",
            "method": "getInstance",
            "desc": "(Lfr/rakambda/fallingtree/common/FallingTreeCommon;)Lfr/rakambda/fallingtree/common/tree/breaking/InstantaneousTreeBreakingHandler;",
            "value": "obj#0"
          },
          {
            "class": "fr/rakambda/fallingtree/fabric/common/wrapper/BlockWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/fabric/common/wrapper/BlockWrapper",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/ToolConfiguration",
            "method": "getAllowed",
            "desc": "()Ljava/util/List;",
            "value": "obj#80"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/ToolConfiguration",
            "method": "getDenied",
            "desc": "()Ljava/util/List;",
            "value": "obj#87"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/ToolConfiguration",
            "method": "isIgnoreTools",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/ToolConfiguration",
            "method": "getDamageMultiplicand",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/ToolConfiguration",
            "method": "getDamageRounding",
            "desc": "()Lfr/rakambda/fallingtree/common/config/enums/DamageRounding;",
            "value": "obj#66"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/ToolConfiguration",
            "method": "getSpeedMultiplicand",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/ToolConfiguration",
            "method": "isForceToolUsage",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/ToolConfiguration",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/ToolConfiguration",
            "method": "canEqual",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/leaf/LeafBreakingSchedule",
            "method": "getRemainingTicks",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/leaf/LeafBreakingSchedule",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/leaf/LeafBreakingSchedule",
            "method": "canEqual",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/leaf/LeafBreakingSchedule",
            "method": "hashCode",
            "desc": "()I",
            "value": "6061"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "getTrees",
            "desc": "()Lfr/rakambda/fallingtree/common/config/real/TreeConfiguration;",
            "value": "obj#192"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "getTools",
            "desc": "()Lfr/rakambda/fallingtree/common/config/real/ToolConfiguration;",
            "value": "obj#252"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "getPlayer",
            "desc": "()Lfr/rakambda/fallingtree/common/config/real/PlayerConfiguration;",
            "value": "obj#282"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "getEnchantment",
            "desc": "()Lfr/rakambda/fallingtree/common/config/real/EnchantmentConfiguration;",
            "value": "obj#310"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "isBreakInCreative",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "isLootInCreative",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "getNotificationMode",
            "desc": "()Lfr/rakambda/fallingtree/common/config/enums/NotificationMode;",
            "value": "obj#233"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "canEqual",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "getEnchantment",
            "desc": "()Lfr/rakambda/fallingtree/common/config/IEnchantmentConfiguration;",
            "value": "obj#585"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "getPlayer",
            "desc": "()Lfr/rakambda/fallingtree/common/config/IPlayerConfiguration;",
            "value": "obj#607"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "getTools",
            "desc": "()Lfr/rakambda/fallingtree/common/config/IToolConfiguration;",
            "value": "obj#627"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/Configuration",
            "method": "getTrees",
            "desc": "()Lfr/rakambda/fallingtree/common/config/ITreeConfiguration;",
            "value": "obj#637"
          },
          {
            "class": "fr/rakambda/fallingtree/neoforge/common/wrapper/ItemWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/neoforge/common/wrapper/ItemWrapper",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/network/ConfigurationPacket$ConfigurationPacketBuilder",
            "method": "dedicated",
            "desc": "(Z)Lfr/rakambda/fallingtree/common/network/ConfigurationPacket$ConfigurationPacketBuilder;",
            "value": "obj#716"
          },
          {
            "class": "fr/rakambda/fallingtree/common/network/ConfigurationPacket$ConfigurationPacketBuilder",
            "method": "speedMultiplicand",
            "desc": "(D)Lfr/rakambda/fallingtree/common/network/ConfigurationPacket$ConfigurationPacketBuilder;",
            "value": "obj#717"
          },
          {
            "class": "fr/rakambda/fallingtree/common/network/ConfigurationPacket$ConfigurationPacketBuilder",
            "method": "forceToolUsage",
            "desc": "(Z)Lfr/rakambda/fallingtree/common/network/ConfigurationPacket$ConfigurationPacketBuilder;",
            "value": "obj#718"
          },
          {
            "class": "fr/rakambda/fallingtree/common/network/ConfigurationPacket$ConfigurationPacketBuilder",
            "method": "breakMode",
            "desc": "(Lfr/rakambda/fallingtree/common/config/enums/BreakMode;)Lfr/rakambda/fallingtree/common/network/ConfigurationPacket$ConfigurationPacketBuilder;",
            "value": "obj#719"
          },
          {
            "class": "fr/rakambda/fallingtree/common/network/ConfigurationPacket$ConfigurationPacketBuilder",
            "method": "build",
            "desc": "()Lfr/rakambda/fallingtree/common/network/ConfigurationPacket;",
            "value": "obj#721"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/enums/BreakMode",
            "method": "isCheckLeavesAround",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/enums/BreakMode",
            "method": "isApplySpeedMultiplier",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/forge/common/wrapper/ItemWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/forge/common/wrapper/ItemWrapper",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/tree/TreePart",
            "method": "sequence",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/enums/DurabilityMode",
            "method": "isAllowAbort",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/forge/common/wrapper/BlockWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/forge/common/wrapper/BlockWrapper",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/PlayerConfiguration",
            "method": "getAllowedTags",
            "desc": "()Ljava/util/List;",
            "value": "obj#838"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/PlayerConfiguration",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/PlayerConfiguration",
            "method": "canEqual",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/PlayerConfiguration",
            "method": "hashCode",
            "desc": "()I",
            "value": "53851"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getAllowedLogs",
            "desc": "()Ljava/util/List;",
            "value": "obj#979"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getDeniedLogs",
            "desc": "()Ljava/util/List;",
            "value": "obj#996"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getAllowedLeaves",
            "desc": "()Ljava/util/List;",
            "value": "obj#1013"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getAllowedNonDecayLeaves",
            "desc": "()Ljava/util/List;",
            "value": "obj#1030"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getDeniedLeaves",
            "desc": "()Ljava/util/List;",
            "value": "obj#1047"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getBreakMode",
            "desc": "()Lfr/rakambda/fallingtree/common/config/enums/BreakMode;",
            "value": "obj#203"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getDetectionModeBiomeOverride",
            "desc": "()Ljava/util/Map;",
            "value": "obj#1094"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getMaxScanSize",
            "desc": "()I",
            "value": "500"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getMinSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getMaxSize",
            "desc": "()I",
            "value": "100"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getMaxLeafDistanceFromLog",
            "desc": "()I",
            "value": "15"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getMaxSizeAction",
            "desc": "()Lfr/rakambda/fallingtree/common/config/enums/MaxSizeAction;",
            "value": "obj#213"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getMinimumLeavesAroundRequired",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "isIncludePersistentLeavesInRequiredCount",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "isTreeBreaking",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "isLeavesBreaking",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getLeavesBreakingForceRadius",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "isAllowMixedLogs",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "isBreakNetherTreeWarts",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "isBreakMangroveRoots",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getSearchAreaRadius",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getAllowedAdjacentBlocks",
            "desc": "()Ljava/util/List;",
            "value": "obj#1336"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getAdjacentStopMode",
            "desc": "()Lfr/rakambda/fallingtree/common/config/enums/AdjacentStopMode;",
            "value": "obj#219"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "isSpawnItemsAtBreakPoint",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "getTrunkLootPercentage",
            "desc": "()F",
            "value": "1f"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/config/real/TreeConfiguration",
            "method": "canEqual",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/tree/breaking/ToolDamageHandler",
            "method": "getMaxBreakCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/tree/breaking/ToolDamageHandler",
            "method": "isPreserveTool",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/neoforge/common/wrapper/BlockWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/neoforge/common/wrapper/BlockWrapper",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/utils/CacheSpeed",
            "method": "isValid",
            "desc": "(Lfr/rakambda/fallingtree/common/wrapper/IBlockPos;)Z",
            "value": "1"
          },
          {
            "class": "fr/rakambda/fallingtree/common/utils/CacheSpeed",
            "method": "getSpeed",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "fr/rakambda/fallingtree/common/utils/CacheSpeed",
            "method": "getStartMillis",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/fabric/common/wrapper/BlockPosWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/tree/TreePartType",
            "method": "isBreakable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/tree/TreePartType",
            "method": "isEdge",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/tree/TreePartType",
            "method": "isIncludeInTree",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fr/rakambda/fallingtree/common/tree/TreePartType",
            "method": "isLog",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 15035
      },
      "verdict": "no",
      "summary": "none of its 3 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "farmersdelight",
      "name": "Farmer's Delight",
      "version": "26.3-3.6.30+refabricated",
      "license": "MIT License",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "vectorwing/farmersdelight/client/FarmersDelightClient"
        },
        {
          "kind": "fabric-datagen",
          "value": "vectorwing/farmersdelight/data/DataGenerators"
        },
        {
          "kind": "jei_mod_plugin",
          "value": "vectorwing/farmersdelight/integration/jei/JEIPlugin"
        },
        {
          "kind": "main",
          "value": "vectorwing/farmersdelight/FarmersDelight"
        },
        {
          "kind": "modmenu",
          "value": "vectorwing/farmersdelight/integration/modmenu/ModMenuCompat"
        },
        {
          "kind": "rei_client",
          "value": "vectorwing/farmersdelight/integration/rei/client/ClientREIPlugin"
        },
        {
          "kind": "rei_common",
          "value": "vectorwing/farmersdelight/integration/rei/CommonREIPlugin"
        },
        {
          "kind": "rrv_client",
          "value": "vectorwing/farmersdelight/integration/rrv/RRVPlugin"
        }
      ],
      "mixin_configs": [
        "farmersdelight.mixins.json"
      ],
      "depends": [],
      "classes": 368,
      "methods": 2286,
      "sites": [
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/CampfireBaleMixin",
          "targets": [
            "net/minecraft/world/level/block/CampfireBlock"
          ],
          "handler": "isFDSmokeSource",
          "kind": "inject",
          "method": "isSmokeSource",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/CampfireBlock#isSmokeSource HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/CuttingBoardDispenserMixin",
          "targets": [
            "net/minecraft/world/level/block/DispenserBlock"
          ],
          "handler": "onCuttingBoardDispenseFromInject",
          "kind": "inject",
          "method": "dispenseFrom",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/DispenserBlock;getDispenseMethod(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/core/dispenser/DispenseItemBehavior;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/DispenserBlock#dispenseFrom INVOKE"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/NourishmentAlwaysEatMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "alwaysEatUnderNourishmentEffect",
          "kind": "inject",
          "method": "canEat",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#canEat HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/PlacePumpkinPieMixin",
          "targets": [
            "net/minecraft/world/item/Item"
          ],
          "handler": "usePumpkinPie",
          "kind": "inject",
          "method": "useOn",
          "at": "TAIL",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/Item#useOn TAIL"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/RopeFenceConnectionMixin",
          "targets": [
            "net/minecraft/world/level/block/FenceBlock"
          ],
          "handler": "denyConnectionToRopeFenceGate",
          "kind": "inject",
          "method": "connectsTo",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/FenceBlock#connectsTo HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/RopeFenceConnectionMixin",
          "targets": [
            "net/minecraft/world/level/block/FenceBlock"
          ],
          "handler": "denyConnectionToRopeFence",
          "kind": "inject",
          "method": "isSameFence",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/FenceBlock#isSameFence HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/VillagersTargetRichSoilMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor"
          ],
          "handler": "detectModdedFarmland",
          "kind": "wrap-operation",
          "method": "doTick",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/ImmutableSet;contains(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/datafix/ItemStackComponentizationFixMixin",
          "targets": [
            "net/minecraft/util/datafix/fixes/ItemStackComponentizationFix"
          ],
          "handler": "fixCustomStacks",
          "kind": "inject",
          "method": "fixItemStack",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/datafix/fixes/ItemStackComponentizationFix#fixItemStack HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/datafix/V1460Mixin",
          "targets": [
            "net/minecraft/util/datafix/schemas/V1460"
          ],
          "handler": "registerFarmersDelightBlockEntities",
          "kind": "inject",
          "method": "registerBlockEntities",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/datafix/schemas/V1460#registerBlockEntities RETURN"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/datafix/V3818_3Mixin",
          "targets": [
            "net/minecraft/util/datafix/schemas/V3818_3"
          ],
          "handler": "addFDCustomComponents",
          "kind": "modify-arg",
          "method": "lambda$registerTypes$0",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/datafixers/DSL;optionalFieldsLazy(Ljava/util/Map;)Lcom/mojang/datafixers/types/templates/TypeTemplate;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/HangingSignEditScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/HangingSignEditScreen"
          ],
          "handler": "fdrf$fixSignTextures",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/HangingSignEditScreen#<init> TAIL"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/HumanoidMobRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/HumanoidMobRenderer"
          ],
          "handler": "fdrf$extractSkilletEntityRenderState",
          "kind": "inject",
          "method": "extractHumanoidRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/HumanoidMobRenderer#extractHumanoidRenderState TAIL"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/HumanoidModelMixin",
          "targets": [
            "net/minecraft/client/model/HumanoidModel"
          ],
          "handler": "farmersdelightrefabricated$setupSkilletThirdPersonAnim",
          "kind": "inject",
          "method": "setupAnim",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;useItemHand:Lnet/minecraft/world/InteractionHand;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/HumanoidModel#setupAnim FIELD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "fdrf$onItemUseFinished",
          "kind": "inject",
          "method": "finishUsingItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#finishUsingItem HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "fdrf$setBlock",
          "kind": "wrap-operation",
          "method": "removeBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "handleBackstabbingDamage",
          "kind": "modify-variable",
          "method": "hurtServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "handleKnifeKnockback",
          "kind": "modify-variable",
          "method": "knockback",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "fdrf$syncNaturalRegenerationGameRule",
          "kind": "inject",
          "method": "onGameRuleChanged",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#onGameRuleChanged HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "captureAttackStrengthScale",
          "kind": "inject",
          "method": "attack",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;getAttackStrengthScale(F)F",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#attack INVOKE"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "handleSkilletAttackSound",
          "kind": "inject",
          "method": "hurtServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#hurtServer HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/RecipeBookSettingsMixin",
          "targets": [
            "net/minecraft/stats/RecipeBookSettings"
          ],
          "handler": "fdrf$replaceFromCookingBook",
          "kind": "inject",
          "method": "replaceFrom",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/stats/RecipeBookSettings#replaceFrom TAIL"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/RecipeBookSettingsMixin",
          "targets": [
            "net/minecraft/stats/RecipeBookSettings"
          ],
          "handler": "fdrf$getCookingBookSettings",
          "kind": "inject",
          "method": "getSettings",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/stats/RecipeBookSettings#getSettings HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/RecipeBookSettingsMixin",
          "targets": [
            "net/minecraft/stats/RecipeBookSettings"
          ],
          "handler": "fdrf$updateCookingBookSettings",
          "kind": "inject",
          "method": "updateSettings",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/stats/RecipeBookSettings#updateSettings HEAD"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/RecipeManagerMixin",
          "targets": [
            "net/minecraft/world/item/crafting/RecipeManager"
          ],
          "handler": "fdrf$modifyRecipePropertySets",
          "kind": "inject",
          "method": "<clinit>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/crafting/RecipeManager#<clinit> TAIL"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/ServerRecipeBookMixin",
          "targets": [
            "net/minecraft/stats/ServerRecipeBook"
          ],
          "handler": "fdrf$sendInitialCategoryRecipeBook",
          "kind": "inject",
          "method": "sendInitialRecipeBook",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/network/ServerGamePacketListenerImpl;send(Lnet/minecraft/network/protocol/Packet;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/stats/ServerRecipeBook#sendInitialRecipeBook INVOKE"
        },
        {
          "mixin": "vectorwing/farmersdelight/common/mixin/refabricated/SignEditScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/SignEditScreen"
          ],
          "handler": "fdrf$fixSignTextures",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/SignEditScreen#<init> TAIL"
        }
      ],
      "listening": 17,
      "accessors": 10,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/gui/screens/inventory/HangingSignEditScreen#<init> @TAIL": 1,
        "net/minecraft/client/gui/screens/inventory/SignEditScreen#<init> @TAIL": 1,
        "net/minecraft/client/renderer/entity/HumanoidMobRenderer#extractHumanoidRenderState @TAIL": 1,
        "net/minecraft/server/MinecraftServer#onGameRuleChanged @HEAD": 1,
        "net/minecraft/stats/RecipeBookSettings#getSettings @HEAD": 1,
        "net/minecraft/stats/RecipeBookSettings#replaceFrom @TAIL": 1,
        "net/minecraft/stats/RecipeBookSettings#updateSettings @HEAD": 1,
        "net/minecraft/util/datafix/fixes/ItemStackComponentizationFix#fixItemStack @HEAD": 1,
        "net/minecraft/util/datafix/schemas/V1460#registerBlockEntities @RETURN": 1,
        "net/minecraft/world/entity/player/Player#canEat @HEAD": 1,
        "net/minecraft/world/entity/player/Player#hurtServer @HEAD": 1,
        "net/minecraft/world/item/Item#useOn @TAIL": 1,
        "net/minecraft/world/item/ItemStack#finishUsingItem @HEAD": 1,
        "net/minecraft/world/item/crafting/RecipeManager#<clinit> @TAIL": 1,
        "net/minecraft/world/level/block/CampfireBlock#isSmokeSource @HEAD": 1,
        "net/minecraft/world/level/block/FenceBlock#connectsTo @HEAD": 1,
        "net/minecraft/world/level/block/FenceBlock#isSameFence @HEAD": 1
      },
      "wanted_calls": {
        "com/google/common/collect/ImmutableSet#contains @INVOKE (wrap-operation)": 1,
        "com/mojang/datafixers/DSL#optionalFieldsLazy @INVOKE (modify-arg)": 1,
        "net/minecraft/client/model/HumanoidModel#setupAnim @FIELD": 1,
        "net/minecraft/stats/ServerRecipeBook#sendInitialRecipeBook @INVOKE": 1,
        "net/minecraft/world/entity/LivingEntity#hurtServer @HEAD (modify-variable)": 1,
        "net/minecraft/world/entity/LivingEntity#knockback @HEAD (modify-variable)": 1,
        "net/minecraft/world/entity/player/Player#attack @INVOKE": 1,
        "net/minecraft/world/level/Level#setBlock @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/DispenserBlock#dispenseFrom @INVOKE": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 11
        },
        {
          "class": "ConventionalItemTags",
          "horizon": "",
          "note": "",
          "classes": 10
        },
        {
          "class": "FabricTagsProvider",
          "horizon": "",
          "note": "",
          "classes": 8
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 6
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 5
        },
        {
          "class": "BlockApiLookup",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "FabricDynamicRegistryProvider",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "FabricDynamicRegistryProvider$Entries",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ItemStorage",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ItemVariant",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "SingleSlotStorage",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 3
        },
        {
          "class": "FabricTagsProvider$BlockTagsProvider",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "FlammableBlockRegistry",
          "horizon": "content:registries",
          "note": "a registry the jar's data declares",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "CustomIngredientSerializer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "DefaultCustomIngredients",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "DefaultItemComponentEvents",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "DefaultItemComponentEvents$ModifyCallback",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "DefaultItemComponentEvents$ModifyContext",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FabricModelProvider",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ResourceCondition",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 2
        },
        {
          "class": "SingleStackStorage",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "UseBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "UseEntityCallback",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "BiomeModifications",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BiomeSelectionContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BlockTransformerHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPreAttackCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTooltipComponentCallback",
          "horizon": "hook:tooltip_component",
          "note": "a tooltip component is drawn",
          "classes": 1
        },
        {
          "class": "ContactInformation",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ConventionalBlockTags",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomIngredient",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DataGeneratorEntrypoint",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ExtendedMenuProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ExtendedMenuType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ExtendedMenuType$ExtendedFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricAdvancementProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricBlockEntityTypeBuilder",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FabricBlockEntityTypeBuilder$Factory",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FabricBlockLootSubProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricCreativeModeTab",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack$Factory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack$RegistryDependentFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricPackOutput",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricParticleTypes",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricRecipeProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricSoundsProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricSoundsProvider$SoundExporter",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricTagsProvider$EntityTypeTagsProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricTagsProvider$ItemTagsProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemTooltipCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LandPathTypeRegistry",
          "horizon": "content:registries",
          "note": "a registry the jar's data declares",
          "classes": 1
        },
        {
          "class": "LandPathTypeRegistry$DynamicPathTypeProvider",
          "horizon": "content:registries",
          "note": "a registry the jar's data declares",
          "classes": 1
        },
        {
          "class": "LootTableEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LootTableEvents$Modify",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LootTableEvents$ModifyDrops",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry$PendingParticleProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "RecipeSynchronization",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceConditionType",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceConditions",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SimpleFabricLootTableSubProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SlottedStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SoundTypeBuilder",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SoundTypeBuilder$RegistrationBuilder",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "StoragePreconditions",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SynchronizedRecipes",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 368,
        "features": {
          "block-behaviour": 41,
          "block-shape": 1,
          "item-behaviour": 13,
          "block-entity": 9,
          "menu": 1,
          "entity": 1,
          "screen": 5,
          "renderer": 3,
          "recipe": 2,
          "effect": 2,
          "particle": 3,
          "network": 4,
          "events": 5,
          "mixin": 36
        },
        "events": [
          "ClientPreAttackCallback",
          "Event",
          "ServerPlayerEvents",
          "UseBlockCallback",
          "UseEntityCallback"
        ],
        "examples": {
          "AbstractStoveBlock": [
            "burnEntitySteppingOnStove",
            "createStoveTicker",
            "extinguish",
            "getBlockPathType",
            "ignite",
            "isStoveTopCovered",
            "stepOn",
            "tryToExtinguish",
            "tryToIgnite",
            "tryToPlaceFoodItem",
            "useItemOn"
          ],
          "BasketBlock": [
            "getAnalogOutputSignal",
            "getTicker",
            "hasAnalogOutputSignal",
            "makeHollowCubeShape",
            "neighborChanged",
            "newBlockEntity",
            "useWithoutItem"
          ],
          "BuddingBushBlock": [
            "canGrowPastMaxAge",
            "canSurvive",
            "entityInside",
            "getAge",
            "getAgeProperty",
            "getBaseSeedId",
            "getGrowthSpeed",
            "getMaxAge",
            "getStateForAge",
            "growPastMaxAge",
            "isMaxAge",
            "isRandomlyTicking",
            "mayPlaceOn",
            "randomTick"
          ],
          "BuddingTomatoBlock": [
            "canGrowPastMaxAge",
            "canSurvive",
            "entityInside",
            "getAge",
            "getAgeProperty",
            "getBaseSeedId",
            "getBonemealAgeIncrease",
            "getGrowthSpeed",
            "getMaxAge",
            "getStateForAge",
            "growPastMaxAge",
            "isBonemealSuccess",
            "isMaxAge",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "mayPlaceOn",
            "performBonemeal",
            "randomTick"
          ],
          "CabbageBlock": [
            "getBaseSeedId"
          ],
          "CabinetBlock": [
            "affectNeighborsAfterRemoval",
            "getAnalogOutputSignal",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "tick",
            "useWithoutItem"
          ],
          "CeilingHangingCanvasSignBlock": [
            "getBackgroundColor"
          ],
          "ConsumableItem": [
            "affectConsumer",
            "finishUsingItem"
          ],
          "CookingPotBlock": [
            "affectNeighborsAfterRemoval",
            "getAnalogOutputSignal",
            "getTicker",
            "getTrayState",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "useItemOn"
          ],
          "CookingPotItem": [
            "getServingCount",
            "getTooltipImage",
            "isBarVisible"
          ],
          "CuttingBoardBlock": [
            "affectNeighborsAfterRemoval",
            "canSurvive",
            "getAnalogOutputSignal",
            "hasAnalogOutputSignal",
            "init",
            "isPossibleToRespawnInThis",
            "newBlockEntity",
            "spawnCuttingParticles",
            "useItemOn"
          ],
          "DogFoodItem": [
            "affectConsumer",
            "finishUsingItem",
            "init",
            "interactLivingEntity"
          ],
          "FeastBlock": [
            "canSurvive",
            "getAnalogOutputSignal",
            "getMaxServings",
            "getServingItem",
            "getServingsProperty",
            "hasAnalogOutputSignal",
            "takeServing",
            "useItemOn"
          ],
          "FuelBlockItem": [
            "getBurnTime"
          ],
          "FuelItem": [
            "getBurnTime"
          ],
          "GleamingSaladBlock": [
            "canSurvive",
            "getAnalogOutputSignal",
            "getMaxServings",
            "getServingItem",
            "getServingsProperty",
            "hasAnalogOutputSignal",
            "takeServing",
            "useItemOn"
          ],
          "HangingTomatoBlock": [
            "canClimbBlock",
            "canSurvive",
            "climbRopeAbove",
            "destroyAndPlaceRope",
            "getAgeProperty",
            "getBaseSeedId",
            "getBonemealAgeIncrease",
            "getClimbingState",
            "getGrowthSpeed",
            "getMaxAge",
            "getStateForAge",
            "hasGoodCropConditions",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "onRemove",
            "performBonemeal",
            "placeRope",
            "playerDestroy",
            "randomTick",
            "tick",
            "useItemOn",
            "useWithoutItem"
          ],
          "HorseFeedItem": [
            "init",
            "interactLivingEntity"
          ],
          "KnifeItem": [
            "canBeEnchantedWith",
            "createAttributes",
            "init",
            "useOn"
          ],
          "ModItems$1": [
            "registerBlocks"
          ],
          "MushroomColonyBlock": [
            "canSurvive",
            "getAgeProperty",
            "getBonemealAgeIncrease",
            "getMaxAge",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "mayPlaceOn",
            "performBonemeal",
            "randomTick",
            "useItemOn"
          ],
          "MushroomColonyItem": [
            "getPlacementState"
          ],
          "OnionBlock": [
            "getBaseSeedId"
          ],
          "OrganicCompostBlock": [
            "getAnalogOutputSignal",
            "getMaxCompostingStage",
            "hasAnalogOutputSignal",
            "isRandomlyTicking",
            "randomTick"
          ],
          "PieBlock": [
            "buildShapes",
            "canSurvive",
            "consumeBite",
            "cutSlice",
            "getAnalogOutputSignal",
            "getMaxBites",
            "getPieSliceItem",
            "hasAnalogOutputSignal",
            "useItemOn",
            "useWithoutItem"
          ],
          "RiceBaleBlock": [
            "fallOn",
            "getFireSpreadSpeed",
            "getFlammability"
          ],
          "RiceBlock": [
            "canPlaceLiquid",
            "canSurvive",
            "getAge",
            "getAgeProperty",
            "getBonemealAgeIncrease",
            "getMaxAge",
            "isBonemealSuccess",
            "isSupportingRiceUpper",
            "isValidBonemealTarget",
            "mayPlaceOn",
            "performBonemeal",
            "placeLiquid",
            "randomTick",
            "withAge"
          ],
          "RiceItem": [
            "useOn"
          ],
          "RicePaniclesBlock": [
            "canSurvive",
            "getAgeProperty",
            "getBaseSeedId",
            "getBonemealAgeIncrease",
            "getMaxAge",
            "mayPlaceOn"
          ],
          "RiceRollMedleyBlock": [
            "canSurvive",
            "getAnalogOutputSignal",
            "getMaxServings",
            "getServingItem",
            "getServingsProperty",
            "hasAnalogOutputSignal",
            "takeServing",
            "useItemOn"
          ],
          "RichSoilBlock": [
            "boostPlant",
            "convertMushroomToColony",
            "init",
            "randomTick",
            "tryBoostingPlantsAboveAndBelow"
          ],
          "RichSoilFarmlandBlock": [
            "canSurvive",
            "fallOn",
            "isNearWater",
            "randomTick",
            "tick",
            "turnToRichSoil"
          ],
          "RopeBlock": [
            "getStateWithConnections",
            "tieToAnythingValid",
            "tieToRopeAndWalls",
            "useItemOn",
            "useWithoutItem"
          ],
          "RopeFenceBlock": [
            "connectsTo",
            "isSameFence",
            "useItemOn"
          ],
          "RopeFenceGateBlock": [
            "isWall"
          ],
          "RopeItem": [
            "mustSurvive",
            "updatePlacementContext"
          ],
          "RotatedFeastBlock": [
            "canSurvive",
            "getAnalogOutputSignal",
            "getMaxServings",
            "getServingItem",
            "getServingsProperty",
            "hasAnalogOutputSignal",
            "takeServing",
            "useItemOn"
          ],
          "RottenTomatoItem": [
            "asProjectile",
            "use"
          ],
          "SafetyNetBlock": [
            "fallOn"
          ],
          "SandyShrubBlock": [
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "mayPlaceOn",
            "performBonemeal"
          ],
          "SkilletBlock": [
            "getSkilletCookingTime",
            "getTicker",
            "getTrayState",
            "newBlockEntity",
            "useItemOn"
          ],
          "SkilletItem": [
            "allowComponentsUpdateAnimation",
            "canBeEnchantedWith",
            "compareComponents",
            "createAttributes",
            "finishUsingItem",
            "getClientPlayerHack",
            "getCookingRecipe",
            "getUseDuration",
            "isBarVisible",
            "isPlayerNearHeatSource",
            "mineBlock",
            "onUseTick",
            "place",
            "postHurtEnemy",
            "releaseUsing",
            "use"
          ],
          "StandingCanvasSignBlock": [
            "getBackgroundColor"
          ],
          "StoveBlock": [
            "burnEntitySteppingOnStove",
            "createStoveTicker",
            "extinguish",
            "getBlockPathType",
            "getTicker",
            "ignite",
            "isStoveTopCovered",
            "newBlockEntity",
            "stepOn",
            "tryToExtinguish",
            "tryToIgnite",
            "tryToPlaceFoodItem",
            "useItemOn"
          ],
          "StrawBaleBlock": [
            "getFireSpreadSpeed",
            "getFlammability"
          ],
          "TatamiBlock": [
            "setPlacedBy"
          ],
          "TatamiHalfMatBlock": [
            "canSurvive"
          ],
          "TatamiMatBlock": [
            "canSurvive",
            "getDirectionToOther",
            "playerWillDestroy",
            "setPlacedBy"
          ],
          "TomatoBlock": [
            "canClimbBlock",
            "canSurvive",
            "climbRopeAbove",
            "destroyAndPlaceRope",
            "getAgeProperty",
            "getBaseSeedId",
            "getBonemealAgeIncrease",
            "getClimbingState",
            "getGrowthSpeed",
            "getMaxAge",
            "getStateForAge",
            "hasGoodCropConditions",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "playerDestroy",
            "randomTick",
            "tick",
            "useItemOn",
            "useWithoutItem"
          ],
          "TomatoVineBlock": [
            "attemptRopeClimb",
            "canClimbBlock",
            "canSurvive",
            "climbRopeAbove",
            "destroyAndPlaceRope",
            "getAgeProperty",
            "getBaseSeedId",
            "getBonemealAgeIncrease",
            "getClimbingState",
            "getGrowthSpeed",
            "getMaxAge",
            "getStateForAge",
            "hasGoodCropConditions",
            "isRandomlyTicking",
            "isValidBonemealTarget",
            "performBonemeal",
            "playerDestroy",
            "randomTick",
            "tick",
            "useItemOn",
            "useWithoutItem"
          ],
          "WallCanvasSignBlock": [
            "getBackgroundColor"
          ],
          "WallHangingCanvasSignBlock": [
            "getBackgroundColor"
          ],
          "WildCropBlock": [
            "getFireSpreadSpeed",
            "getFlammability",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "mayPlaceOn",
            "performBonemeal"
          ],
          "WildRiceBlock": [
            "canPlaceLiquid",
            "canSurvive",
            "isBonemealSuccess",
            "isValidBonemealTarget",
            "mayPlaceOn",
            "performBonemeal",
            "setPlacedBy"
          ]
        }
      },
      "interp": {
        "classes": 368,
        "methods": 1358,
        "tried": 600,
        "completed": 172,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lvectorwing/farmersdelight/common/block/state/CookingPotSupport;#clone()Ljava/lang/Object;": 1,
          "[Lvectorwing/farmersdelight/common/crafting/CookingPotBookCategory;#clone()Ljava/lang/Object;": 2,
          "[Lvectorwing/farmersdelight/common/mixin/refabricated/RecipeBookTypeMixin;#clone()Ljava/lang/Object;": 1,
          "[Lvectorwing/farmersdelight/common/mixin/refabricated/SearchRecipeBookCategoryMixin;#clone()Ljava/lang/Object;": 1,
          "[Lvectorwing/farmersdelight/common/utility/ShapeUtils$RotationAmount;#clone()Ljava/lang/Object;": 1,
          "[Lvectorwing/farmersdelight/refabricated/ItemAbility;#clone()Ljava/lang/Object;": 1,
          "[Lvectorwing/farmersdelight/refabricated/mlconfigs/ConfigType;#clone()Ljava/lang/Object;": 1,
          "cc/cassian/rrv/api/recipe/ReliableClientRecipe$RecipeTransferMap#linkSlots(II)V": 1,
          "cc/cassian/rrv/common/recipe/inventory/RecipeViewMenu$SlotDefinition#addItemSlot(III)V": 2,
          "cc/cassian/rrv/common/recipe/inventory/RecipeViewMenu$SlotFillContext#bindSlot(ILcc/cassian/rrv/common/recipe/inventory/SlotContent;)V": 1,
          "com/google/common/base/Supplier#get()Ljava/lang/Object;": 3,
          "com/google/gson/JsonElement#isJsonObject()Z": 2,
          "com/mojang/blaze3d/vertex/PoseStack#translate(DDD)V": 1,
          "java/util/List#hashCode()I": 1,
          "java/util/List#of(Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/concurrent/CompletableFuture#get()Ljava/lang/Object;": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 26,
          "java/util/stream/IntStream#range(II)Ljava/util/stream/IntStream;": 1,
          "java/util/stream/Stream#empty()Ljava/util/stream/Stream;": 1,
          "me/shedaniel/clothconfig2/api/ConfigBuilder#entryBuilder()Lme/shedaniel/clothconfig2/api/ConfigEntryBuilder;": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayNetworking$Context#player()Lnet/minecraft/client/player/LocalPlayer;": 1,
          "net/fabricmc/fabric/api/datagen/v1/provider/FabricDynamicRegistryProvider$Entries#add(Lnet/minecraft/resources/ResourceKey;Ljava/lang/Object;)Lnet/minecraft/core/Holder;": 2,
          "net/fabricmc/fabric/api/event/lifecycle/v1/ServerLifecycleEvents#SERVER_STARTING": 1,
          "net/fabricmc/fabric/api/event/player/UseBlockCallback#EVENT": 2,
          "net/fabricmc/fabric/api/event/player/UseEntityCallback#EVENT": 1,
          "net/fabricmc/fabric/api/item/v1/DefaultItemComponentEvents#MODIFY": 1,
          "net/fabricmc/fabric/api/loot/v3/LootTableEvents#MODIFY": 1,
          "net/fabricmc/fabric/api/recipe/v1/ingredient/CustomIngredientSerializer#register(Lnet/fabricmc/fabric/api/recipe/v1/ingredient/CustomIngredientSerializer;)V": 1,
          "net/fabricmc/fabric/api/tag/convention/v2/ConventionalBlockTags#ROPES": 1,
          "net/fabricmc/fabric/api/tag/convention/v2/ConventionalItemTags#SHEAR_TOOLS": 1,
          "net/fabricmc/fabric/api/transfer/v1/item/ItemStorage#SIDED": 2,
          "net/fabricmc/fabric/api/transfer/v1/item/base/SingleStackStorage#<init>()V": 1,
          "net/fabricmc/fabric/api/transfer/v1/storage/StoragePreconditions#notBlankNotNegative(Lnet/fabricmc/fabric/api/transfer/v1/storage/TransferVariant;J)V": 4,
          "net/minecraft/advancements/predicates/StatePropertiesPredicate$Builder#properties()Lnet/minecraft/advancements/predicates/StatePropertiesPredicate$Builder;": 2,
          "net/minecraft/advancements/triggers/ConsumeItemTrigger$TriggerInstance#usedItem(Lnet/minecraft/core/HolderGetter;Lnet/minecraft/world/level/ItemLike;)Lnet/minecraft/advancements/triggers/Criterion;": 1,
          "net/minecraft/advancements/triggers/ItemUsedOnLocationTrigger$TriggerInstance#placedBlock(Lnet/minecraft/core/HolderGetter;Lnet/minecraft/world/level/block/Block;)Lnet/minecraft/advancements/triggers/Criterion;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 4,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList#scrollBarX()I": 1,
          "net/minecraft/client/gui/screens/Screen#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "net/minecraft/client/gui/screens/inventory/AbstractRecipeBookScreen#extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/inventory/AbstractRecipeBookScreen#init()V": 1,
          "net/minecraft/client/renderer/blockentity/state/BlockEntityRenderState#<init>()V": 6,
          "net/minecraft/client/renderer/item/CuboidItemModelWrapper$Unbaked#resolveDependencies(Lnet/minecraft/client/resources/model/ResolvableModel$Resolver;)V": 1,
          "net/minecraft/client/renderer/state/level/BlockBreakingRenderState#blockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/core/BlockPos#above()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/BlockPos#below()Lnet/minecraft/core/BlockPos;": 6,
          "net/minecraft/core/BlockPos#offset(III)Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/HolderLookup$Provider#getOrThrow(Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/core/Holder$Reference;": 1,
          "net/minecraft/core/HolderLookup$Provider#lookupOrThrow(Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/core/HolderLookup$RegistryLookup;": 1,
          "net/minecraft/core/NonNullList#clear()V": 1,
          "net/minecraft/core/NonNullList#createWithCapacity(I)Lnet/minecraft/core/NonNullList;": 2,
          "net/minecraft/core/NonNullList#get(I)Ljava/lang/Object;": 1,
          "net/minecraft/core/NonNullList#set(ILjava/lang/Object;)Ljava/lang/Object;": 1,
          "net/minecraft/core/NonNullList#size()I": 1,
          "net/minecraft/core/Registry#getOptional(Lnet/minecraft/resources/Identifier;)Ljava/util/Optional;": 1,
          "net/minecraft/core/component/DataComponents#CONSUMABLE": 1,
          "net/minecraft/core/component/DataComponents#TOOL": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 2,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK_ENTITY_TYPE": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 5,
          "net/minecraft/core/registries/BuiltInRegistries#SOUND_EVENT": 1,
          "net/minecraft/core/registries/Registries#BLOCK": 1,
          "net/minecraft/core/registries/Registries#ENCHANTMENT": 1,
          "net/minecraft/core/registries/Registries#ENTITY_TYPE": 1,
          "net/minecraft/core/registries/Registries#LOOT_TABLE": 4,
          "net/minecraft/core/registries/Registries#PLACED_FEATURE": 1,
          "net/minecraft/core/registries/Registries#RECIPE": 3,
          "net/minecraft/data/recipes/RecipeProvider#<init>(Lnet/minecraft/data/worldgen/BootstrapContext;Lnet/minecraft/data/worldgen/BootstrapContext;)V": 1,
          "net/minecraft/data/tags/BlockItemTagAppender#add([Lnet/minecraft/references/BlockItemId;)Lnet/minecraft/data/tags/BlockItemTagAppender;": 1,
          "net/minecraft/data/tags/BlockItemTagAppender#add([Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/data/tags/BlockItemTagAppender;": 1,
          "net/minecraft/data/tags/BlockItemTagAppender#addAll(Lnet/minecraft/world/level/block/ColorCollection;)Lnet/minecraft/data/tags/BlockItemTagAppender;": 1,
          "net/minecraft/data/tags/BlockItemTagAppender#addOptionalTag(Lnet/minecraft/tags/TagKey;)Lnet/minecraft/data/tags/BlockItemTagAppender;": 1,
          "net/minecraft/data/tags/BlockItemTagAppender#forceAddTag(Lnet/minecraft/tags/TagKey;)Lnet/minecraft/data/tags/TagAppender;": 1,
          "net/minecraft/network/RegistryFriendlyByteBuf#readUtf()Ljava/lang/String;": 1,
          "net/minecraft/network/RegistryFriendlyByteBuf#readUtf(I)Ljava/lang/String;": 1,
          "net/minecraft/network/chat/CommonComponents#GUI_DONE": 1,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket#create(Lnet/minecraft/world/level/block/entity/BlockEntity;)Lnet/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket;": 2,
          "net/minecraft/references/BlockItemId#block()Lnet/minecraft/resources/ResourceKey;": 1,
          "net/minecraft/tags/BlockTags#CLIMBABLE": 1,
          "net/minecraft/tags/BlockTags#MINEABLE_WITH_AXE": 1,
          "net/minecraft/tags/BlockTags#WALLS": 1,
          "net/minecraft/tags/DamageTypeTags#IS_FIRE": 1,
          "net/minecraft/tags/EnchantmentTags#NON_TREASURE": 1,
          "net/minecraft/tags/TagBuilder#addOptionalElement(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/tags/TagBuilder;": 1,
          "net/minecraft/world/Container#canPlaceItem(ILnet/minecraft/world/item/ItemStack;)Z": 1,
          "net/minecraft/world/Container#getContainerSize()I": 1,
          "net/minecraft/world/Container#getItem(I)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/Container#getMaxStackSize()I": 1,
          "net/minecraft/world/Container#setItem(ILnet/minecraft/world/item/ItemStack;)V": 1,
          "net/minecraft/world/ContainerHelper#saveAllItems(Lnet/minecraft/world/level/storage/ValueOutput;Lnet/minecraft/core/NonNullList;)V": 1,
          "net/minecraft/world/Containers#updateNeighboursAfterDestroy(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V": 1,
          "net/minecraft/world/InteractionResult#PASS": 1,
          "net/minecraft/world/damagesource/DamageSource#getDirectEntity()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/world/effect/MobEffects#REGENERATION": 1,
          "net/minecraft/world/entity/EquipmentSlot#MAINHAND": 1,
          "net/minecraft/world/entity/LivingEntity#extinguishFire()V": 1,
          "net/minecraft/world/entity/LivingEntity#getKillCredit()Lnet/minecraft/world/entity/LivingEntity;": 2,
          "net/minecraft/world/entity/LivingEntity#heal(F)V": 1,
          "net/minecraft/world/entity/item/ItemEntity#getItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/player/Player#hasEffect(Lnet/minecraft/core/Holder;)Z": 1,
          "net/minecraft/world/entity/player/Player#isOnFire()Z": 1,
          "net/minecraft/world/entity/player/Player#isSpectator()Z": 1,
          "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrowableItemProjectile#onHit(Lnet/minecraft/world/phys/HitResult;)V": 1,
          "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrowableItemProjectile#onHitEntity(Lnet/minecraft/world/phys/EntityHitResult;)V": 1,
          "net/minecraft/world/inventory/ChestMenu#threeRows(ILnet/minecraft/world/entity/player/Inventory;Lnet/minecraft/world/Container;)Lnet/minecraft/world/inventory/ChestMenu;": 1,
          "net/minecraft/world/inventory/ContainerData#get(I)I": 1,
          "net/minecraft/world/item/BlockItem#isBarVisible(Lnet/minecraft/world/item/ItemStack;)Z": 1,
          "net/minecraft/world/item/BlockItem#releaseUsing(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/LivingEntity;I)Z": 1,
          "net/minecraft/world/item/ItemInstance#typeHolder()Lnet/minecraft/core/Holder;": 1,
          "net/minecraft/world/item/ItemStack#EMPTY": 5,
          "net/minecraft/world/item/ItemStack#copy()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/item/ItemStack#getCount()I": 3,
          "net/minecraft/world/item/ItemStack#getMaxStackSize()I": 2,
          "net/minecraft/world/item/ItemStack#has(Lnet/minecraft/core/component/DataComponentType;)Z": 1,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 7,
          "net/minecraft/world/item/ItemStack#onCraftedBy(Lnet/minecraft/world/entity/player/Player;I)V": 3,
          "net/minecraft/world/item/ItemStackTemplate#create()Lnet/minecraft/world/item/ItemStack;": 3,
          "net/minecraft/world/item/component/ItemAttributeModifiers#builder()Lnet/minecraft/world/item/component/ItemAttributeModifiers$Builder;": 2,
          "net/minecraft/world/item/context/BlockPlaceContext#getClickedFace()Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/world/item/context/BlockPlaceContext#getClickedPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/item/context/BlockPlaceContext#getLevel()Lnet/minecraft/world/level/Level;": 3,
          "net/minecraft/world/item/context/BlockPlaceContext#getPlayer()Lnet/minecraft/world/entity/player/Player;": 1,
          "net/minecraft/world/item/context/UseOnContext#getItemInHand()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/item/context/UseOnContext#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/item/crafting/Ingredient#items()Ljava/util/stream/Stream;": 2,
          "net/minecraft/world/item/crafting/PlacementInfo#create(Ljava/util/List;)Lnet/minecraft/world/item/crafting/PlacementInfo;": 1,
          "net/minecraft/world/item/crafting/RecipeHolder#value()Lnet/minecraft/world/item/crafting/Recipe;": 3,
          "net/minecraft/world/item/enchantment/Enchantments#FIRE_ASPECT": 1,
          "net/minecraft/world/item/enchantment/Enchantments#SWEEPING_EDGE": 2,
          "net/minecraft/world/level/Level#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/world/level/Level#getRandom()Lnet/minecraft/util/RandomSource;": 1,
          "net/minecraft/world/level/Level#isClientSide()Z": 1,
          "net/minecraft/world/level/LevelAccessor#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 2,
          "net/minecraft/world/level/LevelReader#getRawBrightness(Lnet/minecraft/core/BlockPos;I)I": 1,
          "net/minecraft/world/level/WorldGenLevel#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/block/BaseEntityBlock#createBlockStateDefinition(Lnet/minecraft/world/level/block/state/StateDefinition$Builder;)V": 2,
          "net/minecraft/world/level/block/CropBlock#getBonemealAgeIncrease(Lnet/minecraft/world/level/Level;)I": 1,
          "net/minecraft/world/level/block/DispenserBlock#DISPENSER_REGISTRY": 1,
          "net/minecraft/world/level/block/HorizontalDirectionalBlock#FACING": 1,
          "net/minecraft/world/level/block/RenderShape#MODEL": 3,
          "net/minecraft/world/level/block/entity/BlockEntity#setChanged()V": 4,
          "net/minecraft/world/level/block/entity/BlockEntityTypes#SIGN": 1,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#loadAdditional(Lnet/minecraft/world/level/storage/ValueInput;)V": 1,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#saveAdditional(Lnet/minecraft/world/level/storage/ValueOutput;)V": 1,
          "net/minecraft/world/level/block/state/BlockBehaviour$Properties#of()Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;": 1,
          "net/minecraft/world/level/block/state/BlockBehaviour$Properties#setId(Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;": 1,
          "net/minecraft/world/level/block/state/BlockState#canSurvive(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 1,
          "net/minecraft/world/level/block/state/BlockState#getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;": 22,
          "net/minecraft/world/level/block/state/BlockState#isSolidRender()Z": 1,
          "net/minecraft/world/level/block/state/StateDefinition$Builder#add([Lnet/minecraft/world/level/block/state/properties/Property;)Lnet/minecraft/world/level/block/state/StateDefinition$Builder;": 7,
          "net/minecraft/world/level/block/state/properties/BedPart#FOOT": 1,
          "net/minecraft/world/level/levelgen/GenerationStep$Decoration#VEGETAL_DECORATION": 1,
          "net/minecraft/world/level/storage/loot/LootPool#lootPool()Lnet/minecraft/world/level/storage/loot/LootPool$Builder;": 3,
          "net/minecraft/world/level/storage/loot/LootTable#lootTable()Lnet/minecraft/world/level/storage/loot/LootTable$Builder;": 5,
          "net/minecraft/world/level/storage/loot/parameters/LootContextParams#ATTACKING_ENTITY": 1,
          "net/neoforged/neoforge/client/gui/VanillaGuiLayers#PLAYER_HEALTH": 1,
          "new com/google/gson/JsonObject": 1,
          "new me/shedaniel/math/Point": 2,
          "new net/minecraft/client/gui/navigation/ScreenPosition": 1,
          "new net/minecraft/client/renderer/item/ItemStackRenderState": 2,
          "new net/minecraft/core/particles/ItemParticleOption": 1,
          "new net/minecraft/world/damagesource/DamageSource": 1,
          "new net/minecraft/world/item/ItemStack": 10,
          "new net/minecraft/world/item/ItemStackTemplate": 4,
          "new net/minecraft/world/phys/Vec2": 2,
          "new org/joml/Matrix4f": 1,
          "vectorwing/farmersdelight/common/block/AbstractStoveBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "vectorwing/farmersdelight/common/block/FeastBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "vectorwing/farmersdelight/common/block/OnionBlock#getAgeProperty()Lnet/minecraft/world/level/block/state/properties/IntegerProperty;": 1,
          "vectorwing/farmersdelight/common/block/PieBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "vectorwing/farmersdelight/common/block/RiceBaleBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "vectorwing/farmersdelight/common/block/RiceRollMedleyBlock#FACING": 1,
          "vectorwing/farmersdelight/common/block/RopeFenceGateBlock#FACING": 1,
          "vectorwing/farmersdelight/common/block/RopeFenceGateBlock#OPEN": 1,
          "vectorwing/farmersdelight/common/block/RotatedFeastBlock#SERVINGS": 1,
          "vectorwing/farmersdelight/common/block/TomatoBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "vectorwing/farmersdelight/common/block/TomatoBlock#isMaxAge(Lnet/minecraft/world/level/block/state/BlockState;)Z": 1,
          "vectorwing/farmersdelight/common/block/entity/Basket#getContainerSize()I": 1,
          "vectorwing/farmersdelight/common/block/entity/Basket#getItem(I)Lnet/minecraft/world/item/ItemStack;": 1,
          "vectorwing/farmersdelight/common/block/entity/SyncedBlockEntity#saveWithoutMetadata(Lnet/minecraft/core/HolderLookup$Provider;)Lnet/minecraft/nbt/CompoundTag;": 1,
          "vectorwing/farmersdelight/common/block/entity/SyncedBlockEntity#setRemoved()V": 1,
          "vectorwing/farmersdelight/common/block/entity/container/CookingPotMenu#getSlot(I)Lnet/minecraft/world/inventory/Slot;": 1,
          "vectorwing/farmersdelight/common/block/entity/container/CookingPotResultSlot#hasItem()Z": 1,
          "vectorwing/farmersdelight/common/block/entity/dispenser/CuttingBoardDispenseBehavior#setSuccess(Z)V": 2,
          "vectorwing/farmersdelight/common/crafting/CookingPotBookCategory#ordinal()I": 1,
          "vectorwing/farmersdelight/data/BlockTags#builder(Lnet/minecraft/tags/TagKey;)Lnet/minecraft/data/tags/BlockItemTagAppender;": 4,
          "vectorwing/farmersdelight/data/EntityTags#builder(Lnet/minecraft/tags/TagKey;)Lnet/minecraft/data/tags/TagAppender;": 1,
          "vectorwing/farmersdelight/refabricated/ItemAbility#name()Ljava/lang/String;": 1,
          "vectorwing/farmersdelight/refabricated/ItemAbility#ordinal()I": 1,
          "vectorwing/farmersdelight/refabricated/inventory/ItemStackHandler#getSlots()Ljava/util/List;": 3
        },
        "runs": [
          {
            "class": "vectorwing/farmersdelight/common/crafting/CookingPotRecipe",
            "method": "containerOverride",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#32"
          },
          {
            "class": "vectorwing/farmersdelight/common/crafting/CookingPotRecipe",
            "method": "showNotification",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/crafting/CookingPotRecipe",
            "method": "getExperience",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "vectorwing/farmersdelight/common/crafting/CookingPotRecipe",
            "method": "getCookTime",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/crafting/CookingPotRecipe",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/client/categories/CuttingCategory",
            "method": "getDisplayHeight",
            "desc": "()I",
            "value": "89"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/client/categories/CuttingCategory",
            "method": "getDisplayWidth",
            "desc": "(Lvectorwing/farmersdelight/integration/rei/display/CuttingDisplay;)I",
            "value": "155"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/client/categories/CuttingCategory",
            "method": "getDisplayWidth",
            "desc": "(Lme/shedaniel/rei/api/common/display/Display;)I",
            "value": "155"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/RiceRollMedleyBlock",
            "method": "getMaxServings",
            "desc": "()I",
            "value": "8"
          },
          {
            "class": "vectorwing/farmersdelight/client/recipe/CookingPotRecipeDisplay",
            "method": "duration",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/client/recipe/CookingPotRecipeDisplay",
            "method": "experience",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "vectorwing/farmersdelight/refabricated/inventory/InvWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/CanvasRugBlock",
            "method": "propagatesSkylightDown",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/container/CookingPotResultSlot",
            "method": "mayPlace",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/CabinetBlockEntity",
            "method": "getContainerSize",
            "desc": "()I",
            "value": "27"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/display/CookingPotDisplay",
            "method": "getCookTime",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/display/CookingPotDisplay",
            "method": "getExperience",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/display/CookingPotDisplay",
            "method": "isShapeless",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/display/CookingPotDisplay",
            "method": "getWidth",
            "desc": "()I",
            "value": "3"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/display/CookingPotDisplay",
            "method": "getHeight",
            "desc": "()I",
            "value": "2"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rrv/cutting/CuttingClientRecipeType",
            "method": "getDisplayWidth",
            "desc": "()I",
            "value": "118"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rrv/cutting/CuttingClientRecipeType",
            "method": "getDisplayHeight",
            "desc": "()I",
            "value": "58"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rrv/cutting/CuttingClientRecipeType",
            "method": "getSlotCount",
            "desc": "()I",
            "value": "6"
          },
          {
            "class": "vectorwing/farmersdelight/refabricated/mlconfigs/fabric/values/EnumConfigValue",
            "method": "isValid",
            "desc": "(Ljava/lang/Enum;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/refabricated/mlconfigs/fabric/values/EnumConfigValue",
            "method": "isValid",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/inventory/CookingPotItemHandler",
            "method": "isItemValid",
            "desc": "(ILnet/minecraft/world/item/ItemStack;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/inventory/CookingPotItemHandler",
            "method": "getSlotLimit",
            "desc": "(I)I",
            "value": "99"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/FeastBlock",
            "method": "getMaxServings",
            "desc": "()I",
            "value": "4"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/FeastBlock",
            "method": "hasAnalogOutputSignal",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/FeastBlock",
            "method": "isPathfindable",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/pathfinder/PathComputationType;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/StoveBlockEntity",
            "method": "getInventorySlotCount",
            "desc": "()I",
            "value": "6"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/MushroomColonyBlock",
            "method": "getMaxAge",
            "desc": "()I",
            "value": "3"
          },
          {
            "class": "vectorwing/farmersdelight/common/effect/ComfortEffect",
            "method": "shouldApplyEffectTickThisTick",
            "desc": "(II)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/data/builder/CuttingBoardRecipeBuilder",
            "method": "addSound",
            "desc": "(Lnet/minecraft/core/Holder;)Lvectorwing/farmersdelight/data/builder/CuttingBoardRecipeBuilder;",
            "value": "obj#274"
          },
          {
            "class": "vectorwing/farmersdelight/data/builder/CuttingBoardRecipeBuilder",
            "method": "unlockedBy",
            "desc": "(Ljava/lang/String;Lnet/minecraft/advancements/triggers/Criterion;)Lnet/minecraft/data/recipes/RecipeBuilder;",
            "value": "obj#275"
          },
          {
            "class": "vectorwing/farmersdelight/data/builder/CuttingBoardRecipeBuilder",
            "method": "setNamespace",
            "desc": "(Ljava/lang/String;)Lvectorwing/farmersdelight/data/builder/CuttingBoardRecipeBuilder;",
            "value": "obj#276"
          },
          {
            "class": "vectorwing/farmersdelight/data/builder/CuttingBoardRecipeBuilder",
            "method": "salvaging",
            "desc": "()Lvectorwing/farmersdelight/data/builder/CuttingBoardRecipeBuilder;",
            "value": "obj#277"
          },
          {
            "class": "vectorwing/farmersdelight/data/builder/CuttingBoardRecipeBuilder",
            "method": "group",
            "desc": "(Ljava/lang/String;)Lnet/minecraft/data/recipes/RecipeBuilder;",
            "value": "obj#278"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rrv/cooking_pot/CookingPotClientRecipeType",
            "method": "getDisplayWidth",
            "desc": "()I",
            "value": "132"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rrv/cooking_pot/CookingPotClientRecipeType",
            "method": "getDisplayHeight",
            "desc": "()I",
            "value": "70"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rrv/cooking_pot/CookingPotClientRecipeType",
            "method": "getSlotCount",
            "desc": "()I",
            "value": "8"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rrv/cooking_pot/CookingPotClientRecipe",
            "method": "getType",
            "desc": "()Lcc/cassian/rrv/api/recipe/ReliableClientRecipeType;",
            "value": "obj#293"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rrv/cooking_pot/CookingPotClientRecipe",
            "method": "supportsItemTransfer",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rrv/cooking_pot/CookingPotClientRecipe",
            "method": "canTransferToScreen",
            "desc": "(Lnet/minecraft/client/gui/screens/inventory/AbstractContainerScreen;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/crafting/ingredient/ItemAbilityIngredient",
            "method": "test",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/crafting/ingredient/ItemAbilityIngredient",
            "method": "requiresTesting",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/item/RopeItem",
            "method": "mustSurvive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/registry/ModRecipeTypes",
            "method": "registerRecipeType",
            "desc": "(Ljava/lang/String;)Lnet/minecraft/world/item/crafting/RecipeType;",
            "value": "obj#339"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/CuttingBoardBlock",
            "method": "isPossibleToRespawnInThis",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/CuttingBoardBlock",
            "method": "hasAnalogOutputSignal",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/PieBlock",
            "method": "getMaxBites",
            "desc": "()I",
            "value": "4"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/PieBlock",
            "method": "hasAnalogOutputSignal",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/PieBlock",
            "method": "isPathfindable",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/pathfinder/PathComputationType;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/refabricated/mlconfigs/fabric/values/ObjectConfigValue",
            "method": "isValid",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/common/item/component/consumable/HealConsumeEffect",
            "method": "amount",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/AbstractStoveBlockEntity$1",
            "method": "getSlotLimit",
            "desc": "(I)I",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/refabricated/mlconfigs/fabric/FabricConfigListScreen$ConfigList",
            "method": "getRowWidth",
            "desc": "()I",
            "value": "260"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/RiceBaleBlock",
            "method": "getFireSpreadSpeed",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;)I",
            "value": "60"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/RiceBaleBlock",
            "method": "getFlammability",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;)I",
            "value": "20"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/CuttingBoardBlockEntity",
            "method": "getMaxStackSize",
            "desc": "()I",
            "value": "99"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/CuttingBoardBlockEntity",
            "method": "isItemCarvingBoard",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/client/categories/DecompositionCategory",
            "method": "getDisplayHeight",
            "desc": "()I",
            "value": "102"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/client/categories/DecompositionCategory",
            "method": "getDisplayWidth",
            "desc": "(Lvectorwing/farmersdelight/integration/rei/display/DecompositionDisplay;)I",
            "value": "150"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/client/categories/DecompositionCategory",
            "method": "getFixedDisplaysPerPage",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/integration/rei/client/categories/DecompositionCategory",
            "method": "getDisplayWidth",
            "desc": "(Lme/shedaniel/rei/api/common/display/Display;)I",
            "value": "150"
          },
          {
            "class": "vectorwing/farmersdelight/common/item/component/ItemStackWrapper",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/item/component/ItemStackWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/mixin/refabricated/LivingEntityMixin",
            "method": "handleBackstabbingDamage",
            "desc": "(FLnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/damagesource/DamageSource;)F",
            "value": "0f"
          },
          {
            "class": "vectorwing/farmersdelight/refabricated/mlconfigs/ConfigType",
            "method": "isSynced",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/TomatoBlock",
            "method": "isRandomlyTicking",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/TomatoBlock",
            "method": "getMaxAge",
            "desc": "()I",
            "value": "3"
          },
          {
            "class": "vectorwing/farmersdelight/refabricated/inventory/ItemStackHandler",
            "method": "getSlotLimit",
            "desc": "(I)I",
            "value": "99"
          },
          {
            "class": "vectorwing/farmersdelight/refabricated/inventory/ItemStackHandler",
            "method": "isItemValid",
            "desc": "(ILnet/minecraft/world/item/ItemStack;)Z",
            "value": "1"
          },
          {
            "class": "vectorwing/farmersdelight/integration/jei/category/CuttingRecipeCategory",
            "method": "getWidth",
            "desc": "()I",
            "value": "117"
          },
          {
            "class": "vectorwing/farmersdelight/integration/jei/category/CuttingRecipeCategory",
            "method": "getHeight",
            "desc": "()I",
            "value": "57"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/container/CookingPotMealSlot",
            "method": "mayPlace",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/block/entity/container/CookingPotMealSlot",
            "method": "mayPickup",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "vectorwing/farmersdelight/common/mixin/refabricated/FarmersDelightMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          }
        ],
        "insns": 3246
      },
      "verdict": "no",
      "summary": "none of its 26 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "fastipping",
      "name": "Fast IP Ping",
      "version": "1.0.12",
      "license": "LGPLv3",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "main",
          "value": "me/fallenbreath/fastipping/FastIpPingMod::fabricInit"
        }
      ],
      "mixin_configs": [
        "fastipping.mixins.json"
      ],
      "depends": [],
      "classes": 6,
      "methods": 9,
      "sites": [
        {
          "mixin": "me/fallenbreath/fastipping/mixins/AddressResolverMixin",
          "targets": [
            "net/minecraft/client/multiplayer/resolver/ServerAddressResolver"
          ],
          "handler": "setHostnameToIpAddressToAvoidReversedDnsLookupOnGetHostname",
          "kind": "modify-variable",
          "method": "lambda$static$0",
          "at": "INVOKE_ASSIGN",
          "at_target": "Ljava/net/InetAddress;getByName(Ljava/lang/String;)Ljava/net/InetAddress;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "java/net/InetAddress#getByName @INVOKE_ASSIGN (modify-variable)": 1
      },
      "api": [],
      "code": {
        "classes": 6,
        "features": {
          "mixin": 3
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 6,
        "methods": 2,
        "tried": 2,
        "completed": 0,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "net/minecraft/client/multiplayer/resolver/ServerAddress#getHost()Ljava/lang/String;": 1
        },
        "runs": [],
        "insns": 6
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "fastquit",
      "name": "FastQuit",
      "version": "3.1.5+mc26.2",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/contaria/fastquit/FastQuit"
        },
        {
          "kind": "modmenu",
          "value": "me/contaria/fastquit/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "fastquit.mixins.json"
      ],
      "depends": [
        "cloth-config"
      ],
      "classes": 26,
      "methods": 101,
      "sites": [
        {
          "mixin": "me/contaria/fastquit/mixin/WorldListWidgetWorldEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry"
          ],
          "handler": "fastquit$editSavingWorld",
          "kind": "wrap-operation",
          "method": "editWorld",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/storage/LevelStorageSource;validateAndCreateAccess(Ljava/lang/String;)Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/WorldListWidgetWorldEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry"
          ],
          "handler": "fastquit$editSavingWorld",
          "kind": "wrap-operation",
          "method": "recreateWorld",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/storage/LevelStorageSource;validateAndCreateAccess(Ljava/lang/String;)Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/WorldListWidgetWorldEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry"
          ],
          "handler": "fastquit$deleteSavingWorld",
          "kind": "wrap-operation",
          "method": "doDeleteWorld",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/storage/LevelStorageSource;createAccess(Ljava/lang/String;)Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/WorldListWidgetWorldEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry"
          ],
          "handler": "fastquit$openWorldListWhenFailed",
          "kind": "inject",
          "method": "editWorld",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/toasts/SystemToast;onWorldAccessFailure(Lnet/minecraft/client/Minecraft;Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#editWorld INVOKE"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/WorldListWidgetWorldEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry"
          ],
          "handler": "fastquit$renderSavingTimeOnWorldList",
          "kind": "inject",
          "method": "extractContent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/StringWidget;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#extractContent INVOKE"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/EditWorldScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/EditWorldScreen"
          ],
          "handler": "waitForSaveOnBackupOrOptimizeWorld_cancellable",
          "kind": "inject",
          "method": "lambda$new$12",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/EditWorldScreen#lambda$new$12 HEAD"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/EditWorldScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/EditWorldScreen"
          ],
          "handler": "waitForSaveOnBackupOrOptimizeWorld_cancellable",
          "kind": "inject",
          "method": "lambda$new$7",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/EditWorldScreen#lambda$new$7 HEAD"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/OptimizeWorldScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/OptimizeWorldScreen"
          ],
          "handler": "fastquit$waitForSaveOnOptimizeWorld",
          "kind": "inject",
          "method": "create",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/OptimizeWorldScreen#create HEAD"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/WorldOpenFlowsMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows"
          ],
          "handler": "fastquit$waitForSaveOnWorldLoad_cancellable",
          "kind": "inject",
          "method": "openWorld",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#openWorld HEAD"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/LevelStorageAccessMixin",
          "targets": [
            "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess"
          ],
          "handler": "fastquit$waitForSaveOnBackup",
          "kind": "inject",
          "method": "makeWorldBackup",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#makeWorldBackup HEAD"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/LevelStorageAccessMixin",
          "targets": [
            "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess"
          ],
          "handler": "fastquit$editSavingWorldName",
          "kind": "inject",
          "method": "renameLevel",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#renameLevel TAIL"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/LevelStorageAccessMixin",
          "targets": [
            "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess"
          ],
          "handler": "fastquit$deleteSavingWorld",
          "kind": "inject",
          "method": "deleteLevel",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#deleteLevel TAIL"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/LevelStorageAccessMixin",
          "targets": [
            "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess"
          ],
          "handler": "fastquit$checkSessionClose",
          "kind": "wrap-with-condition",
          "method": "close",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/DirectoryLock;close()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/LevelStorageAccessMixin",
          "targets": [
            "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess"
          ],
          "handler": "fastquit$warnIfUnSynchronizedSessionAccess",
          "kind": "inject",
          "method": "checkLock",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#checkLock HEAD"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "fastquit$finishSaving",
          "kind": "inject",
          "method": "onServerExit",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#onServerExit RETURN"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "fastquit$cancelPlayerSavingIfDeleted",
          "kind": "wrap-with-condition",
          "method": "stopServer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/players/PlayerList;saveAll()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "fastquit$cancelSavingIfDeleted",
          "kind": "inject",
          "method": "saveAllChunks",
          "at": "INVOKE",
          "at_target": "Ljava/util/Iterator;next()Ljava/lang/Object;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#saveAllChunks INVOKE"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "fastquit$cancelSavingIfDeleted",
          "kind": "inject",
          "method": "saveAllChunks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;saveDataTag(Lnet/minecraft/world/level/storage/WorldData;Ljava/util/UUID;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#saveAllChunks INVOKE"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "fastquit",
          "kind": "redirect",
          "method": "disconnect",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/server/IntegratedServer;isShutdown()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "fastquit$doNotOpenSaveScreen",
          "kind": "wrap-operation",
          "method": "disconnect",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;setScreenAndShow(Lnet/minecraft/client/gui/screens/Screen;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "fastquit$waitForSaveOnShutdown",
          "kind": "inject",
          "method": "exitWorldAndClose",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;disconnectWithProgressScreen()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#exitWorldAndClose INVOKE"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "fastquit$waitForSaveOnCrash",
          "kind": "inject",
          "method": "crash",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#crash HEAD"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/RealmsUploadWorldPackerMixin",
          "targets": [
            "com/mojang/realmsclient/client/worldupload/RealmsUploadWorldPacker"
          ],
          "handler": "fastquit$waitForSaveOnRealmsUpload",
          "kind": "inject",
          "method": "tarGzipArchive",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/realmsclient/client/worldupload/RealmsUploadWorldPacker#tarGzipArchive HEAD"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/LevelStorageSourceMixin",
          "targets": [
            "net/minecraft/world/level/storage/LevelStorageSource"
          ],
          "handler": "fastquit$waitForSaveOnSessionCreation",
          "kind": "inject",
          "method": "validateAndCreateAccess",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/LevelStorageSource#validateAndCreateAccess HEAD"
        },
        {
          "mixin": "me/contaria/fastquit/mixin/LevelStorageSourceMixin",
          "targets": [
            "net/minecraft/world/level/storage/LevelStorageSource"
          ],
          "handler": "fastquit$addCurrentlySavingLevelsToWorldList",
          "kind": "inject",
          "method": "lambda$loadLevelSummaries$0",
          "at": "INVOKE",
          "at_target": "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/LevelStorageSource#lambda$loadLevelSummaries$0 INVOKE"
        }
      ],
      "listening": 12,
      "accessors": 6,
      "hooks": {},
      "wanted": {
        "com/mojang/realmsclient/client/worldupload/RealmsUploadWorldPacker#tarGzipArchive @HEAD": 1,
        "net/minecraft/client/Minecraft#crash @HEAD": 1,
        "net/minecraft/client/gui/screens/worldselection/EditWorldScreen#lambda$new$12 @HEAD": 1,
        "net/minecraft/client/gui/screens/worldselection/EditWorldScreen#lambda$new$7 @HEAD": 1,
        "net/minecraft/client/gui/screens/worldselection/OptimizeWorldScreen#create @HEAD": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#openWorld @HEAD": 1,
        "net/minecraft/server/MinecraftServer#onServerExit @RETURN": 1,
        "net/minecraft/world/level/storage/LevelStorageSource#validateAndCreateAccess @HEAD": 1,
        "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#checkLock @HEAD": 1,
        "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#deleteLevel @TAIL": 1,
        "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#makeWorldBackup @HEAD": 1,
        "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#renameLevel @TAIL": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Minecraft#exitWorldAndClose @INVOKE": 1,
        "net/minecraft/client/Minecraft#setScreenAndShow @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#editWorld @INVOKE": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#extractContent @INVOKE": 1,
        "net/minecraft/client/server/IntegratedServer#isShutdown @INVOKE (redirect)": 1,
        "net/minecraft/server/MinecraftServer#saveAllChunks @INVOKE": 2,
        "net/minecraft/server/players/PlayerList#saveAll @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/util/DirectoryLock#close @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/storage/LevelStorageSource#createAccess @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/storage/LevelStorageSource#lambda$loadLevelSummaries$0 @INVOKE": 1,
        "net/minecraft/world/level/storage/LevelStorageSource#validateAndCreateAccess @INVOKE (wrap-operation)": 2
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 26,
        "features": {
          "screen": 1,
          "mixin": 15
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 26,
        "methods": 30,
        "tried": 30,
        "completed": 9,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/contaria/fastquit/FastQuitConfig$ModCompat;#clone()Ljava/lang/Object;": 1,
          "[Lme/contaria/fastquit/FastQuitConfig$ShowSavingTime;#clone()Ljava/lang/Object;": 1,
          "java/util/Collections#singleton(Ljava/lang/Object;)Ljava/util/Set;": 2,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 5,
          "net/minecraft/client/gui/screens/GenericMessageScreen#init()V": 1,
          "net/minecraft/client/gui/screens/GenericMessageScreen#onClose()V": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;[Ljava/lang/Object;)Lnet/minecraft/network/chat/MutableComponent;": 1
        },
        "runs": [
          {
            "class": "me/contaria/fastquit/FastQuitConfig",
            "method": "allowMultipleServers",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/contaria/fastquit/WaitingScreen",
            "method": "shouldCloseOnEsc",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/contaria/fastquit/mixin/MinecraftServerMixin",
            "method": "isDeleted",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/contaria/fastquit/plugin/FastQuitMixinConfigPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          }
        ],
        "insns": 253
      },
      "verdict": "no",
      "summary": "none of its 25 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "ferritecore",
      "name": "FerriteCore",
      "version": "9.0.0",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [],
      "mixin_configs": [
        "ferritecore.accessors.mixin.json",
        "ferritecore.blockstatecache.mixin.json",
        "ferritecore.fastmap.mixin.json",
        "ferritecore.datacomponents.mixin.json",
        "ferritecore.threaddetec.mixin.json"
      ],
      "depends": [],
      "classes": 48,
      "methods": 213,
      "sites": [
        {
          "mixin": "malte0811/ferritecore/mixin/blockstatecache/BlockStateBaseMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase"
          ],
          "handler": "cacheStateHead",
          "kind": "inject",
          "method": "initCache",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache HEAD"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/blockstatecache/BlockStateBaseMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase"
          ],
          "handler": "cacheStateTail",
          "kind": "inject",
          "method": "initCache",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache TAIL"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/datacomponents/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "saveMemoryIfEmpty",
          "kind": "inject",
          "method": "applyPatch",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#applyPatch RETURN"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/datacomponents/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "saveMemoryIfEmpty",
          "kind": "inject",
          "method": "restorePatch",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#restorePatch RETURN"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/datacomponents/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "saveMemoryIfEmptyWithReturn",
          "kind": "inject",
          "method": "set",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#set RETURN"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/datacomponents/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "saveMemoryIfEmptyWithReturn",
          "kind": "inject",
          "method": "remove",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#remove RETURN"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateHolder"
          ],
          "handler": "setValueInternal",
          "kind": "overwrite",
          "method": "setValueInternal",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateHolder"
          ],
          "handler": "initializeNeighbors",
          "kind": "overwrite",
          "method": "initializeNeighbors",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateHolder"
          ],
          "handler": "redirectPropertyValueAccess",
          "kind": "redirect",
          "method": "getNullableValue",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/block/state/StateHolder;propertyValues:[Ljava/lang/Comparable;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateHolder"
          ],
          "handler": "redirectPropertyValueAccess",
          "kind": "redirect",
          "method": "lambda$getValues$0",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/block/state/StateHolder;propertyValues:[Ljava/lang/Comparable;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/StateDefinitionMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateDefinition"
          ],
          "handler": "initializeNeighborsMultiProp",
          "kind": "redirect",
          "method": "createMultiPropertyStates",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;forEach(Ljava/util/function/BiConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/StateDefinitionMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateDefinition"
          ],
          "handler": "skipSetNeighbors",
          "kind": "redirect",
          "method": "createSinglePropertyStates",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/StateHolder;initializeNeighbors([[Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/StateDefinitionMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateDefinition"
          ],
          "handler": "initSinglePropertyFastMap",
          "kind": "wrap-operation",
          "method": "createSinglePropertyStates",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/ImmutableList$Builder;build()Lcom/google/common/collect/ImmutableList;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "redirectBuildThreadingDetector",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> TAIL"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "redirectBuildThreadingDetector",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> TAIL"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "redirectBuildThreadingDetector",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> TAIL"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "acquire",
          "kind": "overwrite",
          "method": "acquire",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "release",
          "kind": "overwrite",
          "method": "release",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        }
      ],
      "listening": 9,
      "accessors": 29,
      "hooks": {},
      "wanted": {
        "net/minecraft/core/component/PatchedDataComponentMap#applyPatch @RETURN": 1,
        "net/minecraft/core/component/PatchedDataComponentMap#remove @RETURN": 1,
        "net/minecraft/core/component/PatchedDataComponentMap#restorePatch @RETURN": 1,
        "net/minecraft/core/component/PatchedDataComponentMap#set @RETURN": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache @HEAD": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache @TAIL": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#<init> @TAIL": 3
      },
      "wanted_calls": {
        "com/google/common/collect/ImmutableList$Builder#build @INVOKE (wrap-operation)": 1,
        "java/util/Map#forEach @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/StateHolder#initializeNeighbors @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/StateHolder#initializeNeighbors @OVERWRITE": 1,
        "net/minecraft/world/level/block/state/StateHolder#propertyValues:[Ljava/lang/Comparable; @FIELD (redirect)": 2,
        "net/minecraft/world/level/block/state/StateHolder#setValueInternal @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#acquire @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#release @OVERWRITE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvArray",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MappingResolver",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 48,
        "features": {
          "mixin": 14
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 48,
        "methods": 104,
        "tried": 104,
        "completed": 43,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lmalte0811/ferritecore/mixin/config/FerriteMixinConfig$LithiumSupportState;#clone()Ljava/lang/Object;": 1,
          "[Lmalte0811/ferritecore/util/SmallThreadingDetector$ThreadRole;#clone()Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/Reference2ObjectMap#isEmpty()Z": 2,
          "java/lang/Object#notifyAll()V": 1,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/concurrent/atomic/AtomicInteger#get()I": 1,
          "java/util/concurrent/atomic/AtomicInteger#incrementAndGet()I": 1,
          "java/util/function/BiPredicate#test(Ljava/lang/Object;Ljava/lang/Object;)Z": 1,
          "java/util/function/BooleanSupplier#getAsBoolean()Z": 1,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 2,
          "java/util/function/ToIntFunction#applyAsInt(Ljava/lang/Object;)I": 1,
          "malte0811/ferritecore/mixin/accessors/VoxelShapeAccess#hashCode()I": 3,
          "malte0811/ferritecore/mixin/config/FerriteMixinConfig$LithiumSupportState#ordinal()I": 1,
          "net/minecraft/util/Mth#isPowerOfTwo(I)Z": 1,
          "net/minecraft/world/level/block/state/properties/Property#getInternalIndex(Ljava/lang/Comparable;)I": 2,
          "org/spongepowered/asm/service/MixinService#getService()Lorg/spongepowered/asm/service/IMixinService;": 1
        },
        "runs": [
          {
            "class": "malte0811/ferritecore/mixin/config/FerriteConfig$Option",
            "method": "getDefaultValue",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "replaceIn",
            "desc": "(II)I",
            "value": "-1"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "toPartialMapIndex",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "getFactorToNext",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "getIndexIn",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "lowestNBits",
            "desc": "(B)I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "numValues",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "firstBitInValue",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "firstBitAfterValue",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/hash/VoxelShapeHash",
            "method": "equals",
            "desc": "(Lnet/minecraft/world/phys/shapes/VoxelShape;Lnet/minecraft/world/phys/shapes/VoxelShape;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/VoxelShapeHash",
            "method": "equals",
            "desc": "(Lmalte0811/ferritecore/mixin/accessors/VoxelShapeAccess;Lmalte0811/ferritecore/mixin/accessors/VoxelShapeAccess;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/VoxelShapeHash",
            "method": "isCubeShape",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/hash/VoxelShapeHash",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/ArrayVoxelShapeHash",
            "method": "equals",
            "desc": "(Lmalte0811/ferritecore/mixin/accessors/ArrayVSAccess;Lmalte0811/ferritecore/mixin/accessors/ArrayVSAccess;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/ArrayVoxelShapeHash",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/DiscreteVSHash",
            "method": "equals",
            "desc": "(Lnet/minecraft/world/phys/shapes/DiscreteVoxelShape;Lnet/minecraft/world/phys/shapes/DiscreteVoxelShape;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/DiscreteVSHash",
            "method": "equals",
            "desc": "(Lmalte0811/ferritecore/mixin/accessors/DiscreteVSAccess;Lmalte0811/ferritecore/mixin/accessors/DiscreteVSAccess;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/DiscreteVSHash",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "replaceIn",
            "desc": "(II)I",
            "value": "-1"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "toPartialMapIndex",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "getFactorToNext",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "mapFactor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "numValues",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/hash/SliceShapeHash",
            "method": "equals",
            "desc": "(Lmalte0811/ferritecore/mixin/accessors/SliceShapeAccess;Lmalte0811/ferritecore/mixin/accessors/SliceShapeAccess;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/SliceShapeHash",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          }
        ],
        "insns": 946
      },
      "verdict": "no",
      "summary": "none of its 18 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "ferritecore",
      "name": "FerriteCore",
      "version": "9.0.0",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [],
      "mixin_configs": [
        "ferritecore.accessors.mixin.json",
        "ferritecore.blockstatecache.mixin.json",
        "ferritecore.fastmap.mixin.json",
        "ferritecore.datacomponents.mixin.json",
        "ferritecore.threaddetec.mixin.json"
      ],
      "depends": [],
      "classes": 48,
      "methods": 213,
      "sites": [
        {
          "mixin": "malte0811/ferritecore/mixin/blockstatecache/BlockStateBaseMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase"
          ],
          "handler": "cacheStateHead",
          "kind": "inject",
          "method": "initCache",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache HEAD"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/blockstatecache/BlockStateBaseMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase"
          ],
          "handler": "cacheStateTail",
          "kind": "inject",
          "method": "initCache",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache TAIL"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/datacomponents/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "saveMemoryIfEmpty",
          "kind": "inject",
          "method": "applyPatch",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#applyPatch RETURN"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/datacomponents/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "saveMemoryIfEmpty",
          "kind": "inject",
          "method": "restorePatch",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#restorePatch RETURN"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/datacomponents/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "saveMemoryIfEmptyWithReturn",
          "kind": "inject",
          "method": "set",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#set RETURN"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/datacomponents/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "saveMemoryIfEmptyWithReturn",
          "kind": "inject",
          "method": "remove",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#remove RETURN"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateHolder"
          ],
          "handler": "setValueInternal",
          "kind": "overwrite",
          "method": "setValueInternal",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateHolder"
          ],
          "handler": "initializeNeighbors",
          "kind": "overwrite",
          "method": "initializeNeighbors",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateHolder"
          ],
          "handler": "redirectPropertyValueAccess",
          "kind": "redirect",
          "method": "getNullableValue",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/block/state/StateHolder;propertyValues:[Ljava/lang/Comparable;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateHolder"
          ],
          "handler": "redirectPropertyValueAccess",
          "kind": "redirect",
          "method": "lambda$getValues$0",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/block/state/StateHolder;propertyValues:[Ljava/lang/Comparable;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/StateDefinitionMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateDefinition"
          ],
          "handler": "initializeNeighborsMultiProp",
          "kind": "redirect",
          "method": "createMultiPropertyStates",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;forEach(Ljava/util/function/BiConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/StateDefinitionMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateDefinition"
          ],
          "handler": "skipSetNeighbors",
          "kind": "redirect",
          "method": "createSinglePropertyStates",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/StateHolder;initializeNeighbors([[Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/fastmap/StateDefinitionMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateDefinition"
          ],
          "handler": "initSinglePropertyFastMap",
          "kind": "wrap-operation",
          "method": "createSinglePropertyStates",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/ImmutableList$Builder;build()Lcom/google/common/collect/ImmutableList;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "redirectBuildThreadingDetector",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> TAIL"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "redirectBuildThreadingDetector",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> TAIL"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "redirectBuildThreadingDetector",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> TAIL"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "acquire",
          "kind": "overwrite",
          "method": "acquire",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "release",
          "kind": "overwrite",
          "method": "release",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        }
      ],
      "listening": 9,
      "accessors": 29,
      "hooks": {},
      "wanted": {
        "net/minecraft/core/component/PatchedDataComponentMap#applyPatch @RETURN": 1,
        "net/minecraft/core/component/PatchedDataComponentMap#remove @RETURN": 1,
        "net/minecraft/core/component/PatchedDataComponentMap#restorePatch @RETURN": 1,
        "net/minecraft/core/component/PatchedDataComponentMap#set @RETURN": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache @HEAD": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache @TAIL": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#<init> @TAIL": 3
      },
      "wanted_calls": {
        "com/google/common/collect/ImmutableList$Builder#build @INVOKE (wrap-operation)": 1,
        "java/util/Map#forEach @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/StateHolder#initializeNeighbors @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/StateHolder#initializeNeighbors @OVERWRITE": 1,
        "net/minecraft/world/level/block/state/StateHolder#propertyValues:[Ljava/lang/Comparable; @FIELD (redirect)": 2,
        "net/minecraft/world/level/block/state/StateHolder#setValueInternal @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#acquire @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#release @OVERWRITE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvArray",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MappingResolver",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 48,
        "features": {
          "mixin": 14
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 48,
        "methods": 104,
        "tried": 104,
        "completed": 43,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lmalte0811/ferritecore/mixin/config/FerriteMixinConfig$LithiumSupportState;#clone()Ljava/lang/Object;": 1,
          "[Lmalte0811/ferritecore/util/SmallThreadingDetector$ThreadRole;#clone()Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/Reference2ObjectMap#isEmpty()Z": 2,
          "java/lang/Object#notifyAll()V": 1,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/concurrent/atomic/AtomicInteger#get()I": 1,
          "java/util/concurrent/atomic/AtomicInteger#incrementAndGet()I": 1,
          "java/util/function/BiPredicate#test(Ljava/lang/Object;Ljava/lang/Object;)Z": 1,
          "java/util/function/BooleanSupplier#getAsBoolean()Z": 1,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 2,
          "java/util/function/ToIntFunction#applyAsInt(Ljava/lang/Object;)I": 1,
          "malte0811/ferritecore/mixin/accessors/VoxelShapeAccess#hashCode()I": 3,
          "malte0811/ferritecore/mixin/config/FerriteMixinConfig$LithiumSupportState#ordinal()I": 1,
          "net/minecraft/util/Mth#isPowerOfTwo(I)Z": 1,
          "net/minecraft/world/level/block/state/properties/Property#getInternalIndex(Ljava/lang/Comparable;)I": 2,
          "org/spongepowered/asm/service/MixinService#getService()Lorg/spongepowered/asm/service/IMixinService;": 1
        },
        "runs": [
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "replaceIn",
            "desc": "(II)I",
            "value": "-1"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "toPartialMapIndex",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "getFactorToNext",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "getIndexIn",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "lowestNBits",
            "desc": "(B)I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "numValues",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "firstBitInValue",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/BinaryFastMapKey",
            "method": "firstBitAfterValue",
            "desc": "()B",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "replaceIn",
            "desc": "(II)I",
            "value": "-1"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "toPartialMapIndex",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "getFactorToNext",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "mapFactor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/fastmap/CompactFastMapKey",
            "method": "numValues",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/mixin/config/FerriteConfig$Option",
            "method": "getDefaultValue",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/hash/VoxelShapeHash",
            "method": "equals",
            "desc": "(Lnet/minecraft/world/phys/shapes/VoxelShape;Lnet/minecraft/world/phys/shapes/VoxelShape;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/VoxelShapeHash",
            "method": "equals",
            "desc": "(Lmalte0811/ferritecore/mixin/accessors/VoxelShapeAccess;Lmalte0811/ferritecore/mixin/accessors/VoxelShapeAccess;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/VoxelShapeHash",
            "method": "isCubeShape",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "malte0811/ferritecore/hash/VoxelShapeHash",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/SliceShapeHash",
            "method": "equals",
            "desc": "(Lmalte0811/ferritecore/mixin/accessors/SliceShapeAccess;Lmalte0811/ferritecore/mixin/accessors/SliceShapeAccess;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/SliceShapeHash",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/ArrayVoxelShapeHash",
            "method": "equals",
            "desc": "(Lmalte0811/ferritecore/mixin/accessors/ArrayVSAccess;Lmalte0811/ferritecore/mixin/accessors/ArrayVSAccess;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/ArrayVoxelShapeHash",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/DiscreteVSHash",
            "method": "equals",
            "desc": "(Lnet/minecraft/world/phys/shapes/DiscreteVoxelShape;Lnet/minecraft/world/phys/shapes/DiscreteVoxelShape;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/DiscreteVSHash",
            "method": "equals",
            "desc": "(Lmalte0811/ferritecore/mixin/accessors/DiscreteVSAccess;Lmalte0811/ferritecore/mixin/accessors/DiscreteVSAccess;)Z",
            "value": "1"
          },
          {
            "class": "malte0811/ferritecore/hash/DiscreteVSHash",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          }
        ],
        "insns": 946
      },
      "verdict": "no",
      "summary": "none of its 18 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "firstperson",
      "name": "FirstPerson",
      "version": "2.7.3",
      "license": "tr7zw Protective License",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/tr7zw/firstperson/FirstPersonModelMod"
        },
        {
          "kind": "modmenu",
          "value": "dev/tr7zw/firstperson/fabric/FPModMenuProvider"
        }
      ],
      "mixin_configs": [
        "firstperson.mixins.json"
      ],
      "depends": [],
      "classes": 43,
      "methods": 171,
      "sites": [
        {
          "mixin": "dev/tr7zw/firstperson/mixins/CustomHeadLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/CustomHeadLayer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/CustomHeadLayer#submit HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/ElytraLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/WingsLayer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/WingsLayer#submit HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/FishingHookRenderer"
          ],
          "handler": "redirect",
          "kind": "redirect",
          "method": "getPlayerHandPos",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Options;getCameraType()Lnet/minecraft/client/CameraType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/FishingHookRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/FishingHookRenderer#submit HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/FishingHookRenderer"
          ],
          "handler": "getPlayerHandPosOffset",
          "kind": "inject",
          "method": "getPlayerHandPos",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/FishingHookRenderer#getPlayerHandPos RETURN"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/ItemInHandLayer"
          ],
          "handler": "renderArmWithItem",
          "kind": "inject",
          "method": "submitArmWithItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/ItemInHandLayer#submitArmWithItem HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/HeldItemRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer"
          ],
          "handler": "renderFirstPersonItem",
          "kind": "inject",
          "method": "submitArmWithItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/HeldItemRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer"
          ],
          "handler": "modifyInverseArmHeight",
          "kind": "modify-variable",
          "method": "submitArmWithItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/HumanoidModelMixin",
          "targets": [
            "net/minecraft/client/model/HumanoidModel"
          ],
          "handler": "setupAnim",
          "kind": "inject",
          "method": "setupAnim",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/HumanoidModel#setupAnim TAIL"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "checkIfCameraEntity",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/LivingEntityRenderer#extractRenderState HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/ModelPartMixin",
          "targets": [
            "net/minecraft/client/model/geom/ModelPart"
          ],
          "handler": "setPivot",
          "kind": "inject",
          "method": "setPos",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/geom/ModelPart#setPos RETURN"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "getItemBySlot",
          "kind": "inject",
          "method": "getItemBySlot",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#getItemBySlot HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/PlayerRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "extractRenderState",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/player/AvatarRenderer#extractRenderState TAIL"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/RenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "fpmExtractStart",
          "kind": "inject",
          "method": "extractEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#extractEntity HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/RenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "fpmExtractEnd",
          "kind": "inject",
          "method": "extractEntity",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#extractEntity TAIL"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/RenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "fpmSubmitStart",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/RenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "fpmSubmitEnd",
          "kind": "inject",
          "method": "submit",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit TAIL"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/StuckInBodyLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/StuckInBodyLayer"
          ],
          "handler": "disableStuckFeatureLayer",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/StuckInBodyLayer#submit HEAD"
        },
        {
          "mixin": "dev/tr7zw/firstperson/mixins/WorldRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "renderEntities",
          "kind": "inject",
          "method": "extractVisibleEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities HEAD"
        }
      ],
      "listening": 17,
      "accessors": 2,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/model/HumanoidModel#setupAnim @TAIL": 1,
        "net/minecraft/client/model/geom/ModelPart#setPos @RETURN": 1,
        "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#extractEntity @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#extractEntity @TAIL": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @TAIL": 1,
        "net/minecraft/client/renderer/entity/FishingHookRenderer#getPlayerHandPos @RETURN": 1,
        "net/minecraft/client/renderer/entity/FishingHookRenderer#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/LivingEntityRenderer#extractRenderState @HEAD": 1,
        "net/minecraft/client/renderer/entity/layers/CustomHeadLayer#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/layers/ItemInHandLayer#submitArmWithItem @HEAD": 1,
        "net/minecraft/client/renderer/entity/layers/StuckInBodyLayer#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/layers/WingsLayer#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/player/AvatarRenderer#extractRenderState @TAIL": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#getItemBySlot @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Options#getCameraType @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 43,
        "features": {
          "mixin": 19
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 43,
        "methods": 86,
        "tried": 86,
        "completed": 35,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Ldev/tr7zw/firstperson/versionless/config/VanillaHands;#clone()Ljava/lang/Object;": 1,
          "dev/tr7zw/transition/loader/ModLoaderUtil#registerKeybind(Lnet/minecraft/client/KeyMapping;)V": 1,
          "java/lang/Class#forName(Ljava/lang/String;)Ljava/lang/Class;": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/resources/ResourceKey#identifier()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/util/Mth#wrapDegrees(F)F": 1,
          "net/minecraft/world/entity/player/Inventory#getItem(I)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/player/Inventory#getNonEquipmentItems()Lnet/minecraft/core/NonNullList;": 1,
          "net/minecraft/world/entity/player/Inventory#getSelectedItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/player/Inventory#getSelectedSlot()I": 1,
          "net/minecraft/world/entity/player/Player#getInventory()Lnet/minecraft/world/entity/player/Inventory;": 1,
          "net/minecraft/world/entity/player/Player#isSwimming()Z": 1,
          "net/minecraft/world/entity/player/Player#isVisuallySwimming()Z": 1,
          "net/minecraft/world/phys/Vec3#ZERO": 1,
          "net/xolt/freecam/Freecam#isEnabled()Z": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#getReturnValue()Ljava/lang/Object;": 1
        },
        "runs": [
          {
            "class": "dev/tr7zw/firstperson/mixins/ModelPartMixin",
            "method": "isHidden",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/LogicHandler",
            "method": "showVanillaHands",
            "desc": "(Lnet/minecraft/world/entity/LivingEntity;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/LogicHandler",
            "method": "hideArmsAndItems",
            "desc": "(Lnet/minecraft/world/entity/LivingEntity;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/LogicHandler",
            "method": "dynamicHandsEnabled",
            "desc": "(Lnet/minecraft/world/entity/LivingEntity;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/versionless/FirstPersonBase",
            "method": "isRenderingPlayer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/versionless/FirstPersonBase",
            "method": "isRenderingPlayerPost",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/versionless/FirstPersonBase",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/api/FirstPersonAPI",
            "method": "getPlayerOffsetHandlers",
            "desc": "()Ljava/util/List;",
            "value": "obj#58"
          },
          {
            "class": "dev/tr7zw/firstperson/api/FirstPersonAPI",
            "method": "getActivationHandlers",
            "desc": "()Ljava/util/List;",
            "value": "obj#60"
          },
          {
            "class": "dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin",
            "method": "isCameraEntity",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin",
            "method": "hideLeftArm",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin",
            "method": "hideRightArm",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin",
            "method": "hideBody",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/mixins/LivingEntityRenderStateMixin",
            "method": "getArmOffset",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/firstperson/FirstPersonModelCore",
            "method": "isRenderingPlayer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/firstperson/FirstPersonModelCore",
            "method": "isRenderingPlayerRaw",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 579
      },
      "verdict": "no",
      "summary": "none of its 19 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "freecam",
      "name": "Freecam",
      "version": "1.5.1",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "net/xolt/freecam/fabric/FreecamFabric"
        },
        {
          "kind": "modmenu",
          "value": "net/xolt/freecam/fabric/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "freecam-common.mixins.json",
        "freecam-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 82,
      "methods": 440,
      "sites": [
        {
          "mixin": "net/xolt/freecam/fabric/mixins/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "onExtractVisibleEntities",
          "kind": "inject",
          "method": "extractVisibleEntities",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities RETURN"
        },
        {
          "mixin": "net/xolt/freecam/mixins/AvatarRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "onSubmitNameDisplay",
          "kind": "inject",
          "method": "submitNameDisplay",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/player/AvatarRenderer#submitNameDisplay HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/BlockStateBaseMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase"
          ],
          "handler": "onGetCollisionShape",
          "kind": "inject",
          "method": "getCollisionShape",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#getCollisionShape HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "onSetEntity",
          "kind": "inject",
          "method": "setEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Camera#setEntity HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "onGetSubmersionType",
          "kind": "inject",
          "method": "getFluidInCamera",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Camera#getFluidInCamera HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onPlayerRespawn",
          "kind": "inject",
          "method": "handleRespawn",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "net/xolt/freecam/mixins/EnablePlayerOutlineMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "onExtractVisibleEntities",
          "kind": "inject",
          "method": "extractVisibleEntities",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities TAIL"
        },
        {
          "mixin": "net/xolt/freecam/mixins/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onGetViewXRot",
          "kind": "inject",
          "method": "getViewXRot",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#getViewXRot HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onChangeLookDirection",
          "kind": "inject",
          "method": "turn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#turn HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onPushAwayFrom",
          "kind": "inject",
          "method": "push",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#push HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onSetVelocity",
          "kind": "inject",
          "method": "setDeltaMovement",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#setDeltaMovement HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onUpdateVelocity",
          "kind": "inject",
          "method": "moveRelative",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#moveRelative HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onSetPosition",
          "kind": "inject",
          "method": "setPos",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#setPos HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onSetPos",
          "kind": "inject",
          "method": "setPosRaw",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#setPosRaw HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/EntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "onShouldRender",
          "kind": "inject",
          "method": "shouldRender",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#shouldRender HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/FirstPersonHandRotationMixin",
          "targets": [
            "net/minecraft/client/player/FirstPersonHandsAndItems"
          ],
          "handler": "onExtractRenderState",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/FirstPersonHandsAndItems#extractRenderState TAIL"
        },
        {
          "mixin": "net/xolt/freecam/mixins/FirstPersonHandShadingMixin",
          "targets": [
            "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer"
          ],
          "handler": "onSubmitArmWithItem_lightCoordsArg",
          "kind": "modify-variable",
          "method": "submitArmWithItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/xolt/freecam/mixins/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "onRenderItemInHand",
          "kind": "inject",
          "method": "renderItemInHand",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "render_hand",
          "why": "RenderHandEvent: the hand is drawn"
        },
        {
          "mixin": "net/xolt/freecam/mixins/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "onShouldRenderBlockOutline",
          "kind": "inject",
          "method": "shouldRenderBlockOutline",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#shouldRenderBlockOutline HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/HudItemOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "onRenderTextureOverlay",
          "kind": "inject",
          "method": "extractTextureOverlay",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "net/xolt/freecam/mixins/IrisHandRendererMixin",
          "targets": [
            "net/irisshaders/iris/pathways/HandRenderer"
          ],
          "handler": "onRenderItemInHand",
          "kind": "inject",
          "method": "canRender",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/irisshaders/iris/pathways/HandRenderer#canRender HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/KeyMappingMixin",
          "targets": [
            "net/minecraft/client/KeyMapping"
          ],
          "handler": "onRelease",
          "kind": "inject",
          "method": "release",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyMapping#release HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/KeyMappingMixin",
          "targets": [
            "net/minecraft/client/KeyMapping"
          ],
          "handler": "onSetAll_setDown",
          "kind": "wrap-operation",
          "method": "setAll",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/KeyMapping;setDown(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/xolt/freecam/mixins/KeyMappingMixin",
          "targets": [
            "net/minecraft/client/KeyMapping"
          ],
          "handler": "onSet",
          "kind": "inject",
          "method": "setDown",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyMapping#setDown HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "onGetMovementSpeed",
          "kind": "inject",
          "method": "getFrictionInfluencedSpeed",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#getFrictionInfluencedSpeed HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "onSetHealth",
          "kind": "inject",
          "method": "setHealth",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#setHealth HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "onIsCamera",
          "kind": "inject",
          "method": "isControlledCamera",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/LocalPlayer#isControlledCamera HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "onGetViewYRot",
          "kind": "inject",
          "method": "getViewYRot",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/LocalPlayer#getViewYRot HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onDoAttack",
          "kind": "inject",
          "method": "startAttack",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#startAttack HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onDoItemPick",
          "kind": "inject",
          "method": "pickBlockOrEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#pickBlockOrEntity HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onHandleBlockBreaking",
          "kind": "inject",
          "method": "continueAttack",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#continueAttack HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onHandleInputEvents",
          "kind": "inject",
          "method": "handleKeybinds",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/KeyMapping;consumeClick()Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#handleKeybinds INVOKE"
        },
        {
          "mixin": "net/xolt/freecam/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onDisconnect",
          "kind": "inject",
          "method": "disconnect*",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#disconnect* HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "onInteractBlock",
          "kind": "inject",
          "method": "useItemOn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#useItemOn HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "onInteractEntity",
          "kind": "inject",
          "method": "interact",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#interact HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "onAttackEntity",
          "kind": "inject",
          "method": "attack",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#attack HEAD"
        },
        {
          "mixin": "net/xolt/freecam/mixins/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "onSetPerspective",
          "kind": "inject",
          "method": "setCameraType",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#setCameraType HEAD"
        }
      ],
      "listening": 34,
      "accessors": 1,
      "hooks": {
        "hud": 1,
        "net_from_server": 1,
        "render_hand": 1
      },
      "wanted": {
        "net/irisshaders/iris/pathways/HandRenderer#canRender @HEAD": 1,
        "net/minecraft/client/Camera#getFluidInCamera @HEAD": 1,
        "net/minecraft/client/Camera#setEntity @HEAD": 1,
        "net/minecraft/client/KeyMapping#release @HEAD": 1,
        "net/minecraft/client/KeyMapping#setDown @HEAD": 1,
        "net/minecraft/client/Minecraft#continueAttack @HEAD": 1,
        "net/minecraft/client/Minecraft#disconnect* @HEAD": 1,
        "net/minecraft/client/Minecraft#pickBlockOrEntity @HEAD": 1,
        "net/minecraft/client/Minecraft#startAttack @HEAD": 1,
        "net/minecraft/client/Options#setCameraType @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#attack @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#interact @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#useItemOn @HEAD": 1,
        "net/minecraft/client/player/FirstPersonHandsAndItems#extractRenderState @TAIL": 1,
        "net/minecraft/client/player/LocalPlayer#getViewYRot @HEAD": 1,
        "net/minecraft/client/player/LocalPlayer#isControlledCamera @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#shouldRenderBlockOutline @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#shouldRender @HEAD": 1,
        "net/minecraft/client/renderer/entity/player/AvatarRenderer#submitNameDisplay @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities @RETURN": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities @TAIL": 1,
        "net/minecraft/world/entity/Entity#getViewXRot @HEAD": 1,
        "net/minecraft/world/entity/Entity#moveRelative @HEAD": 1,
        "net/minecraft/world/entity/Entity#push @HEAD": 1,
        "net/minecraft/world/entity/Entity#setDeltaMovement @HEAD": 1,
        "net/minecraft/world/entity/Entity#setPos @HEAD": 1,
        "net/minecraft/world/entity/Entity#setPosRaw @HEAD": 1,
        "net/minecraft/world/entity/Entity#turn @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#getFrictionInfluencedSpeed @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#setHealth @HEAD": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#getCollisionShape @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/KeyMapping#setDown @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/Minecraft#handleKeybinds @INVOKE": 1,
        "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 82,
        "features": {
          "screen": 1,
          "events": 1,
          "mixin": 23
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 82,
        "methods": 241,
        "tried": 241,
        "completed": 89,
        "handlers_tried": 3,
        "handlers_completed": 3,
        "missing": {
          "[Lnet/xolt/freecam/config/ModBindings;#clone()Ljava/lang/Object;": 4,
          "[Lnet/xolt/freecam/config/model/FlightMode;#clone()Ljava/lang/Object;": 1,
          "[Lnet/xolt/freecam/config/model/ModConfigDTO$InteractionMode;#clone()Ljava/lang/Object;": 1,
          "[Lnet/xolt/freecam/config/model/ModConfigDTO$ServerRestriction;#clone()Ljava/lang/Object;": 1,
          "[Lnet/xolt/freecam/config/model/Perspective;#clone()Ljava/lang/Object;": 1,
          "[Lnet/xolt/freecam/tripod/TripodSlot;#clone()Ljava/lang/Object;": 1,
          "com/google/common/base/Supplier#get()Ljava/lang/Object;": 1,
          "com/google/gson/Gson#fromJson(Lcom/google/gson/JsonElement;Ljava/lang/Class;)Ljava/lang/Object;": 2,
          "com/google/gson/Gson#toJson(Lcom/google/gson/JsonElement;Ljava/lang/Appendable;)V": 2,
          "com/google/gson/Gson#toJsonTree(Ljava/lang/Object;)Lcom/google/gson/JsonElement;": 2,
          "com/llamalad7/mixinextras/MixinExtrasBootstrap#init()V": 1,
          "com/mojang/blaze3d/platform/InputConstants$Type#KEYBOARD": 1,
          "java/lang/Thread#currentThread()Ljava/lang/Thread;": 1,
          "java/nio/file/Files#exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/util/Collection#add(Ljava/lang/Object;)Z": 1,
          "java/util/function/BooleanSupplier#getAsBoolean()Z": 9,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/Minecraft#getCurrentServer()Lnet/minecraft/client/multiplayer/ServerData;": 2,
          "net/minecraft/client/gui/screens/GenericMessageScreen#<init>(Lnet/minecraft/network/chat/Component;)V": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/network/chat/Component#empty()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/tags/FluidTags#WATER": 1,
          "net/minecraft/world/entity/Entity#getPose()Lnet/minecraft/world/entity/Pose;": 1,
          "net/minecraft/world/entity/MoveSimulationType#SERVER_AND_CLIENT": 1,
          "net/minecraft/world/entity/Pose#SWIMMING": 1,
          "net/xolt/freecam/config/keys/FreecamComboKeyMapping#isDown()Z": 2,
          "net/xolt/freecam/config/keys/FreecamKeyMapping#consumeClick()Z": 1,
          "net/xolt/freecam/util/FreeCamera#getXRot()F": 1,
          "net/xolt/freecam/util/FreeCamera#getYRot()F": 2,
          "net/xolt/freecam/util/FreeCamera#level()Lnet/minecraft/world/level/Level;": 3,
          "new com/google/gson/Gson": 1,
          "new net/minecraft/client/player/ClientInput": 1,
          "new net/minecraft/world/level/ChunkPos": 1,
          "new org/joml/Quaternionf": 2,
          "org/joml/Quaternionf#rotationYXZ(FFF)Lorg/joml/Quaternionf;": 2,
          "org/joml/Vector3f#x()F": 2
        },
        "runs": [
          {
            "class": "net/xolt/freecam/tripod/TripodSlot",
            "method": "ofKeyCode",
            "desc": "(I)Lnet/xolt/freecam/tripod/TripodSlot;",
            "value": "obj#0"
          },
          {
            "class": "net/xolt/freecam/config/gui/FallbackConfigScreen",
            "method": "shouldCloseOnEsc",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/xolt/freecam/config/model/CollisionPredicateBuilder",
            "method": "builder",
            "desc": "()Lnet/xolt/freecam/config/model/CollisionPredicateBuilder;",
            "value": "obj#43"
          },
          {
            "class": "net/xolt/freecam/mixins/FirstPersonHandShadingMixin",
            "method": "onSubmitArmWithItem_lightCoordsArg",
            "desc": "(IF)I",
            "value": "0"
          },
          {
            "class": "net/xolt/freecam/config/gui/ModConfigScreenFactory",
            "method": "toSlider",
            "desc": "(D)J",
            "value": "0"
          },
          {
            "class": "net/xolt/freecam/config/gui/ModConfigScreenFactory",
            "method": "fromSlider",
            "desc": "(J)D",
            "value": "0"
          },
          {
            "class": "net/xolt/freecam/FreecamMixinConfig",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "net/xolt/freecam/config/keys/FreecamKeyMappingBuilder",
            "method": "type",
            "desc": "(Lcom/mojang/blaze3d/platform/InputConstants$Type;)Lnet/xolt/freecam/config/keys/FreecamKeyMappingBuilder;",
            "value": "obj#148"
          },
          {
            "class": "net/xolt/freecam/config/keys/FreecamKeyMappingBuilder",
            "method": "maxHoldTicks",
            "desc": "(J)Lnet/xolt/freecam/config/keys/FreecamKeyMappingBuilder;",
            "value": "obj#149"
          },
          {
            "class": "net/xolt/freecam/config/keys/FreecamKeyMappingBuilder",
            "method": "defaultKey",
            "desc": "(I)Lnet/xolt/freecam/config/keys/FreecamKeyMappingBuilder;",
            "value": "obj#150"
          },
          {
            "class": "net/xolt/freecam/config/keys/FreecamKeyMappingBuilder",
            "method": "action",
            "desc": "(Ljava/lang/Runnable;)Lnet/xolt/freecam/config/keys/FreecamKeyMappingBuilder;",
            "value": "obj#151"
          },
          {
            "class": "net/xolt/freecam/config/keys/FreecamKeyMappingBuilder",
            "method": "holdAction",
            "desc": "(Lnet/xolt/freecam/config/keys/HoldAction;)Lnet/xolt/freecam/config/keys/FreecamKeyMappingBuilder;",
            "value": "obj#152"
          },
          {
            "class": "net/xolt/freecam/Freecam",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/xolt/freecam/util/FreeCamera",
            "method": "moveForwardUntilCollision",
            "desc": "(Lnet/xolt/freecam/util/FreecamPosition;D)Z",
            "value": "1"
          },
          {
            "class": "net/xolt/freecam/util/FreeCamera",
            "method": "onClimbable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/xolt/freecam/util/FreeCamera",
            "method": "isInWater",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/xolt/freecam/util/FreeCamera",
            "method": "canCollideWith",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "net/xolt/freecam/util/FreeCamera",
            "method": "isEffectiveAi",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/xolt/freecam/util/FreeCamera",
            "method": "xBob",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/xolt/freecam/util/FreeCamera",
            "method": "yBob",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/xolt/freecam/util/FreeCamera",
            "method": "xBobO",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/xolt/freecam/util/FreeCamera",
            "method": "yBobO",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/xolt/freecam/mixins/FullBrightMixin",
            "method": "onGetBrightness",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "net/xolt/freecam/config/keys/FreecamComboKeyMapping",
            "method": "dequeue",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/xolt/freecam/mixins/KeyboardInputMixin",
            "method": "modifyShiftKeyDown",
            "desc": "(Z)Z",
            "value": "0"
          }
        ],
        "insns": 2180
      },
      "verdict": "no",
      "summary": "only 3 of 34 listening patch sites have a hook (8%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "friendsandfoes",
      "name": "Friends&Foes",
      "version": "5.0.4",
      "license": "CC-BY-NC-ND-4.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/faboslav/friendsandfoes/fabric/FriendsAndFoesFabricClient"
        },
        {
          "kind": "main",
          "value": "com/faboslav/friendsandfoes/fabric/FriendsAndFoesFabric"
        },
        {
          "kind": "modmenu",
          "value": "com/faboslav/friendsandfoes/fabric/modcompat/ModMenuCompat"
        },
        {
          "kind": "preLaunch",
          "value": "com/llamalad7/mixinextras/MixinExtrasBootstrap::init"
        }
      ],
      "mixin_configs": [
        "friendsandfoes-common.mixins.json",
        "friendsandfoes-fabric.mixins.json"
      ],
      "depends": [
        "resourcefullib"
      ],
      "classes": 351,
      "methods": 2230,
      "sites": [
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/AbstractBoatMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/boat/AbstractBoat"
          ],
          "handler": "friendsandfoes$applyTentaclePull",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/boat/AbstractBoat#tick TAIL"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/AbstractBoatMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/boat/AbstractBoat"
          ],
          "handler": "friendsandfoes$applyAbstractBoatSpeedEffect",
          "kind": "wrap-operation",
          "method": "controlBoat",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/BeeEntityMixin",
          "targets": [
            "net/minecraft/world/entity/animal/bee/Bee"
          ],
          "handler": "friendsandfoes_addPollinateMoobloomGoal",
          "kind": "inject",
          "method": "registerGoals",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/goal/GoalSelector;addGoal(ILnet/minecraft/world/entity/ai/goal/Goal;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/bee/Bee#registerGoals INVOKE"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/BeeEntityMixin",
          "targets": [
            "net/minecraft/world/entity/animal/bee/Bee"
          ],
          "handler": "friendsandfoes_tweakDamage",
          "kind": "inject",
          "method": "hurtServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/bee/Bee#hurtServer HEAD"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/BlazeLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "friendsandfoes_writeCustomDataToNbt",
          "kind": "inject",
          "method": "addAdditionalSaveData",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#addAdditionalSaveData TAIL"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/BlazeLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "friendsandfoes_writeCustomDataToNbt",
          "kind": "inject",
          "method": "readAdditionalSaveData",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#readAdditionalSaveData TAIL"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/BlazeLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "friendsandfoes_onDeath",
          "kind": "inject",
          "method": "die",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "living_death",
          "why": "a living entity dies"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/CarvedPumpkinBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/CarvedPumpkinBlock"
          ],
          "handler": "friendsandfoes_canDispense",
          "kind": "inject",
          "method": "canSpawnGolem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/CarvedPumpkinBlock#canSpawnGolem HEAD"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/CarvedPumpkinBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/CarvedPumpkinBlock"
          ],
          "handler": "friendsandfoes_customOnBlockAdded",
          "kind": "inject",
          "method": "onPlace",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/CarvedPumpkinBlock#onPlace HEAD"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/ChickenEntityMixin",
          "targets": [
            "net/minecraft/world/entity/animal/chicken/Chicken"
          ],
          "handler": "friendsandfoes_addFleeGoal",
          "kind": "inject",
          "method": "registerGoals",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/goal/GoalSelector;addGoal(ILnet/minecraft/world/entity/ai/goal/Goal;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/chicken/Chicken#registerGoals INVOKE"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/IntegratedServerLoaderMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows"
          ],
          "handler": "alwaysTreatAsStable",
          "kind": "inject",
          "method": "confirmWorldCreation",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#confirmWorldCreation HEAD"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "friendsandfoes$getStackInCustomSlots",
          "kind": "wrap-operation",
          "method": "checkTotemDeathProtection",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;getItemInHand(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/PatrolSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/PatrolSpawner"
          ],
          "handler": "friendsandfoes$modifyPatrolEntity",
          "kind": "modify-variable",
          "method": "spawnPatrolMember",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/PatrolSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/PatrolSpawner"
          ],
          "handler": "friendsandfoes$resetBiomeSpecificIllagerSpawnFlag",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/PatrolSpawner#tick RETURN"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/PlayerEntityMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "friendsandfoes$addToTick",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#tick TAIL"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/PlayerEntityMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "friendsandfoes_tryUseTotems",
          "kind": "inject",
          "method": "hurtServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#hurtServer HEAD"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/PointOfInterestTypesMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiTypes"
          ],
          "handler": "friendsandfoes_modifyBeehivePointOfInterest",
          "kind": "modify-variable",
          "method": "register",
          "at": "LOAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/RabbitEntityMixin",
          "targets": [
            "net/minecraft/world/entity/animal/rabbit/Rabbit"
          ],
          "handler": "friendsandfoes_addFleeGoal",
          "kind": "inject",
          "method": "registerGoals",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/goal/GoalSelector;addGoal(ILnet/minecraft/world/entity/ai/goal/Goal;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/rabbit/Rabbit#registerGoals INVOKE"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/RaidMemberMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raid$RaiderType"
          ],
          "handler": "friendsandfoes_updateCountInWave",
          "kind": "modify-arg",
          "method": "<clinit>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/raid/Raid$RaiderType;<init>(Ljava/lang/String;ILnet/minecraft/world/entity/EntityType;[I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/RecipeManagerMixin",
          "targets": [
            "net/minecraft/world/item/crafting/RecipeManager"
          ],
          "handler": "friendsandfoes$applyDynamicRecipes",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/crafting/RecipeManager#<init> TAIL"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/VillagerTaskListProviderMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/VillagerGoalPackages"
          ],
          "handler": "friendsandfoes_setSecondVillagerWorkTask",
          "kind": "modify-variable",
          "method": "getWorkPackage",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/ZombieHorseAbstractHorseEntityMixin",
          "targets": [
            "net/minecraft/world/entity/animal/equine/AbstractHorse"
          ],
          "handler": "friendsandfoes_tickMovement",
          "kind": "inject",
          "method": "aiStep",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/equine/AbstractHorse#aiStep TAIL"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/ZombieHorseAnimalEntityMixin",
          "targets": [
            "net/minecraft/world/entity/animal/Animal"
          ],
          "handler": "friendsandfoes_writeCustomDataToNbt",
          "kind": "inject",
          "method": "addAdditionalSaveData",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/Animal#addAdditionalSaveData TAIL"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/ZombieHorseAnimalEntityMixin",
          "targets": [
            "net/minecraft/world/entity/animal/Animal"
          ],
          "handler": "friendsandfoes_readCustomDataFromNbt",
          "kind": "inject",
          "method": "readAdditionalSaveData",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/Animal#readAdditionalSaveData TAIL"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/common/mixin/datafix/V1460Mixin",
          "targets": [
            "net/minecraft/util/datafix/schemas/V1460"
          ],
          "handler": "registerModdedEntities",
          "kind": "inject",
          "method": "registerEntities",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/datafix/schemas/V1460#registerEntities RETURN"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/fabric/mixin/ParticleResourcesMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources"
          ],
          "handler": "friendsandfoes_onInit",
          "kind": "inject",
          "method": "registerProviders",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleResources#registerProviders RETURN"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/fabric/mixin/PatrolSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/PatrolSpawner"
          ],
          "handler": "friendsandfoes$onSpawnEntity",
          "kind": "inject",
          "method": "spawnPatrolMember",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/monster/PatrollingMonster;finalizeSpawn(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/world/DifficultyInstance;Lnet/minecraft/world/entity/EntitySpawnReason;Lnet/minecraft/world/entity/SpawnGroupData;)Lnet/minecraft/world/entity/SpawnGroupData;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/PatrolSpawner#spawnPatrolMember INVOKE"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/fabric/mixin/SpawnHelperMixin",
          "targets": [
            "net/minecraft/world/level/NaturalSpawner"
          ],
          "handler": "friendsandfoes$onEntitySpawn",
          "kind": "wrap-operation",
          "method": "spawnCategoryForPosition",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/NaturalSpawner;isValidPositionForMob(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/Mob;D)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/fabric/mixin/SpawnHelperMixin",
          "targets": [
            "net/minecraft/world/level/NaturalSpawner"
          ],
          "handler": "friendsandfoes$onCheckEntitySpawn",
          "kind": "wrap-operation",
          "method": "spawnMobsForChunkGeneration",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;checkSpawnRules(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/world/entity/EntitySpawnReason;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/fabric/mixin/StructureEntityProcessorMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate"
          ],
          "handler": "friendsandfoes_captureContext",
          "kind": "inject",
          "method": "placeInWorld",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate;placeEntities(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Mirror;Lnet/minecraft/world/level/block/Rotation;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/levelgen/structure/BoundingBox;ZLnet/minecraft/util/ProblemReporter;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate#placeInWorld INVOKE"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/fabric/mixin/StructureEntityProcessorMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate"
          ],
          "handler": "friendsandfoes_clearContext",
          "kind": "inject",
          "method": "placeInWorld",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate;placeEntities(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Mirror;Lnet/minecraft/world/level/block/Rotation;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/levelgen/structure/BoundingBox;ZLnet/minecraft/util/ProblemReporter;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate#placeInWorld INVOKE"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/fabric/mixin/StructureEntityProcessorMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate"
          ],
          "handler": "friendsandfoes_processEntities",
          "kind": "inject",
          "method": "placeInWorld",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate;placeEntities(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Mirror;Lnet/minecraft/world/level/block/Rotation;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/levelgen/structure/BoundingBox;ZLnet/minecraft/util/ProblemReporter;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate#placeInWorld INVOKE"
        },
        {
          "mixin": "com/faboslav/friendsandfoes/fabric/mixin/StructureTemplateEntitySpawnMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate"
          ],
          "handler": "friendsandfoes$onFinalizeSpawn",
          "kind": "wrap-operation",
          "method": "lambda$placeEntities$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;finalizeSpawn(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/world/DifficultyInstance;Lnet/minecraft/world/entity/EntitySpawnReason;Lnet/minecraft/world/entity/SpawnGroupData;)Lnet/minecraft/world/entity/SpawnGroupData;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 17,
      "accessors": 24,
      "hooks": {
        "living_death": 1
      },
      "wanted": {
        "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#confirmWorldCreation @HEAD": 1,
        "net/minecraft/client/particle/ParticleResources#registerProviders @RETURN": 1,
        "net/minecraft/util/datafix/schemas/V1460#registerEntities @RETURN": 1,
        "net/minecraft/world/entity/LivingEntity#addAdditionalSaveData @TAIL": 1,
        "net/minecraft/world/entity/LivingEntity#readAdditionalSaveData @TAIL": 1,
        "net/minecraft/world/entity/animal/Animal#addAdditionalSaveData @TAIL": 1,
        "net/minecraft/world/entity/animal/Animal#readAdditionalSaveData @TAIL": 1,
        "net/minecraft/world/entity/animal/bee/Bee#hurtServer @HEAD": 1,
        "net/minecraft/world/entity/animal/equine/AbstractHorse#aiStep @TAIL": 1,
        "net/minecraft/world/entity/player/Player#hurtServer @HEAD": 1,
        "net/minecraft/world/entity/player/Player#tick @TAIL": 1,
        "net/minecraft/world/entity/vehicle/boat/AbstractBoat#tick @TAIL": 1,
        "net/minecraft/world/item/crafting/RecipeManager#<init> @TAIL": 1,
        "net/minecraft/world/level/block/CarvedPumpkinBlock#canSpawnGolem @HEAD": 1,
        "net/minecraft/world/level/block/CarvedPumpkinBlock#onPlace @HEAD": 1,
        "net/minecraft/world/level/levelgen/PatrolSpawner#tick @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/world/entity/LivingEntity#getItemInHand @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/Mob#checkSpawnRules @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/Mob#finalizeSpawn @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/ai/behavior/VillagerGoalPackages#getWorkPackage @STORE (modify-variable)": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiTypes#register @LOAD (modify-variable)": 1,
        "net/minecraft/world/entity/animal/bee/Bee#registerGoals @INVOKE": 1,
        "net/minecraft/world/entity/animal/chicken/Chicken#registerGoals @INVOKE": 1,
        "net/minecraft/world/entity/animal/rabbit/Rabbit#registerGoals @INVOKE": 1,
        "net/minecraft/world/entity/raid/Raid$RaiderType#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/world/level/NaturalSpawner#isValidPositionForMob @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/levelgen/PatrolSpawner#spawnPatrolMember @INVOKE": 1,
        "net/minecraft/world/level/levelgen/PatrolSpawner#spawnPatrolMember @STORE (modify-variable)": 1,
        "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate#placeInWorld @INVOKE": 3,
        "net/minecraft/world/phys/Vec3#add @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "BiomeModifications",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "BiomeSelectionContext",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "BiomeModification",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BiomeModificationContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BiomeModificationContext$GenerationSettingsContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents$ModifyOutputAll",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntityRendererRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDefaultAttributeRegistry",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FabricEntityDataRegistry",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FlammableBlockRegistry",
          "horizon": "content:registries",
          "note": "a registry the jar's data declares",
          "classes": 1
        },
        {
          "class": "IdentifiableResourceReloadListener",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "LootTableEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LootTableEvents$Modify",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LootTableSource",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLayerRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLayerRegistry$TexturedLayerDefinitionProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModificationPhase",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceManagerHelper",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ServerLevelEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLevelEvents$Load",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$SyncDataPackContents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        }
      ],
      "code": {
        "classes": 351,
        "features": {
          "block-behaviour": 4,
          "entity": 69,
          "renderer": 42,
          "worldgen": 4,
          "effect": 2,
          "particle": 2,
          "events": 1,
          "mixin": 61
        },
        "events": [
          "Event"
        ],
        "examples": {
          "CopperButtonBlock": [
            "getSound",
            "useWithoutItem"
          ],
          "CrabEggBlock": [
            "breakEgg",
            "canBreaksEgg",
            "fallOn",
            "isSuitableBelow",
            "onPlace",
            "playerDestroy",
            "randomTick",
            "shouldHatchProgress",
            "stepOn",
            "tryBreakEgg"
          ],
          "OxidizableButtonBlock": [
            "getAge",
            "getSound",
            "isRandomlyTicking",
            "randomTick",
            "useWithoutItem"
          ],
          "PenguinEggBlock": [
            "onPlace",
            "tick"
          ]
        }
      },
      "interp": {
        "classes": 351,
        "methods": 1494,
        "tried": 600,
        "completed": 85,
        "handlers_tried": 1,
        "handlers_completed": 1,
        "missing": {
          "[Lcom/faboslav/friendsandfoes/common/entity/CrabEntity$CrabSize;#clone()Ljava/lang/Object;": 3,
          "[Lcom/faboslav/friendsandfoes/common/entity/ai/brain/task/barnacle/BarnacleTentacleAttackTask$State;#clone()Ljava/lang/Object;": 1,
          "[Lcom/faboslav/friendsandfoes/common/entity/pose/FriendsAndFoesEntityPose;#clone()Ljava/lang/Object;": 1,
          "[Lcom/faboslav/friendsandfoes/common/modcompat/ModCompat$Type;#clone()Ljava/lang/Object;": 1,
          "[Lcom/faboslav/friendsandfoes/fabric/mixin/AddCustomRaidMemberMixin;#clone()Ljava/lang/Object;": 1,
          "[Lcom/faboslav/friendsandfoes/fabric/mixin/AddCustomSpawnGroupMixin;#clone()Ljava/lang/Object;": 1,
          "com/faboslav/friendsandfoes/common/block/FriendsAndFoesOxidizable#getAge()Ljava/lang/Enum;": 1,
          "com/faboslav/friendsandfoes/common/block/OxidizableButtonBlock#changeOverTime(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V": 1,
          "com/faboslav/friendsandfoes/common/entity/BarnacleEntity#blockPosition()Lnet/minecraft/core/BlockPos;": 1,
          "com/faboslav/friendsandfoes/common/entity/BarnacleEntity#getAirSupply()I": 1,
          "com/faboslav/friendsandfoes/common/entity/BarnacleEntity#getLookControl()Lnet/minecraft/world/entity/ai/control/LookControl;": 2,
          "com/faboslav/friendsandfoes/common/entity/BarnacleEntity#getNavigation()Lnet/minecraft/world/entity/ai/navigation/PathNavigation;": 1,
          "com/faboslav/friendsandfoes/common/entity/BarnacleEntity#getTargetFromBrain()Lnet/minecraft/world/entity/LivingEntity;": 1,
          "com/faboslav/friendsandfoes/common/entity/BarnacleEntity#isInWater()Z": 1,
          "com/faboslav/friendsandfoes/common/entity/BarnacleEntity#level()Lnet/minecraft/world/level/Level;": 2,
          "com/faboslav/friendsandfoes/common/entity/BarnacleEntity#position()Lnet/minecraft/world/phys/Vec3;": 3,
          "com/faboslav/friendsandfoes/common/entity/CrabEntity#blockPosition()Lnet/minecraft/core/BlockPos;": 4,
          "com/faboslav/friendsandfoes/common/entity/CrabEntity#getLoveCause()Lnet/minecraft/server/level/ServerPlayer;": 1,
          "com/faboslav/friendsandfoes/common/entity/CrabEntity#isBaby()Z": 1,
          "com/faboslav/friendsandfoes/common/entity/CrabEntity#isSwimming()Z": 2,
          "com/faboslav/friendsandfoes/common/entity/CrabEntity#level()Lnet/minecraft/world/level/Level;": 4,
          "com/faboslav/friendsandfoes/common/entity/CrabEntity#onGround()Z": 2,
          "com/faboslav/friendsandfoes/common/entity/CrabEntity#position()Lnet/minecraft/world/phys/Vec3;": 1,
          "com/faboslav/friendsandfoes/common/entity/CrabEntity#refreshDimensions()V": 1,
          "com/faboslav/friendsandfoes/common/entity/GlareEntity#blockPosition()Lnet/minecraft/core/BlockPos;": 4,
          "com/faboslav/friendsandfoes/common/entity/GlareEntity#getNavigation()Lnet/minecraft/world/entity/ai/navigation/PathNavigation;": 2,
          "com/faboslav/friendsandfoes/common/entity/GlareEntity#getOwner()Lnet/minecraft/world/entity/LivingEntity;": 6,
          "com/faboslav/friendsandfoes/common/entity/GlareEntity#getRandom()Lnet/minecraft/util/RandomSource;": 3,
          "com/faboslav/friendsandfoes/common/entity/GlareEntity#isLeashed()Z": 5,
          "com/faboslav/friendsandfoes/common/entity/GlareEntity#level()Lnet/minecraft/world/level/Level;": 4,
          "com/faboslav/friendsandfoes/common/entity/IceologerEntity#getTarget()Lnet/minecraft/world/entity/LivingEntity;": 1,
          "com/faboslav/friendsandfoes/common/entity/MoobloomEntity#getY()D": 2,
          "com/faboslav/friendsandfoes/common/entity/PenguinEntity#getAirSupply()I": 4,
          "com/faboslav/friendsandfoes/common/entity/PenguinEntity#getLookControl()Lnet/minecraft/world/entity/ai/control/LookControl;": 2,
          "com/faboslav/friendsandfoes/common/entity/PenguinEntity#getX()D": 6,
          "com/faboslav/friendsandfoes/common/entity/PenguinEntity#isInWater()Z": 2,
          "com/faboslav/friendsandfoes/common/entity/RascalEntity#getAmbientSoundInterval()I": 1,
          "com/faboslav/friendsandfoes/common/entity/RascalEntity#hasCustomName()Z": 4,
          "com/faboslav/friendsandfoes/common/entity/RascalEntity#level()Lnet/minecraft/world/level/Level;": 1,
          "com/faboslav/friendsandfoes/common/entity/RascalEntity#onGround()Z": 1,
          "com/faboslav/friendsandfoes/common/entity/TuffGolemEntity#getNavigation()Lnet/minecraft/world/entity/ai/navigation/PathNavigation;": 2,
          "com/faboslav/friendsandfoes/common/entity/WildfireEntity#damageSources()Lnet/minecraft/world/damagesource/DamageSources;": 1,
          "com/faboslav/friendsandfoes/common/entity/WildfireEntity#isPassenger()Z": 1,
          "com/faboslav/friendsandfoes/common/entity/WildfireEntity#level()Lnet/minecraft/world/level/Level;": 2,
          "com/faboslav/friendsandfoes/common/entity/WildfireEntity#onGround()Z": 1,
          "com/teamresourceful/resourcefullib/common/network/Network#register(Lcom/teamresourceful/resourcefullib/common/network/base/ClientboundPacketType;)V": 1,
          "com/teamresourceful/resourcefullib/common/registry/RegistryEntry#get()Ljava/lang/Object;": 53,
          "com/teamresourceful/resourcefullib/common/registry/builtin/ResourcefulItemRegistry#register(Ljava/lang/String;Ljava/util/function/Function;Ljava/util/function/Supplier;)Lcom/teamresourceful/resourcefullib/common/registry/builtin/base/ItemLikeEntry;": 1,
          "java/util/Random#nextFloat()F": 2,
          "java/util/Random#nextInt(I)I": 1,
          "java/util/ServiceLoader#load(Ljava/lang/Class;)Ljava/util/ServiceLoader;": 1,
          "java/util/function/BiConsumer#accept(Ljava/lang/Object;Ljava/lang/Object;)V": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 5,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/animation/KeyframeAnimation#apply(Lnet/minecraft/world/entity/AnimationState;FF)V": 1,
          "net/minecraft/client/model/EntityModel#setupAnim(Ljava/lang/Object;)V": 2,
          "net/minecraft/client/model/geom/ModelPart#setRotation(FFF)V": 2,
          "net/minecraft/client/renderer/entity/AgeableMobRenderer#extractRenderState(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;F)V": 6,
          "net/minecraft/client/renderer/entity/IllagerRenderer#extractRenderState(Lnet/minecraft/world/entity/monster/illager/AbstractIllager;Lnet/minecraft/client/renderer/entity/state/IllagerRenderState;F)V": 4,
          "net/minecraft/client/renderer/entity/state/IllagerRenderState#<init>()V": 2,
          "net/minecraft/client/renderer/entity/state/LivingEntityRenderState#<init>()V": 6,
          "net/minecraft/core/BlockPos#below()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/BlockPos#equals(Ljava/lang/Object;)Z": 1,
          "net/minecraft/core/BlockPos#getY()I": 1,
          "net/minecraft/core/BlockPos#withinBoxByManhattanDistance(Lnet/minecraft/core/BlockPos;III)Ljava/lang/Iterable;": 1,
          "net/minecraft/core/particles/ParticleTypes#ANGRY_VILLAGER": 1,
          "net/minecraft/core/particles/ParticleTypes#CLOUD": 2,
          "net/minecraft/core/particles/ParticleTypes#HAPPY_VILLAGER": 1,
          "net/minecraft/core/registries/Registries#BIOME": 1,
          "net/minecraft/core/registries/Registries#BLOCK": 1,
          "net/minecraft/core/registries/Registries#ENTITY_TYPE": 1,
          "net/minecraft/core/registries/Registries#ITEM": 1,
          "net/minecraft/core/registries/Registries#POINT_OF_INTEREST_TYPE": 1,
          "net/minecraft/core/registries/Registries#VILLAGER_TRADE": 1,
          "net/minecraft/network/syncher/EntityDataAccessor#equals(Ljava/lang/Object;)Z": 2,
          "net/minecraft/server/level/ServerLevel#getGameRules()Lnet/minecraft/world/level/gamerules/GameRules;": 1,
          "net/minecraft/server/level/ServerLevel#structureManager()Lnet/minecraft/world/level/StructureManager;": 1,
          "net/minecraft/util/Mth#cos(D)F": 6,
          "net/minecraft/util/Mth#lerp(FFF)F": 3,
          "net/minecraft/util/Mth#sin(D)F": 6,
          "net/minecraft/util/ProblemReporter#DISCARDING": 1,
          "net/minecraft/world/InteractionHand#asEquipmentSlot()Lnet/minecraft/world/entity/EquipmentSlot;": 1,
          "net/minecraft/world/InteractionResult#SUCCESS": 2,
          "net/minecraft/world/damagesource/DamageSource#getEntity()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/world/entity/AgeableMob#defineSynchedData(Lnet/minecraft/network/syncher/SynchedEntityData$Builder;)V": 1,
          "net/minecraft/world/entity/AgeableMob#finalizeSpawn(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/world/DifficultyInstance;Lnet/minecraft/world/entity/EntitySpawnReason;Lnet/minecraft/world/entity/SpawnGroupData;)Lnet/minecraft/world/entity/SpawnGroupData;": 1,
          "net/minecraft/world/entity/AgeableMob#getBrain()Lnet/minecraft/world/entity/ai/Brain;": 9,
          "net/minecraft/world/entity/AnimationState#isStarted()Z": 1,
          "net/minecraft/world/entity/Entity#getPosition(F)Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/world/entity/Entity#isInWater()Z": 2,
          "net/minecraft/world/entity/Entity#isSteppingCarefully()Z": 1,
          "net/minecraft/world/entity/Entity#level()Lnet/minecraft/world/level/Level;": 5,
          "net/minecraft/world/entity/Entity#position()Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/world/entity/Entity#snapTo(DDD)V": 1,
          "net/minecraft/world/entity/Entity#snapTo(Lnet/minecraft/core/BlockPos;FF)V": 1,
          "net/minecraft/world/entity/Entity$MovementEmission#EVENTS": 1,
          "net/minecraft/world/entity/LivingEntity#blockPosition()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/entity/LivingEntity#distanceToSqr(Lnet/minecraft/world/entity/Entity;)D": 1,
          "net/minecraft/world/entity/LivingEntity#getVehicle()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/world/entity/LivingEntity#getX()D": 1,
          "net/minecraft/world/entity/LivingEntity#isAlive()Z": 2,
          "net/minecraft/world/entity/LivingEntity#isDeadOrDying()Z": 1,
          "net/minecraft/world/entity/Mob#createMobAttributes()Lnet/minecraft/world/entity/ai/attributes/AttributeSupplier$Builder;": 1,
          "net/minecraft/world/entity/Mob#setJumping(Z)V": 2,
          "net/minecraft/world/entity/TamableAnimal#getBrain()Lnet/minecraft/world/entity/ai/Brain;": 19,
          "net/minecraft/world/entity/ai/Brain$Provider#makeBrain(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/ai/Brain$Packed;)Lnet/minecraft/world/entity/ai/Brain;": 7,
          "net/minecraft/world/entity/ai/behavior/BehaviorUtils#lookAtEntity(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)V": 2,
          "net/minecraft/world/entity/ai/memory/MemoryModuleType#NEAREST_ATTACKABLE": 1,
          "net/minecraft/world/entity/ai/sensing/NearestVisibleLivingEntitySensor#requires()Ljava/util/Set;": 1,
          "net/minecraft/world/entity/animal/Animal#ageBoundaryReached()V": 1,
          "net/minecraft/world/entity/animal/Animal#aiStep()V": 1,
          "net/minecraft/world/entity/animal/Animal#createAnimalAttributes()Lnet/minecraft/world/entity/ai/attributes/AttributeSupplier$Builder;": 1,
          "net/minecraft/world/entity/animal/Animal#defineSynchedData(Lnet/minecraft/network/syncher/SynchedEntityData$Builder;)V": 1,
          "net/minecraft/world/entity/animal/Animal#finalizeSpawn(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/world/DifficultyInstance;Lnet/minecraft/world/entity/EntitySpawnReason;Lnet/minecraft/world/entity/SpawnGroupData;)Lnet/minecraft/world/entity/SpawnGroupData;": 1,
          "net/minecraft/world/entity/animal/Animal#getBrain()Lnet/minecraft/world/entity/ai/Brain;": 12,
          "net/minecraft/world/entity/animal/bee/Bee#getNavigation()Lnet/minecraft/world/entity/ai/navigation/PathNavigation;": 1,
          "net/minecraft/world/entity/animal/bee/Bee#getRandom()Lnet/minecraft/util/RandomSource;": 1,
          "net/minecraft/world/entity/animal/bee/Bee#resetTicksWithoutNectarSinceExitingHive()V": 1,
          "net/minecraft/world/entity/animal/golem/AbstractGolem#getBrain()Lnet/minecraft/world/entity/ai/Brain;": 5,
          "net/minecraft/world/entity/monster/Monster#considersEntityAsAlly(Lnet/minecraft/world/entity/Entity;)Z": 1,
          "net/minecraft/world/entity/monster/Monster#createMonsterAttributes()Lnet/minecraft/world/entity/ai/attributes/AttributeSupplier$Builder;": 3,
          "net/minecraft/world/entity/monster/Monster#defineSynchedData(Lnet/minecraft/network/syncher/SynchedEntityData$Builder;)V": 2,
          "net/minecraft/world/entity/monster/Monster#finalizeSpawn(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/world/DifficultyInstance;Lnet/minecraft/world/entity/EntitySpawnReason;Lnet/minecraft/world/entity/SpawnGroupData;)Lnet/minecraft/world/entity/SpawnGroupData;": 1,
          "net/minecraft/world/entity/monster/Monster#getBrain()Lnet/minecraft/world/entity/ai/Brain;": 8,
          "net/minecraft/world/entity/monster/Monster#hurtServer(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/damagesource/DamageSource;F)Z": 1,
          "net/minecraft/world/entity/monster/Monster#onSyncedDataUpdated(Lnet/minecraft/network/syncher/EntityDataAccessor;)V": 1,
          "net/minecraft/world/entity/monster/illager/SpellcasterIllager$IllagerSpell#BLINDNESS": 1,
          "net/minecraft/world/entity/monster/illager/SpellcasterIllager$SpellcasterUseSpellGoal#canContinueToUse()Z": 1,
          "net/minecraft/world/entity/monster/illager/SpellcasterIllager$SpellcasterUseSpellGoal#canUse()Z": 1,
          "net/minecraft/world/entity/monster/illager/SpellcasterIllager$SpellcasterUseSpellGoal#start()V": 1,
          "net/minecraft/world/entity/monster/illager/SpellcasterIllager$SpellcasterUseSpellGoal#tick()V": 1,
          "net/minecraft/world/entity/player/Player#getId()I": 1,
          "net/minecraft/world/entity/player/Player#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/entity/schedule/Activity#AVOID": 1,
          "net/minecraft/world/entity/schedule/Activity#CORE": 6,
          "net/minecraft/world/entity/schedule/Activity#IDLE": 3,
          "net/minecraft/world/item/context/BlockPlaceContext#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/item/context/BlockPlaceContext#isSecondaryUseActive()Z": 1,
          "net/minecraft/world/level/Level#environmentAttributes()Lnet/minecraft/world/attribute/EnvironmentAttributeSystem;": 2,
          "net/minecraft/world/level/Level#isDarkOutside()Z": 1,
          "net/minecraft/world/level/LevelReader#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 3,
          "net/minecraft/world/level/LevelReader#isUnobstructed(Lnet/minecraft/world/entity/Entity;)Z": 1,
          "net/minecraft/world/level/block/WeatheringCopper$WeatherState#ordinal()I": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 3,
          "net/minecraft/world/level/block/state/BlockState#getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;": 2,
          "net/minecraft/world/level/block/state/BlockState#liquid()Z": 1,
          "net/minecraft/world/level/block/state/StateDefinition$Builder#add([Lnet/minecraft/world/level/block/state/properties/Property;)Lnet/minecraft/world/level/block/state/StateDefinition$Builder;": 2,
          "net/minecraft/world/level/levelgen/structure/Structure$GenerationContext#random()Lnet/minecraft/world/level/levelgen/WorldgenRandom;": 4,
          "new net/minecraft/core/BlockPos": 3,
          "new net/minecraft/core/BlockPos$MutableBlockPos": 1,
          "new net/minecraft/world/effect/MobEffectInstance": 1,
          "new net/minecraft/world/entity/ai/behavior/RunOne": 1,
          "new net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation": 1,
          "new net/minecraft/world/item/Item$Properties": 1,
          "new net/minecraft/world/item/ItemStack": 2,
          "new net/minecraft/world/phys/Vec3": 3
        },
        "runs": [
          {
            "class": "com/faboslav/friendsandfoes/common/entity/RascalEntity",
            "method": "disableAmbientSounds",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/RascalEntity",
            "method": "enableAmbientSounds",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/ai/goal/bee/BeePollinateMoobloomGoal",
            "method": "canContinueToUse",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/ai/goal/bee/BeePollinateMoobloomGoal",
            "method": "completedPollination",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/ai/goal/bee/BeePollinateMoobloomGoal",
            "method": "isRunning",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/CrabEntity",
            "method": "onClimbable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/CrabEntity",
            "method": "shouldStopDancing",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/events/entity/EntitySpawnEvent",
            "method": "isBaby",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/mixin/CommandsMixin",
            "method": "performCommandHook",
            "desc": "(Lorg/slf4j/Logger;)Z",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/TuffGolemEntity$Home",
            "method": "x",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/TuffGolemEntity$Home",
            "method": "y",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/TuffGolemEntity$Home",
            "method": "z",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/TuffGolemEntity$Home",
            "method": "yaw",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/ai/brain/task/crab/CrabLayEggTask",
            "method": "canStillUse",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;Lcom/faboslav/friendsandfoes/common/entity/CrabEntity;J)Z",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/ai/brain/task/crab/CrabLayEggTask",
            "method": "canStillUse",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)Z",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/CrabEntity$CrabSize",
            "method": "getScaleModifier",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/WildfireEntity",
            "method": "getLightLevelDependentMagicValue",
            "desc": "()F",
            "value": "1f"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/WildfireEntity",
            "method": "isSensitiveToWater",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/WildfireEntity",
            "method": "isOnFire",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/WildfireEntity",
            "method": "causeFallDamage",
            "desc": "(FFLnet/minecraft/world/damagesource/DamageSource;)Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/ai/brain/task/rascal/RascalWaitForPlayerTask",
            "method": "canStillUse",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;Lcom/faboslav/friendsandfoes/common/entity/RascalEntity;J)Z",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/ai/brain/task/rascal/RascalWaitForPlayerTask",
            "method": "canStillUse",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)Z",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/network/packet/TotemEffectPacket",
            "method": "entityId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/versions/VersionedEntity",
            "method": "isEntityType",
            "desc": "(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/tags/TagKey;)Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/mixin/ZombieHorseEntityMixin",
            "method": "friendsandfoes_isTrapped",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/block/PenguinEggBlock",
            "method": "isPathfindable",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/pathfinder/PathComputationType;)Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/block/CrabEggBlock",
            "method": "canBreaksEgg",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/util/animation/AnimationMath",
            "method": "correctProgress",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/util/animation/AnimationMath",
            "method": "toRadians",
            "desc": "(D)F",
            "value": "0f"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/util/animation/AnimationMath",
            "method": "toLengthInTicks",
            "desc": "(F)I",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/util/animation/AnimationMath",
            "method": "toLengthInTicks",
            "desc": "(FF)I",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/IceologerEntity$SlowTargetGoal",
            "method": "getCastingTime",
            "desc": "()I",
            "value": "20"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/IceologerEntity$SlowTargetGoal",
            "method": "getCastingInterval",
            "desc": "()I",
            "value": "220"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/BarnacleEntity",
            "method": "isPushedByFluid",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/BarnacleEntity",
            "method": "getMaxHeadXRot",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/BarnacleEntity",
            "method": "getMaxHeadYRot",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/BarnacleEntity",
            "method": "getAmbientSoundInterval",
            "desc": "()I",
            "value": "160"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/BarnacleEntity",
            "method": "isValidTentacleTarget",
            "desc": "(Lnet/minecraft/world/entity/LivingEntity;)Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/BarnacleEntity",
            "method": "isBoat",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "com/faboslav/friendsandfoes/common/entity/pose/FriendsAndFoesEntityPose",
            "method": "id",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 3833
      },
      "verdict": "no",
      "summary": "only 1 of 17 listening patch sites have a hook (5%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "gammautils",
      "name": "Gamma Utils",
      "version": "3.2.2",
      "license": "GNU LGPLv3",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "io/github/sjouwer/gammautils/GammaUtils"
        },
        {
          "kind": "modmenu",
          "value": "io/github/sjouwer/gammautils/config/ModMenuApiImpl"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "io/github/sjouwer/gammautils/compat/SodiumConfigBuilder"
        }
      ],
      "mixin_configs": [
        "gammautils.mixins.json"
      ],
      "depends": [
        "cloth-config"
      ],
      "classes": 38,
      "methods": 205,
      "sites": [
        {
          "mixin": "io/github/sjouwer/gammautils/mixin/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "setDimensionPreferences",
          "kind": "inject",
          "method": "handlePlayerAbilities",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "io/github/sjouwer/gammautils/mixin/MixinHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "getGammaTexture",
          "kind": "inject",
          "method": "getMobEffectSprite",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "io/github/sjouwer/gammautils/mixin/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "saveOnClose",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_stopping",
          "why": "the client stops"
        },
        {
          "mixin": "io/github/sjouwer/gammautils/mixin/MixinMobEffectUtil",
          "targets": [
            "net/minecraft/world/effect/MobEffectUtil"
          ],
          "handler": "getPercentageText",
          "kind": "inject",
          "method": "formatDuration",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/effect/MobEffectUtil#formatDuration HEAD"
        },
        {
          "mixin": "io/github/sjouwer/gammautils/mixin/MixinOptionInstance",
          "targets": [
            "net/minecraft/client/OptionInstance"
          ],
          "handler": "getModValue",
          "kind": "inject",
          "method": "get",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/OptionInstance#get HEAD"
        },
        {
          "mixin": "io/github/sjouwer/gammautils/mixin/MixinOptionInstance",
          "targets": [
            "net/minecraft/client/OptionInstance"
          ],
          "handler": "setModValue",
          "kind": "inject",
          "method": "set",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/OptionInstance#set HEAD"
        },
        {
          "mixin": "io/github/sjouwer/gammautils/mixin/MixinOptions",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "doNotVisitGamma",
          "kind": "wrap-operation",
          "method": "processDumpedOptions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Options$OptionAccess;process(Ljava/lang/String;Lnet/minecraft/client/OptionInstance;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 6,
      "accessors": 0,
      "hooks": {
        "client_stopping": 1,
        "hud": 1,
        "net_from_server": 1
      },
      "wanted": {
        "net/minecraft/client/OptionInstance#get @HEAD": 1,
        "net/minecraft/client/OptionInstance#set @HEAD": 1,
        "net/minecraft/world/effect/MobEffectUtil#formatDuration @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Options$OptionAccess#process @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 2
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientCommands",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 38,
        "features": {
          "effect": 1,
          "command": 1,
          "events": 1,
          "mixin": 10
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 38,
        "methods": 139,
        "tried": 139,
        "completed": 76,
        "handlers_tried": 3,
        "handlers_completed": 0,
        "missing": {
          "java/util/Timer#scheduleAtFixedRate(Ljava/util/TimerTask;JJ)V": 2,
          "me/shedaniel/autoconfig/ConfigHolder#getConfig()Lme/shedaniel/autoconfig/ConfigData;": 7,
          "me/shedaniel/autoconfig/ConfigHolder#save()V": 1,
          "net/fabricmc/fabric/api/client/command/v2/ClientCommandRegistrationCallback#EVENT": 3,
          "net/fabricmc/fabric/api/client/keymapping/v1/KeyMappingHelper#registerKeyMapping(Lnet/minecraft/client/KeyMapping;)Lnet/minecraft/client/KeyMapping;": 9,
          "net/minecraft/core/Holder#value()Ljava/lang/Object;": 2,
          "net/minecraft/world/effect/MobEffectInstance#getEffect()Lnet/minecraft/core/Holder;": 1
        },
        "runs": [
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getValue",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getDefaultValue",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getToggledValue",
            "desc": "()D",
            "value": "15"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "isToggleUpdateEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getStep",
            "desc": "()I",
            "value": "10"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getStepStrength",
            "desc": "()D",
            "value": "0.1"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "isSmoothTransitionEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getTransitionSpeed",
            "desc": "(Z)D",
            "value": "30"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "isStatusEffectEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "isResetOnCloseEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "isLimiterEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getMin",
            "desc": "()I",
            "value": "-750"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getMinimumStrength",
            "desc": "()D",
            "value": "-7.5"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getMax",
            "desc": "()I",
            "value": "1500"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getMaximumStrength",
            "desc": "()D",
            "value": "15"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "isDimensionPreferenceEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getOverworldPreference",
            "desc": "()D",
            "value": "15"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getNetherPreference",
            "desc": "()D",
            "value": "15"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getEndPreference",
            "desc": "()D",
            "value": "15"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "isDynamicEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "isDynamicPaused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getMinDynamicStrength",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getMaxDynamicStrength",
            "desc": "()D",
            "value": "10"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getDynamicAveragingLightRange",
            "desc": "()I",
            "value": "8"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getSkyBrightnessOverride",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "isHudMessageEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getDefaultHudColor",
            "desc": "()I",
            "value": "43520"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getPositiveHudColor",
            "desc": "()I",
            "value": "16755200"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$GammaSettings",
            "method": "getNegativeHudColor",
            "desc": "()I",
            "value": "11141120"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$OtherSettings",
            "method": "namespacedCommandsEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/statuseffect/ClientStatusEffect",
            "method": "shouldApplyEffectTickThisTick",
            "desc": "(II)Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getValue",
            "desc": "()D",
            "value": "100f"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getToggledValue",
            "desc": "()I",
            "value": "100"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isToggleUpdateEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getStepValue",
            "desc": "()I",
            "value": "2"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isFogColorBrighteningEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isSmoothTransitionEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getTransitionSpeed",
            "desc": "(Z)D",
            "value": "200"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isLimiterEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getMaximumStrength",
            "desc": "()I",
            "value": "100"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getMinimumStrength",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isStatusEffectEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isResetOnCloseEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isDimensionPreferenceEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getOverworldPreference",
            "desc": "()I",
            "value": "100"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getNetherPreference",
            "desc": "()I",
            "value": "100"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getEndPreference",
            "desc": "()I",
            "value": "100"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isDynamicEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isDynamicPaused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getMinDynamicStrength",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getMaxDynamicStrength",
            "desc": "()I",
            "value": "100"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getDynamicAveragingLightRange",
            "desc": "()I",
            "value": "8"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getSkyBrightnessOverride",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "isHudMessageEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getDefaultHudColor",
            "desc": "()I",
            "value": "43520"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getPositiveHudColor",
            "desc": "()I",
            "value": "16755200"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getNegativeHudColor",
            "desc": "()I",
            "value": "11141120"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getEnabledHudColor",
            "desc": "()I",
            "value": "43520"
          },
          {
            "class": "io/github/sjouwer/gammautils/config/ModConfig$NightVisionSettings",
            "method": "getDisabledHudColor",
            "desc": "()I",
            "value": "11141120"
          }
        ],
        "insns": 9793
      },
      "verdict": "partly",
      "summary": "3 of 6 listening patch sites land on a Horizon hook (50%); of 7 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "globalpacks",
      "name": "Global Packs",
      "version": "26.3.1",
      "license": "ARR",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [],
      "mixin_configs": [
        "globalpacks.mixins.json"
      ],
      "depends": [],
      "classes": 13,
      "methods": 50,
      "sites": [
        {
          "mixin": "net/brazier_modding/gdarp/mixin/CreateWorldScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/CreateWorldScreen"
          ],
          "handler": "globalpacks_addServerPackFinder",
          "kind": "modify-arg",
          "method": "Lnet/minecraft/client/gui/screens/worldselection/CreateWorldScreen;openCreateWorldScreen",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/packs/repository/PackRepository;<init>([Lnet/minecraft/server/packs/repository/RepositorySource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/brazier_modding/gdarp/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "globalpacks_addClientPackFinder",
          "kind": "modify-arg",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/packs/repository/PackRepository;<init>([Lnet/minecraft/server/packs/repository/RepositorySource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/brazier_modding/gdarp/mixin/PackRepositoryMixin",
          "targets": [
            "net/minecraft/server/packs/repository/PackRepository"
          ],
          "handler": "globalpackls_discoverAvailable",
          "kind": "inject",
          "method": "discoverAvailable",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/repository/PackRepository#discoverAvailable RETURN"
        },
        {
          "mixin": "net/brazier_modding/gdarp/mixin/ServerPacksSourceMixin",
          "targets": [
            "net/minecraft/server/packs/repository/ServerPacksSource"
          ],
          "handler": "globalpacks_createPackRepository",
          "kind": "modify-arg",
          "method": "createPackRepository",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/packs/repository/PackRepository;<init>([Lnet/minecraft/server/packs/repository/RepositorySource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        }
      ],
      "listening": 1,
      "accessors": 2,
      "hooks": {},
      "wanted": {
        "net/minecraft/server/packs/repository/PackRepository#discoverAvailable @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/server/packs/repository/PackRepository#<init> @INVOKE (modify-arg)": 3
      },
      "api": [],
      "code": {
        "classes": 13,
        "features": {
          "mixin": 5
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 13,
        "methods": 23,
        "tried": 23,
        "completed": 14,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lnet/brazier_modding/gdarp/pack_dependencies/PackDependency$DependencyType;#clone()Ljava/lang/Object;": 1,
          "java/nio/file/Path#getFileSystem()Ljava/nio/file/FileSystem;": 1,
          "java/util/regex/Pattern#matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;": 1,
          "net/minecraft/server/packs/PackType#CLIENT_RESOURCES": 2,
          "net/minecraft/server/packs/PackType#SERVER_DATA": 2,
          "net/minecraft/server/packs/PackType#ordinal()I": 1
        },
        "runs": [
          {
            "class": "net/brazier_modding/gdarp/config/PackConfig",
            "method": "isSystemGlobalPath",
            "desc": "(Ljava/nio/file/Path;)Z",
            "value": "0"
          },
          {
            "class": "net/brazier_modding/gdarp/config/PackConfig",
            "method": "logPacks",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 94
      },
      "verdict": "no",
      "summary": "none of its 4 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "imblocker",
      "name": "IMBlocker",
      "version": "7.3.2",
      "license": "GPL3 or higher",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "io/github/reserveword/imblocker/IMBlocker"
        },
        {
          "kind": "modmenu",
          "value": "io/github/reserveword/imblocker/IMBlockerModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "imblocker.mixins.json"
      ],
      "depends": [],
      "classes": 118,
      "methods": 666,
      "sites": [
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ReplayModTextFieldMixin",
          "targets": [
            "com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "onFocusChanged",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField#onFocusChanged TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ReplayModTextFieldMixin",
          "targets": [
            "com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "handleChar",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField#handleChar HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ReplayModTextFieldMixin",
          "targets": [
            "com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField"
          ],
          "handler": "updateCaretPos",
          "kind": "inject",
          "method": "draw",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField#draw TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/AbstractCommandBlockScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractCommandBlockEditScreen"
          ],
          "handler": "setCommandInputEnglishState",
          "kind": "inject",
          "method": "init",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractCommandBlockEditScreen#init TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/AbstractScrollAreaMixin",
          "targets": [
            "net/minecraft/client/gui/components/AbstractScrollArea"
          ],
          "handler": "onScroll",
          "kind": "inject",
          "method": "setScrollAmount",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/AbstractScrollArea#setScrollAmount TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/AbstractSignEditScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/AbstractSignEditScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen"
          ],
          "handler": "checkCursorPos",
          "kind": "inject",
          "method": "charTyped",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#charTyped RETURN"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/AbstractSignEditScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen"
          ],
          "handler": "checkCursorPos",
          "kind": "inject",
          "method": "keyPressed",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#keyPressed RETURN"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/AbstractWidgetMixin",
          "targets": [
            "net/minecraft/client/gui/components/AbstractWidget"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "setFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/AbstractWidget#setFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/AbstractWidgetMixin",
          "targets": [
            "net/minecraft/client/gui/components/AbstractWidget"
          ],
          "handler": "updateLastRenderTime",
          "kind": "inject",
          "method": "isFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/AbstractWidget#isFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "initChatState",
          "kind": "inject",
          "method": "init",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ChatScreen#init TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "updateChatState",
          "kind": "inject",
          "method": "onEdited",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ChatScreen#onEdited HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "removeChatState",
          "kind": "inject",
          "method": "removed",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ChatScreen#removed HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/GuiGraphicsExtractorMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "renderUniversalIMEOverlays",
          "kind": "inject",
          "method": "applyCursor",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/GuiGraphicsExtractor#applyCursor HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "onScreenChanged",
          "kind": "inject",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_opening",
          "why": "ScreenEvent.Opening: a screen opens"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/KeyboardHandlerMixin",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "overwritePreeditCallback",
          "kind": "inject",
          "method": "preeditCallback",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#preeditCallback HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/KeyboardHandlerMixin",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "overwritePreeditCallback",
          "kind": "inject",
          "method": "textEditing",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#textEditing HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/LinuxKeyboardPatch",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "onKeyInvoked",
          "kind": "inject",
          "method": "keyPress",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "key",
          "why": "a key is pressed"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/LinuxKeyboardPatch",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "onCharInvoked",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "disableVanillaFocusControl",
          "kind": "inject",
          "method": "onTextInputFocusChange",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#onTextInputFocusChange HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onScreenChanged",
          "kind": "inject",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_opening",
          "why": "ScreenEvent.Opening: a screen opens"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "runPreTickTasks",
          "kind": "inject",
          "method": "runTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "frame",
          "why": "RenderFrameEvent.Pre: once a frame, before it draws"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "recordGameRenderStartTime",
          "kind": "inject",
          "method": "renderFrame",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GameRenderer;extract(Lnet/minecraft/client/DeltaTracker;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#renderFrame INVOKE"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "captureGameRenderEnd",
          "kind": "inject",
          "method": "renderFrame",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GameRenderer;extract(Lnet/minecraft/client/DeltaTracker;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#renderFrame INVOKE"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/MultiLineEditBoxMixin",
          "targets": [
            "net/minecraft/client/gui/components/MultiLineEditBox"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "setFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/MultiLineEditBox#setFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/MultiLineEditBoxMixin",
          "targets": [
            "net/minecraft/client/gui/components/MultiLineEditBox"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/MultiLineEditBox#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/MultilineTextFieldMixin",
          "targets": [
            "net/minecraft/client/gui/components/MultilineTextField"
          ],
          "handler": "getLineAtCursor",
          "kind": "overwrite",
          "method": "getLineAtCursor",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/SDLIMEHintTweaker",
          "targets": [
            "com/mojang/blaze3d/systems/RenderSystem"
          ],
          "handler": "tweakIMEHint",
          "kind": "inject",
          "method": "initBackendSystem",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/sdl/SDLInit;SDL_Init(I)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/systems/RenderSystem#initBackendSystem INVOKE"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/SDLKey2CharPatch",
          "targets": [
            "com/mojang/blaze3d/platform/SDLEventHandler"
          ],
          "handler": "onKeyEvent",
          "kind": "inject",
          "method": "handleKeyEvent",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/SDLEventHandler#handleKeyEvent TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/TextFieldMixin",
          "targets": [
            "net/minecraft/client/gui/components/EditBox"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "setFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/EditBox#setFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/TextFieldMixin",
          "targets": [
            "net/minecraft/client/gui/components/EditBox"
          ],
          "handler": "visibilityChanged",
          "kind": "inject",
          "method": "setVisible",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/EditBox#setVisible TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/TextFieldMixin",
          "targets": [
            "net/minecraft/client/gui/components/EditBox"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/EditBox#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/TextFieldMixin",
          "targets": [
            "net/minecraft/client/gui/components/EditBox"
          ],
          "handler": "onTextChanged",
          "kind": "inject",
          "method": "scrollTo",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/EditBox#scrollTo HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/TextFieldMixin",
          "targets": [
            "net/minecraft/client/gui/components/EditBox"
          ],
          "handler": "setEditable",
          "kind": "overwrite",
          "method": "setEditable",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/TextInputManagerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/TextInputManager"
          ],
          "handler": "disableVanillaIMEControl",
          "kind": "inject",
          "method": "setIMEInputMode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/TextInputManager#setIMEInputMode HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/TextInputManagerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/TextInputManager"
          ],
          "handler": "disableVanillaCaretControl",
          "kind": "inject",
          "method": "setTextInputArea",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/TextInputManager#setTextInputArea HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/TextInputManagerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/TextInputManager"
          ],
          "handler": "disableVanillaIMEControlH",
          "kind": "inject",
          "method": "startTextInput",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/TextInputManager#startTextInput HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/TextInputManagerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/TextInputManager"
          ],
          "handler": "disableVanillaIMEControlT",
          "kind": "inject",
          "method": "stopTextInput",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/TextInputManager#stopTextInput HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/UnlockIMEKeyListener",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "onKeyInvoked",
          "kind": "inject",
          "method": "keyPress",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "key",
          "why": "a key is pressed"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "onFocusChanged",
          "kind": "inject",
          "method": "onFocus",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#onFocus TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "onFocusChanged",
          "kind": "inject",
          "method": "onFocus",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#onFocus TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "onScaleFactorChanged",
          "kind": "inject",
          "method": "setGuiScale",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#setGuiScale HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/WindowsIngameIMEInitializer",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "initializeIngameIME",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#<init> TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/WindowsIngameIMEInitializer",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "initializeIngameIME",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#<init> TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/WindowsIngameIMEInitializer",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "initializeIngameIME",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#<init> TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/WindowsIngameIMEInitializer",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "initializeIngameIME",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/Window#<init> TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/AWTextInputWidgetMixin",
          "targets": [
            "com/apple/library/uikit/UITextField",
            "com/apple/library/uikit/UITextView"
          ],
          "handler": "focusGained",
          "kind": "inject",
          "method": "becomeFirstResponder",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/apple/library/uikit/UITextField#becomeFirstResponder TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/AWTextInputWidgetMixin",
          "targets": [
            "com/apple/library/uikit/UITextField",
            "com/apple/library/uikit/UITextView"
          ],
          "handler": "focusLost",
          "kind": "inject",
          "method": "resignFirstResponder",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/apple/library/uikit/UITextField#resignFirstResponder TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/AWTextInputWidgetMixin",
          "targets": [
            "com/apple/library/uikit/UITextField",
            "com/apple/library/uikit/UITextView"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/apple/library/uikit/UITextField#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/AWTextInputWidgetMixin",
          "targets": [
            "com/apple/library/uikit/UITextField",
            "com/apple/library/uikit/UITextView"
          ],
          "handler": "updateCaretPos",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lcom/apple/library/impl/TextStorageImpl;render(Lcom/apple/library/coregraphics/CGPoint;Lcom/apple/library/coregraphics/CGGraphicsContext;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/apple/library/uikit/UITextField#render INVOKE"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/AxiomEditorUIMixin",
          "targets": [
            "com/moulberry/axiom/editor/EditorUI"
          ],
          "handler": "loadImGui",
          "kind": "inject",
          "method": "init",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/moulberry/axiom/editor/EditorUI#init TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/AxiomEditorUIMixin",
          "targets": [
            "com/moulberry/axiom/editor/EditorUI"
          ],
          "handler": "renderUniversalIMEOverlays",
          "kind": "inject",
          "method": "drawOverlayInternal",
          "at": "INVOKE",
          "at_target": "Limgui/moulberry92/ImGui;render()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/moulberry/axiom/editor/EditorUI#drawOverlayInternal INVOKE"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/EssentialAbstractTextInputMixin",
          "targets": [
            "gg/essential/gui/common/input/AbstractTextInput"
          ],
          "handler": "onCursorChanged",
          "kind": "inject",
          "method": "setCursor",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at gg/essential/gui/common/input/AbstractTextInput#setCursor TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/EssentialAbstractTextInputMixin",
          "targets": [
            "gg/essential/gui/common/input/AbstractTextInput"
          ],
          "handler": "onHorizontalScrolling",
          "kind": "inject",
          "method": "setHorizontalScrollingOffset",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at gg/essential/gui/common/input/AbstractTextInput#setHorizontalScrollingOffset TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/EssentialAbstractTextInputMixin",
          "targets": [
            "gg/essential/gui/common/input/AbstractTextInput"
          ],
          "handler": "onVerticalScrolling",
          "kind": "inject",
          "method": "setTargetVerticalScrollingOffset",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at gg/essential/gui/common/input/AbstractTextInput#setTargetVerticalScrollingOffset TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/EssentialUIComponentMixin",
          "targets": [
            "gg/essential/elementa/UIComponent"
          ],
          "handler": "onFocusGained",
          "kind": "inject",
          "method": "focus",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at gg/essential/elementa/UIComponent#focus TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/EssentialUIComponentMixin",
          "targets": [
            "gg/essential/elementa/UIComponent"
          ],
          "handler": "onFocusLost",
          "kind": "inject",
          "method": "loseFocus",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at gg/essential/elementa/UIComponent#loseFocus TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/EssentialUIComponentMixin",
          "targets": [
            "gg/essential/elementa/UIComponent"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "keyType",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at gg/essential/elementa/UIComponent#keyType HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbMultilineTextBoxMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "setFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#setFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbMultilineTextBoxMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbMultilineTextBoxMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox"
          ],
          "handler": "onCursorChange",
          "kind": "inject",
          "method": "scrollToCursor",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#scrollToCursor TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbMultilineTextBoxMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox"
          ],
          "handler": "onRecalculateHeight",
          "kind": "inject",
          "method": "recalculateHeight",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#recalculateHeight TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbPanelMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/Panel"
          ],
          "handler": "onScroll",
          "kind": "inject",
          "method": "setScrollY",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/Panel#setScrollY TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "setFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#setFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox"
          ],
          "handler": "cancelFocus",
          "kind": "inject",
          "method": "onClosed",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#onClosed TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox"
          ],
          "handler": "onCursorPosChanged",
          "kind": "inject",
          "method": "scrollTo",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#scrollTo TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox"
          ],
          "handler": "updateLastRenderTime",
          "kind": "inject",
          "method": "isFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#isFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbWidgetMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/Widget"
          ],
          "handler": "cancelFocus",
          "kind": "inject",
          "method": "onClosed",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/Widget#onClosed TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbWidgetMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/Widget"
          ],
          "handler": "handleXChanged",
          "kind": "inject",
          "method": "setX",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setX TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbWidgetMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/Widget"
          ],
          "handler": "handleYChanged",
          "kind": "inject",
          "method": "setY",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setY TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbWidgetMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/Widget"
          ],
          "handler": "handleWidthChanged",
          "kind": "inject",
          "method": "setWidth",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setWidth TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/FtbWidgetMixin",
          "targets": [
            "dev/ftb/mods/ftblibrary/client/gui/widget/Widget"
          ],
          "handler": "handleHeightChanged",
          "kind": "inject",
          "method": "setHeight",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setHeight TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ImGuiGlfwPatch",
          "targets": [
            "com/moulberry/axiom/editor/CustomImGuiImplGlfw"
          ],
          "handler": "correctCharCallback",
          "kind": "redirect",
          "method": "init",
          "at": "INVOKE",
          "at_target": "glfwSetCharModsCallback(JLorg/lwjgl/glfw/GLFWCharModsCallbackI;)Lorg/lwjgl/glfw/GLFWCharModsCallback;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ImGuiMixin",
          "targets": [
            "imgui/moulberry92/ImGui"
          ],
          "handler": "captureArgs",
          "kind": "inject",
          "method": "preInputText",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at imgui/moulberry92/ImGui#preInputText HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ImGuiMixin",
          "targets": [
            "imgui/moulberry92/ImGui"
          ],
          "handler": "enableCallbacks",
          "kind": "modify-variable",
          "method": "preInputText",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ImGuiMixin",
          "targets": [
            "imgui/moulberry92/ImGui"
          ],
          "handler": "attachTextCallback",
          "kind": "modify-variable",
          "method": "preInputText",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/LibGuiTextFieldMixin",
          "targets": [
            "io/github/cottonmc/cotton/gui/widget/WTextField"
          ],
          "handler": "onFocusGained",
          "kind": "inject",
          "method": "onFocusGained",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at io/github/cottonmc/cotton/gui/widget/WTextField#onFocusGained TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/LibGuiTextFieldMixin",
          "targets": [
            "io/github/cottonmc/cotton/gui/widget/WTextField"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "onCharTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at io/github/cottonmc/cotton/gui/widget/WTextField#onCharTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/LibGuiTextFieldMixin",
          "targets": [
            "io/github/cottonmc/cotton/gui/widget/WTextField"
          ],
          "handler": "onTextChanged",
          "kind": "inject",
          "method": "setText",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at io/github/cottonmc/cotton/gui/widget/WTextField#setText TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/LibGuiTextFieldMixin",
          "targets": [
            "io/github/cottonmc/cotton/gui/widget/WTextField"
          ],
          "handler": "onGetSelection",
          "kind": "inject",
          "method": "getSelection",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at io/github/cottonmc/cotton/gui/widget/WTextField#getSelection TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/LibGuiTextFieldMixin",
          "targets": [
            "io/github/cottonmc/cotton/gui/widget/WTextField"
          ],
          "handler": "onScroll",
          "kind": "inject",
          "method": "scrollCursorIntoView",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at io/github/cottonmc/cotton/gui/widget/WTextField#scrollCursorIntoView TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/LibGuiWidgetMixin",
          "targets": [
            "io/github/cottonmc/cotton/gui/widget/WWidget"
          ],
          "handler": "onFocusLost",
          "kind": "inject",
          "method": "onFocusLost",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at io/github/cottonmc/cotton/gui/widget/WWidget#onFocusLost TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/LibGuiWidgetMixin",
          "targets": [
            "io/github/cottonmc/cotton/gui/widget/WWidget"
          ],
          "handler": "handleLocationChanged",
          "kind": "inject",
          "method": "setLocation",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at io/github/cottonmc/cotton/gui/widget/WWidget#setLocation TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/LibGuiWidgetMixin",
          "targets": [
            "io/github/cottonmc/cotton/gui/widget/WWidget"
          ],
          "handler": "handleSizeChanged",
          "kind": "inject",
          "method": "setSize",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at io/github/cottonmc/cotton/gui/widget/WWidget#setSize TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/MeteorTextFieldMixin",
          "targets": [
            "meteordevelopment/meteorclient/gui/widgets/input/WTextBox"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "setFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at meteordevelopment/meteorclient/gui/widgets/input/WTextBox#setFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/MeteorTextFieldMixin",
          "targets": [
            "meteordevelopment/meteorclient/gui/widgets/input/WTextBox"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "onCharTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at meteordevelopment/meteorclient/gui/widgets/input/WTextBox#onCharTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/MeteorTextFieldMixin",
          "targets": [
            "meteordevelopment/meteorclient/gui/widgets/input/WTextBox"
          ],
          "handler": "onCursorChanged",
          "kind": "inject",
          "method": "cursorChanged",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at meteordevelopment/meteorclient/gui/widgets/input/WTextBox#cursorChanged TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/MeteorTextFieldMixin",
          "targets": [
            "meteordevelopment/meteorclient/gui/widgets/input/WTextBox"
          ],
          "handler": "handlePosChanged",
          "kind": "inject",
          "method": "move",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at meteordevelopment/meteorclient/gui/widgets/input/WTextBox#move TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/MeteorWidgetMixin",
          "targets": [
            "meteordevelopment/meteorclient/gui/widgets/WWidget"
          ],
          "handler": "onLayoutWidget",
          "kind": "inject",
          "method": "calculateWidgetPositions",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at meteordevelopment/meteorclient/gui/widgets/WWidget#calculateWidgetPositions TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ModernUISelectionMixin",
          "targets": [
            "icyllis/modernui/text/Selection"
          ],
          "handler": "imblocker$onSelectionChanged",
          "kind": "inject",
          "method": "setSelection",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at icyllis/modernui/text/Selection#setSelection TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ModernUITextViewMixin",
          "targets": [
            "icyllis/modernui/widget/TextView"
          ],
          "handler": "imblocker$focusChanged",
          "kind": "inject",
          "method": "onFocusChanged",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at icyllis/modernui/widget/TextView#onFocusChanged TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ModernUITextViewMixin",
          "targets": [
            "icyllis/modernui/widget/TextView"
          ],
          "handler": "imblocker$onLayout",
          "kind": "inject",
          "method": "onLayout",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at icyllis/modernui/widget/TextView#onLayout TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ModernUITextViewMixin",
          "targets": [
            "icyllis/modernui/widget/TextView"
          ],
          "handler": "imblocker$onTextChanged",
          "kind": "inject",
          "method": "onTextChanged",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at icyllis/modernui/widget/TextView#onTextChanged TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/RSOBaseWidgetMixin",
          "targets": [
            "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/BaseWidget"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "setFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/flashyreese/mods/reeses_sodium_options/client/gui/widget/BaseWidget#setFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/RSOTextFieldMixin",
          "targets": [
            "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/RSOTextFieldMixin",
          "targets": [
            "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget"
          ],
          "handler": "onCursorChanged",
          "kind": "inject",
          "method": "setSelectionStart",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget#setSelectionStart TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/RSOTextFieldMixin",
          "targets": [
            "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget"
          ],
          "handler": "onTextCleared",
          "kind": "inject",
          "method": "clearText",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget#clearText TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin",
          "targets": [
            "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "setFocused",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#setFocused TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin",
          "targets": [
            "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin",
          "targets": [
            "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget"
          ],
          "handler": "visibilityChanged",
          "kind": "inject",
          "method": "setVisible",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#setVisible TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin",
          "targets": [
            "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget"
          ],
          "handler": "onTextChanged",
          "kind": "inject",
          "method": "onChanged",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#onChanged TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin",
          "targets": [
            "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget"
          ],
          "handler": "onMoveCursor",
          "kind": "inject",
          "method": "moveCursorTo",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#moveCursorTo TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/SM642TextFieldMixin",
          "targets": [
            "com/supermartijn642/core/gui/widget/premade/TextFieldWidget"
          ],
          "handler": "focusChanged",
          "kind": "inject",
          "method": "setSelected",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/supermartijn642/core/gui/widget/premade/TextFieldWidget#setSelected TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/SM642TextFieldMixin",
          "targets": [
            "com/supermartijn642/core/gui/widget/premade/TextFieldWidget"
          ],
          "handler": "checkFocusTracking",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/supermartijn642/core/gui/widget/premade/TextFieldWidget#charTyped HEAD"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/SM642TextFieldMixin",
          "targets": [
            "com/supermartijn642/core/gui/widget/premade/TextFieldWidget"
          ],
          "handler": "onUpdate",
          "kind": "inject",
          "method": "update",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/supermartijn642/core/gui/widget/premade/TextFieldWidget#update TAIL"
        },
        {
          "mixin": "io/github/reserveword/imblocker/mixin/compat/SM642WidgetMixin",
          "targets": [
            "com/supermartijn642/core/gui/widget/BaseWidget"
          ],
          "handler": "onWidgetAdded",
          "kind": "inject",
          "method": "addWidget",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/supermartijn642/core/gui/widget/BaseWidget#addWidget TAIL"
        }
      ],
      "listening": 97,
      "accessors": 3,
      "hooks": {
        "frame": 1,
        "key": 2,
        "screen_opening": 2
      },
      "wanted": {
        "com/apple/library/uikit/UITextField#becomeFirstResponder @TAIL": 1,
        "com/apple/library/uikit/UITextField#charTyped @HEAD": 1,
        "com/apple/library/uikit/UITextField#resignFirstResponder @TAIL": 1,
        "com/mojang/blaze3d/platform/SDLEventHandler#handleKeyEvent @TAIL": 1,
        "com/mojang/blaze3d/platform/TextInputManager#setIMEInputMode @HEAD": 1,
        "com/mojang/blaze3d/platform/TextInputManager#setTextInputArea @HEAD": 1,
        "com/mojang/blaze3d/platform/TextInputManager#startTextInput @HEAD": 1,
        "com/mojang/blaze3d/platform/TextInputManager#stopTextInput @HEAD": 1,
        "com/mojang/blaze3d/platform/Window#<init> @TAIL": 4,
        "com/mojang/blaze3d/platform/Window#onFocus @TAIL": 2,
        "com/mojang/blaze3d/platform/Window#setGuiScale @HEAD": 1,
        "com/moulberry/axiom/editor/EditorUI#init @TAIL": 1,
        "com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField#draw @TAIL": 1,
        "com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField#handleChar @HEAD": 1,
        "com/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiTextField#onFocusChanged @TAIL": 1,
        "com/supermartijn642/core/gui/widget/BaseWidget#addWidget @TAIL": 1,
        "com/supermartijn642/core/gui/widget/premade/TextFieldWidget#charTyped @HEAD": 1,
        "com/supermartijn642/core/gui/widget/premade/TextFieldWidget#setSelected @TAIL": 1,
        "com/supermartijn642/core/gui/widget/premade/TextFieldWidget#update @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#charTyped @HEAD": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#recalculateHeight @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#scrollToCursor @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox#setFocused @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/Panel#setScrollY @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#charTyped @HEAD": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#isFocused @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#onClosed @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#scrollTo @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/TextBox#setFocused @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#onClosed @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setHeight @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setWidth @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setX @TAIL": 1,
        "dev/ftb/mods/ftblibrary/client/gui/widget/Widget#setY @TAIL": 1,
        "gg/essential/elementa/UIComponent#focus @TAIL": 1,
        "gg/essential/elementa/UIComponent#keyType @HEAD": 1,
        "gg/essential/elementa/UIComponent#loseFocus @TAIL": 1,
        "gg/essential/gui/common/input/AbstractTextInput#setCursor @TAIL": 1,
        "gg/essential/gui/common/input/AbstractTextInput#setHorizontalScrollingOffset @TAIL": 1,
        "gg/essential/gui/common/input/AbstractTextInput#setTargetVerticalScrollingOffset @TAIL": 1,
        "icyllis/modernui/text/Selection#setSelection @TAIL": 1,
        "icyllis/modernui/widget/TextView#onFocusChanged @TAIL": 1,
        "icyllis/modernui/widget/TextView#onLayout @TAIL": 1,
        "icyllis/modernui/widget/TextView#onTextChanged @TAIL": 1,
        "imgui/moulberry92/ImGui#preInputText @HEAD": 1,
        "io/github/cottonmc/cotton/gui/widget/WTextField#getSelection @TAIL": 1,
        "io/github/cottonmc/cotton/gui/widget/WTextField#onCharTyped @HEAD": 1,
        "io/github/cottonmc/cotton/gui/widget/WTextField#onFocusGained @TAIL": 1,
        "io/github/cottonmc/cotton/gui/widget/WTextField#scrollCursorIntoView @TAIL": 1,
        "io/github/cottonmc/cotton/gui/widget/WTextField#setText @TAIL": 1,
        "io/github/cottonmc/cotton/gui/widget/WWidget#onFocusLost @TAIL": 1,
        "io/github/cottonmc/cotton/gui/widget/WWidget#setLocation @TAIL": 1,
        "io/github/cottonmc/cotton/gui/widget/WWidget#setSize @TAIL": 1,
        "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/BaseWidget#setFocused @TAIL": 1,
        "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget#charTyped @HEAD": 1,
        "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget#clearText @TAIL": 1,
        "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget#setSelectionStart @TAIL": 1,
        "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#charTyped @HEAD": 1,
        "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#moveCursorTo @TAIL": 1,
        "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#onChanged @TAIL": 1,
        "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#setFocused @TAIL": 1,
        "me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget#setVisible @TAIL": 1,
        "meteordevelopment/meteorclient/gui/widgets/WWidget#calculateWidgetPositions @TAIL": 1,
        "meteordevelopment/meteorclient/gui/widgets/input/WTextBox#cursorChanged @TAIL": 1,
        "meteordevelopment/meteorclient/gui/widgets/input/WTextBox#move @TAIL": 1,
        "meteordevelopment/meteorclient/gui/widgets/input/WTextBox#onCharTyped @HEAD": 1,
        "meteordevelopment/meteorclient/gui/widgets/input/WTextBox#setFocused @TAIL": 1,
        "net/minecraft/client/KeyboardHandler#charTyped @HEAD": 1,
        "net/minecraft/client/KeyboardHandler#preeditCallback @HEAD": 1,
        "net/minecraft/client/KeyboardHandler#textEditing @HEAD": 1,
        "net/minecraft/client/Minecraft#onTextInputFocusChange @HEAD": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#applyCursor @HEAD": 1,
        "net/minecraft/client/gui/components/AbstractScrollArea#setScrollAmount @TAIL": 1,
        "net/minecraft/client/gui/components/AbstractWidget#isFocused @TAIL": 1,
        "net/minecraft/client/gui/components/AbstractWidget#setFocused @TAIL": 1,
        "net/minecraft/client/gui/components/EditBox#charTyped @HEAD": 1,
        "net/minecraft/client/gui/components/EditBox#scrollTo @HEAD": 1,
        "net/minecraft/client/gui/components/EditBox#setFocused @TAIL": 1,
        "net/minecraft/client/gui/components/EditBox#setVisible @TAIL": 1,
        "net/minecraft/client/gui/components/MultiLineEditBox#charTyped @HEAD": 1,
        "net/minecraft/client/gui/components/MultiLineEditBox#setFocused @TAIL": 1,
        "net/minecraft/client/gui/screens/ChatScreen#init @TAIL": 1,
        "net/minecraft/client/gui/screens/ChatScreen#onEdited @HEAD": 1,
        "net/minecraft/client/gui/screens/ChatScreen#removed @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractCommandBlockEditScreen#init @TAIL": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#charTyped @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#charTyped @RETURN": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#keyPressed @RETURN": 1
      },
      "wanted_calls": {
        "com/apple/library/uikit/UITextField#render @INVOKE": 1,
        "com/mojang/blaze3d/systems/RenderSystem#initBackendSystem @INVOKE": 1,
        "com/moulberry/axiom/editor/CustomImGuiImplGlfw#init @INVOKE (redirect)": 1,
        "com/moulberry/axiom/editor/EditorUI#drawOverlayInternal @INVOKE": 1,
        "imgui/moulberry92/ImGui#preInputText @HEAD (modify-variable)": 2,
        "net/minecraft/client/Minecraft#renderFrame @INVOKE": 2,
        "net/minecraft/client/gui/components/EditBox#setEditable @OVERWRITE": 1,
        "net/minecraft/client/gui/components/MultilineTextField#getLineAtCursor @OVERWRITE": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 118,
        "features": {
          "events": 1,
          "mixin": 45
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 118,
        "methods": 407,
        "tried": 407,
        "completed": 187,
        "handlers_tried": 5,
        "handlers_completed": 0,
        "missing": {
          "[Lio/github/reserveword/imblocker/common/EnglishState;#clone()Ljava/lang/Object;": 1,
          "[Lio/github/reserveword/imblocker/common/EnglishStateImpl;#clone()Ljava/lang/Object;": 1,
          "[Lio/github/reserveword/imblocker/common/LinuxIMFramework;#clone()Ljava/lang/Object;": 1,
          "[Lio/github/reserveword/imblocker/common/gui/ChatState;#clone()Ljava/lang/Object;": 1,
          "com/moulberry/axiom/editor/EditorUI#frameX": 1,
          "com/moulberry/axiom/editor/EditorUI#frameY": 1,
          "com/moulberry/axiom/editor/EditorUI#imGuiIO": 2,
          "com/moulberry/axiom/editor/EditorUI#isEnabled()Z": 1,
          "com/sun/jna/Platform#isWindows()Z": 10,
          "com/sun/jna/Pointer#getLong(J)J": 1,
          "com/sun/jna/platform/win32/User32#GetActiveWindow()Lcom/sun/jna/platform/win32/WinDef$HWND;": 4,
          "gg/essential/gui/common/input/AbstractTextInput$LinePosition#toScreenPos()Lkotlin/Pair;": 1,
          "icyllis/modernui/view/View#onScrollChanged(IIII)V": 1,
          "imgui/moulberry92/ImGui#getFontSize()I": 1,
          "imgui/moulberry92/ImGui#getID(Ljava/lang/String;)I": 1,
          "imgui/moulberry92/ImGuiIO#getWantCaptureKeyboard()Z": 1,
          "imgui/moulberry92/ImGuiInputTextCallbackData#getEventFlag()I": 2,
          "io/github/reserveword/imblocker/common/gui/MinecraftFocusableWidget#deliverFocus()V": 1,
          "io/github/reserveword/imblocker/common/gui/MinecraftMultilineEditBoxWidget#getCursorInfo()Lio/github/reserveword/imblocker/common/gui/CursorInfo;": 1,
          "io/github/reserveword/imblocker/common/gui/MinecraftTextFieldWidget#getCursorInfo()Lio/github/reserveword/imblocker/common/gui/CursorInfo;": 1,
          "io/github/reserveword/imblocker/mixin/AbstractSignEditScreenMixin#getFocusContainer()Lio/github/reserveword/imblocker/common/gui/FocusContainer;": 1,
          "io/github/reserveword/imblocker/mixin/AbstractWidgetMixin#getGuiScale()D": 1,
          "io/github/reserveword/imblocker/mixin/MultiLineEditBoxMixin#imblocker$onCursorChanged()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/AWTextInputWidgetMixin#getGuiScale()D": 2,
          "io/github/reserveword/imblocker/mixin/compat/AWTextInputWidgetMixin#imblocker$onFocusGained()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/AWTextInputWidgetMixin#imblocker$onFocusLost()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/EssentialAbstractTextInputMixin#imblocker$onFocusGained()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/EssentialAbstractTextInputMixin#imblocker$onFocusLost()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/EssentialUIComponentMixin#getGuiScale()D": 1,
          "io/github/reserveword/imblocker/mixin/compat/FtbMultilineTextBoxMixin#imblocker$onBoundsChanged()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/FtbMultilineTextBoxMixin#imblocker$onCursorChanged()V": 2,
          "io/github/reserveword/imblocker/mixin/compat/FtbMultilineTextBoxMixin#imblocker$onFocusChanged(Z)V": 1,
          "io/github/reserveword/imblocker/mixin/compat/FtbMultilineTextBoxMixin#imblocker$onFocusLost()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin#getFocusContainer()Lio/github/reserveword/imblocker/common/gui/FocusContainer;": 2,
          "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin#imblocker$onBoundsChanged()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin#imblocker$onCursorChanged()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin#imblocker$onFocusChanged(Z)V": 1,
          "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin#imblocker$onFocusLost()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/FtbWidgetMixin#getGuiScale()D": 1,
          "io/github/reserveword/imblocker/mixin/compat/LibGuiTextFieldMixin#imblocker$onBoundsChanged()V": 2,
          "io/github/reserveword/imblocker/mixin/compat/LibGuiTextFieldMixin#imblocker$onCursorChanged()V": 3,
          "io/github/reserveword/imblocker/mixin/compat/LibGuiTextFieldMixin#imblocker$onFocusGained()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/LibGuiTextFieldMixin#imblocker$onFocusLost()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/MeteorTextFieldMixin#imblocker$onBoundsChanged()V": 2,
          "io/github/reserveword/imblocker/mixin/compat/MeteorTextFieldMixin#imblocker$onFocusChanged(Z)V": 1,
          "io/github/reserveword/imblocker/mixin/compat/MeteorWidgetMixin#getGuiScale()D": 1,
          "io/github/reserveword/imblocker/mixin/compat/ModernUITextViewMixin#getX()F": 1,
          "io/github/reserveword/imblocker/mixin/compat/RSOBaseWidgetMixin#getGuiScale()D": 1,
          "io/github/reserveword/imblocker/mixin/compat/RSOTextFieldMixin#imblocker$onCursorChanged()V": 2,
          "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin#getGuiScale()D": 1,
          "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin#getPrimaryEnglishState()Z": 1,
          "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin#imblocker$onCursorChanged()V": 2,
          "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin#imblocker$onFocusChanged(Z)V": 2,
          "io/github/reserveword/imblocker/mixin/compat/ReplayModTextFieldMixin#imblocker$onFocusChanged(Z)V": 1,
          "io/github/reserveword/imblocker/mixin/compat/ReplayModTextFieldMixin#isTrulyFocused()Z": 1,
          "io/github/reserveword/imblocker/mixin/compat/SM642TextFieldMixin#imblocker$onCursorChanged()V": 1,
          "io/github/reserveword/imblocker/mixin/compat/SM642WidgetMixin#getGuiScale()D": 1,
          "java/lang/Class#getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;": 1,
          "java/lang/Class#getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;": 1,
          "java/lang/Object#notifyAll()V": 3,
          "java/lang/Object#wait(J)V": 2,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 2,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 2,
          "java/util/regex/Matcher#reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientTickEvents#START_CLIENT_TICK": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/KeyMapping#matches(Lnet/minecraft/client/input/KeyEvent;)Z": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 20,
          "net/minecraft/client/gui/components/EditBox#getValue()Ljava/lang/String;": 2,
          "net/minecraft/client/gui/components/MultilineTextField#getLineAtCursor()I": 1,
          "net/minecraft/client/gui/font/TextFieldHelper#getCursorPos()I": 2,
          "net/minecraft/client/gui/screens/Screen#getFont()Lnet/minecraft/client/gui/Font;": 1,
          "net/minecraft/client/input/KeyEvent#key()I": 2,
          "new com/sun/jna/Pointer": 1,
          "new com/sun/jna/platform/win32/WinDef$HWND": 3,
          "new it/unimi/dsi/fastutil/floats/FloatArrayList": 1,
          "org/lwjgl/sdl/SDLKeyboard#SDL_StopTextInput(J)Z": 1,
          "org/lwjgl/sdl/SDL_Event#type()I": 3,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfo#cancel()V": 5,
          "top/fifthlight/blazesdl/api/BlazeSDLAPI#getInstance()Ltop/fifthlight/blazesdl/api/BlazeSDLAPI;": 1
        },
        "runs": [
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/RSOTextFieldMixin",
            "method": "getCursorInfo",
            "desc": "()Lio/github/reserveword/imblocker/common/gui/SinglelineCursorInfo;",
            "value": "obj#13"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/RSOTextFieldMixin",
            "method": "getPaddingX",
            "desc": "()I",
            "value": "6"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/RSOTextFieldMixin",
            "method": "getCursorInfo",
            "desc": "()Lio/github/reserveword/imblocker/common/gui/CursorInfo;",
            "value": "obj#17"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/FtbTextFieldMixin",
            "method": "isRenderable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerCore",
            "method": "isFTBScreen",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/ImGuiMixin",
            "method": "enableCallbacks",
            "desc": "(I)I",
            "value": "1048576"
          },
          {
            "class": "io/github/reserveword/imblocker/common/MinecraftClientUtil",
            "method": "isGameVersionReached",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/ReplayModTextFieldMixin",
            "method": "getBoundsAbs",
            "desc": "()Lio/github/reserveword/imblocker/common/gui/Rectangle;",
            "value": "obj#20"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/ReplayModTextFieldMixin",
            "method": "updateCursorInfo",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/ReplayModTextFieldMixin",
            "method": "getCursorInfo",
            "desc": "()Lio/github/reserveword/imblocker/common/gui/SinglelineCursorInfo;",
            "value": "obj#90"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/ReplayModTextFieldMixin",
            "method": "getCursorInfo",
            "desc": "()Lio/github/reserveword/imblocker/common/gui/CursorInfo;",
            "value": "obj#92"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/MinecraftFocusContext",
            "method": "getGuiScale",
            "desc": "()D",
            "value": "inf"
          },
          {
            "class": "io/github/reserveword/imblocker/common/EnglishState",
            "method": "getBoolean",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/TextFieldMixin",
            "method": "getPreferredEnglishState",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/TextFieldMixin",
            "method": "isRenderable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMManagerWindows",
            "method": "getConversionStatusCooldown",
            "desc": "()J",
            "value": "60"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/ModernUITextViewMixin",
            "method": "getInternalGuiScale",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Rectangle",
            "method": "derive",
            "desc": "(D)Lio/github/reserveword/imblocker/common/gui/Rectangle;",
            "value": "obj#185"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Rectangle",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Rectangle",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Rectangle",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Rectangle",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/FocusContainer",
            "method": "getPreferredState",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/FocusContainer",
            "method": "getInternalGuiScale",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/FocusContainer",
            "method": "getGuiScale",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/MeteorWidgetMixin",
            "method": "getInternalGuiScale",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Dimension",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Dimension",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/LinuxKeyCallbackMonitor",
            "method": "evaluateKey",
            "desc": "(III)Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/MathHelper",
            "method": "clamp",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/MathHelper",
            "method": "clampLong",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/FtbWidgetMixin",
            "method": "getAbsoluteX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/FtbWidgetMixin",
            "method": "getAbsoluteY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Point",
            "method": "derive",
            "desc": "(D)Lio/github/reserveword/imblocker/common/gui/Point;",
            "value": "obj#258"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Point",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/Point",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/MultilineTextFieldMixin",
            "method": "getLineAtCursor",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerConfig",
            "method": "isCharSimulationPreferred",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerConfig",
            "method": "isScreenRecoveringEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerConfig",
            "method": "getPrimaryEnglishState",
            "desc": "()Lio/github/reserveword/imblocker/common/EnglishState;",
            "value": "obj#123"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerConfig",
            "method": "useStrictCursorRect",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerConfig",
            "method": "isConversionStatusApiEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerConfig",
            "method": "isClassicCompositionStyle",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerConfig",
            "method": "isIngameIMEEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerConfig",
            "method": "isLinuxKeyboardPatchEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/IMBlockerConfig",
            "method": "isHeadlessPreeditMode",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/BlazeSDLBridge$1",
            "method": "getPriority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/ImGuiFocusContext",
            "method": "getFontHeight",
            "desc": "()I",
            "value": "24"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/ImGuiFocusContext",
            "method": "getPreferredEnglishState",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin",
            "method": "getCursorInfo",
            "desc": "()Lio/github/reserveword/imblocker/common/gui/SinglelineCursorInfo;",
            "value": "obj#315"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/ReiTextFieldMixin",
            "method": "getCursorInfo",
            "desc": "()Lio/github/reserveword/imblocker/common/gui/CursorInfo;",
            "value": "obj#322"
          },
          {
            "class": "io/github/reserveword/imblocker/mixin/compat/AWTextInputWidgetMixin",
            "method": "getFontHeight",
            "desc": "()I",
            "value": "8"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/FocusableWidget",
            "method": "getPreferredState",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/FocusableWidget",
            "method": "isRenderable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/MinecraftAbstractTextInputWidget",
            "method": "updateCursorInfo",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/CaretInfo",
            "method": "caretX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/CaretInfo",
            "method": "caretY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/CaretInfo",
            "method": "inputHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/FocusableObject",
            "method": "isTrulyFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/FocusableObject",
            "method": "getPreferredEnglishState",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/FocusableObject",
            "method": "getFontHeight",
            "desc": "()I",
            "value": "8"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/FocusManager",
            "method": "isMinecraftContextFocused",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/MinecraftTextFieldWidget",
            "method": "getPrimaryEnglishState",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/reserveword/imblocker/common/gui/MinecraftTextFieldWidget",
            "method": "getPaddingX",
            "desc": "()I",
            "value": "4"
          }
        ],
        "insns": 5213
      },
      "verdict": "no",
      "summary": "only 5 of 97 listening patch sites have a hook (5%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "immediatelyfast",
      "name": "ImmediatelyFast",
      "version": "1.17.1+26.3",
      "license": "LGPL-3.0-or-later",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [],
      "mixin_configs": [
        "immediatelyfast-common.mixins.json",
        "immediatelyfast-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 44,
      "methods": 178,
      "sites": [
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/avoid_redundant_framebuffer_switching/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "dontUnbindFramebuffer",
          "kind": "wrap-with-condition",
          "method": "submitRenderPass",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/GlStateManager;_glBindFramebuffer(II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/avoid_redundant_framebuffer_switching/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "unbindFramebufferBeforePresenting",
          "kind": "inject",
          "method": "presentTexture",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlCommandEncoder#presentTexture HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/avoid_redundant_framebuffer_switching/MixinGlSurface",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlSurface"
          ],
          "handler": "unbindFramebufferBeforeSwappingBuffers",
          "kind": "inject",
          "method": "present",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlSurface#present HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/batch_animated_item_updates/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "prepareAnimatedItemAtlas",
          "kind": "inject",
          "method": "prepareItemElements",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/render/GuiRenderer;prepareItemAtlas(Ljava/util/Set;I)Lnet/minecraft/client/gui/render/GuiItemAtlas;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#prepareItemElements INVOKE"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/batch_animated_item_updates/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "endAnimatedItemAtlasFrame",
          "kind": "inject",
          "method": "endFrame",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#endFrame RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/batch_animated_item_updates/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "invalidateAnimatedItemAtlas",
          "kind": "inject",
          "method": "invalidateItemAtlas",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#invalidateItemAtlas RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/batch_animated_item_updates/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "closeAnimatedItemAtlas",
          "kind": "inject",
          "method": "close",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#close RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/core/MixinDebugScreenEntries",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntries"
          ],
          "handler": "addImmediatelyFastEntry",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/core/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "hookRendererInit",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/systems/RenderSystem;initRenderer(Lcom/mojang/renderpearl/api/device/GpuDevice;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init> INVOKE"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/core/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "hookConstructor",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "client_start",
          "why": "the client object is built"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/core/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "hookLevelChange",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_level_load",
          "why": "LevelEvent.Load: a level is set on the client"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/enhanced_batching/MixinRenderTypeFeatureRenderer_Group",
          "targets": [
            "net/minecraft/client/renderer/feature/RenderTypeFeatureRenderer$Group"
          ],
          "handler": "forceReorderability",
          "kind": "modify-variable",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/fast_text_lookup/MixinTextFeatureRenderer_GlyphRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/TextFeatureRenderer$GlyphRenderer"
          ],
          "handler": "reduceGetVertexBuilderCalls",
          "kind": "redirect",
          "method": "acceptRenderable",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/feature/TextFeatureRenderer;getVertexBuilder(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lcom/mojang/blaze3d/vertex/VertexConsumer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/fix_slow_buffer_upload_on_apple_gpu/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "fixSlowBufferUploadOnAppleGpu",
          "kind": "redirect",
          "method": "writeToBuffer",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/DirectStateAccess;bufferSubData(IJLjava/nio/ByteBuffer;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
          "targets": [
            "net/minecraft/client/gui/font/FontTexture"
          ],
          "handler": "cacheConfigState",
          "kind": "inject",
          "method": "<init>",
          "at": "CTOR_HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/FontTexture#<init> CTOR_HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
          "targets": [
            "net/minecraft/client/gui/font/FontTexture"
          ],
          "handler": "modifyTextureSize",
          "kind": "modify-constant",
          "method": "*",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
          "targets": [
            "net/minecraft/client/gui/font/FontTexture"
          ],
          "handler": "modifyTextureSize",
          "kind": "modify-constant",
          "method": "*",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinGuiGraphicsExtractor",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "modifyTextureCoordinates",
          "kind": "wrap-operation",
          "method": "map",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;innerBlit(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lcom/mojang/renderpearl/api/textures/GpuTextureView;Lcom/mojang/renderpearl/api/textures/GpuSampler;IIIIFFFFI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapRenderer",
          "targets": [
            "net/minecraft/client/renderer/MapRenderer"
          ],
          "handler": "modifyTextureCoordinates",
          "kind": "modify-arg",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitCustomGeometry(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/SubmitNodeCollector$CustomGeometryRenderer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapRenderer",
          "targets": [
            "net/minecraft/client/renderer/MapRenderer"
          ],
          "handler": "setAtlasParameters",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/MapRenderer#extractRenderState RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapTextureManager",
          "targets": [
            "net/minecraft/client/resources/MapTextureManager"
          ],
          "handler": "resetAtlases",
          "kind": "inject",
          "method": "resetData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/MapTextureManager#resetData RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapTextureManager",
          "targets": [
            "net/minecraft/client/resources/MapTextureManager"
          ],
          "handler": "ensureHasAtlasLocation",
          "kind": "inject",
          "method": "getOrCreateMapInstance",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/MapTextureManager#getOrCreateMapInstance HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapTextureManager_MapInstance",
          "targets": [
            "net/minecraft/client/resources/MapTextureManager$MapInstance"
          ],
          "handler": "getAtlasParameters",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/MapTextureManager$MapInstance#<init> RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/map_atlas_generation/MixinMapTextureManager_MapInstance",
          "targets": [
            "net/minecraft/client/resources/MapTextureManager$MapInstance"
          ],
          "handler": "updateAtlasTexture",
          "kind": "inject",
          "method": "updateTextureIfNeeded",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/DynamicTexture;upload()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/MapTextureManager$MapInstance#updateTextureIfNeeded INVOKE"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/print_additional_error_information/MixinGlDebug",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlDebug"
          ],
          "handler": "enableSyncDebug",
          "kind": "modify-variable",
          "method": "enableDebugCallback",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/print_additional_error_information/MixinGlDebug",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlDebug"
          ],
          "handler": "appendStackTrace",
          "kind": "redirect",
          "method": "printDebugLog",
          "at": "INVOKE",
          "at_target": "Lorg/slf4j/Logger;info(Ljava/lang/String;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/resource_pack_conflict_handling/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "checkResourcePackCompatibility",
          "kind": "inject",
          "method": "onResourceLoadFinished",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#onResourceLoadFinished RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/sign_text_buffering/MixinAbstractSignRenderer",
          "targets": [
            "net/minecraft/client/renderer/blockentity/AbstractSignRenderer"
          ],
          "handler": "renderBufferedSignText",
          "kind": "inject",
          "method": "submitSignText",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/AbstractSignRenderer#submitSignText HEAD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/sign_text_buffering/MixinSignText",
          "targets": [
            "net/minecraft/world/level/block/entity/SignText"
          ],
          "handler": "checkShouldCache",
          "kind": "inject",
          "method": "getRenderMessages",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SignText#getRenderMessages RETURN"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/sign_text_buffering/MixinSignText",
          "targets": [
            "net/minecraft/world/level/block/entity/SignText"
          ],
          "handler": "invalidateCache",
          "kind": "inject",
          "method": "getRenderMessages",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/block/entity/SignText;renderMessages:[Lnet/minecraft/util/FormattedCharSequence;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SignText#getRenderMessages FIELD"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/skip_text_translucency_sorting/MixinRenderTypes",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "disableTranslucencySorting",
          "kind": "redirect",
          "method": "lambda$static$22",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;sortOnUpload()Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/skip_text_translucency_sorting/MixinRenderTypes",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "disableTranslucencySorting",
          "kind": "redirect",
          "method": "lambda$static$23",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;sortOnUpload()Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/raphimc/immediatelyfast/injection/mixins/skip_text_translucency_sorting/MixinRenderTypes",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "disableTranslucencySorting",
          "kind": "redirect",
          "method": "lambda$static$25",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;sortOnUpload()Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        }
      ],
      "listening": 15,
      "accessors": 0,
      "hooks": {
        "client_level_load": 1,
        "client_start": 1
      },
      "wanted": {
        "com/mojang/renderpearl/backend/opengl/GlCommandEncoder#presentTexture @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlSurface#present @HEAD": 1,
        "net/minecraft/client/Minecraft#onResourceLoadFinished @RETURN": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> @RETURN": 1,
        "net/minecraft/client/gui/render/GuiRenderer#close @RETURN": 1,
        "net/minecraft/client/gui/render/GuiRenderer#endFrame @RETURN": 1,
        "net/minecraft/client/gui/render/GuiRenderer#invalidateItemAtlas @RETURN": 1,
        "net/minecraft/client/renderer/MapRenderer#extractRenderState @RETURN": 1,
        "net/minecraft/client/renderer/blockentity/AbstractSignRenderer#submitSignText @HEAD": 1,
        "net/minecraft/client/resources/MapTextureManager#getOrCreateMapInstance @HEAD": 1,
        "net/minecraft/client/resources/MapTextureManager#resetData @RETURN": 1,
        "net/minecraft/client/resources/MapTextureManager$MapInstance#<init> @RETURN": 1,
        "net/minecraft/world/level/block/entity/SignText#getRenderMessages @RETURN": 1
      },
      "wanted_calls": {
        "com/mojang/renderpearl/backend/opengl/DirectStateAccess#bufferSubData @INVOKE (redirect)": 1,
        "com/mojang/renderpearl/backend/opengl/GlDebug#enableDebugCallback @HEAD (modify-variable)": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_glBindFramebuffer @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/Minecraft#<init> @INVOKE": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#innerBlit @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/font/FontTexture#* @HEAD (modify-constant)": 2,
        "net/minecraft/client/gui/font/FontTexture#<init> @CTOR_HEAD": 1,
        "net/minecraft/client/gui/render/GuiRenderer#prepareItemElements @INVOKE": 1,
        "net/minecraft/client/renderer/SubmitNodeCollector#submitCustomGeometry @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/feature/RenderTypeFeatureRenderer$Group#<init> @HEAD (modify-variable)": 1,
        "net/minecraft/client/renderer/feature/TextFeatureRenderer#getVertexBuilder @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder#sortOnUpload @INVOKE (redirect)": 3,
        "net/minecraft/client/resources/MapTextureManager$MapInstance#updateTextureIfNeeded @INVOKE": 1,
        "net/minecraft/world/level/block/entity/SignText#getRenderMessages @FIELD": 1,
        "org/slf4j/Logger#info @INVOKE (redirect)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 44,
        "features": {
          "renderer": 2,
          "mixin": 22
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 44,
        "methods": 82,
        "tried": 82,
        "completed": 48,
        "handlers_tried": 2,
        "handlers_completed": 1,
        "missing": {
          "com/google/common/cache/Cache#invalidateAll()V": 2,
          "com/mojang/blaze3d/systems/RenderSystem#getDevice()Lcom/mojang/renderpearl/api/device/GpuDevice;": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_glBindFramebuffer(II)V": 2,
          "it/unimi/dsi/fastutil/ints/Int2ObjectMap#values()Lit/unimi/dsi/fastutil/objects/ObjectCollection;": 1,
          "java/util/ServiceLoader#load(Ljava/lang/Class;)Ljava/util/ServiceLoader;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/resources/Identifier#toDebugFileName()Ljava/lang/String;": 2,
          "net/minecraft/util/Mth#smallestSquareSide(I)I": 1,
          "net/minecraft/world/level/saveddata/maps/MapId#id()I": 1,
          "new it/unimi/dsi/fastutil/objects/ObjectOpenHashSet": 1,
          "org/slf4j/Logger#info(Ljava/lang/String;Ljava/lang/Object;)V": 1
        },
        "runs": [
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
            "method": "modifyTextureSize",
            "desc": "(I)I",
            "value": "256"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/font_atlas_resizing/MixinFontTexture",
            "method": "modifyTextureSize",
            "desc": "(F)F",
            "value": "256f"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastRuntimeConfig",
            "method": "getInt",
            "desc": "(Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastRuntimeConfig",
            "method": "getLong",
            "desc": "(Ljava/lang/String;J)J",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastDebugScreenEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getAtlasIdFromLocation",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getAtlasXFromLocation",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getAtlasYFromLocation",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getNextLocation",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlas",
            "method": "getMapCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/enhanced_batching/MixinRenderTypeFeatureRenderer_Group",
            "method": "forceReorderability",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/print_additional_error_information/MixinGlDebug",
            "method": "enableSyncDebug",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/batch_animated_item_updates/AnimatedItemAtlas",
            "method": "getLastUsedSlotCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastConfig",
            "method": "getBoolean",
            "desc": "(Ljava/lang/String;Z)Z",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastConfig",
            "method": "getInt",
            "desc": "(Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/core/ImmediatelyFastConfig",
            "method": "getLong",
            "desc": "(Ljava/lang/String;J)J",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget",
            "method": "getId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/enhanced_batching/MixinScissorState",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/injection/mixins/enhanced_batching/MixinScissorState",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget$Slot",
            "method": "findSlot",
            "desc": "(II)Lnet/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget$Slot;",
            "value": "obj#62"
          },
          {
            "class": "net/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget$Slot",
            "method": "hasOccupiedSlot",
            "desc": "(Lnet/raphimc/immediatelyfast/feature/sign_text_buffering/SignAtlasRenderTarget$Slot;)Z",
            "value": "0"
          }
        ],
        "insns": 494
      },
      "verdict": "no",
      "summary": "only 2 of 15 listening patch sites have a hook (13%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "inventoryprofilesnext",
      "name": "Inventory Profiles Next",
      "version": "2.3.8",
      "license": "AGPL-3",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "org/anti_ad/mc/ipnext/InventoryProfilesKt::init"
        },
        {
          "kind": "modmenu",
          "value": "org/anti_ad/mc/ipnext/compat/ModMenuApiImpl"
        }
      ],
      "mixin_configs": [
        "mixins.ipnext.json"
      ],
      "depends": [
        "libipn"
      ],
      "classes": 752,
      "methods": 5538,
      "sites": [
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinAnvilScreenHandler",
          "targets": [
            "net/minecraft/world/inventory/AnvilMenu"
          ],
          "handler": "onTakeOutputPre",
          "kind": "inject",
          "method": "Lnet/minecraft/world/inventory/AnvilMenu;onTake",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/AnvilMenu#Lnet/minecraft/world/inventory/AnvilMenu;onTake HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinAnvilScreenHandler",
          "targets": [
            "net/minecraft/world/inventory/AnvilMenu"
          ],
          "handler": "onTakeOutputPost",
          "kind": "inject",
          "method": "Lnet/minecraft/world/inventory/AnvilMenu;onTake",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/AnvilMenu#Lnet/minecraft/world/inventory/AnvilMenu;onTake TAIL"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onPostGameJoin",
          "kind": "inject",
          "method": "handleLogin",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onInventory",
          "kind": "inject",
          "method": "handleContainerContent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinClientPlayerInteractionManager",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "clickSlotPre",
          "kind": "inject",
          "method": "handleContainerInput",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#handleContainerInput HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinClientPlayerInteractionManager",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "clickSlot",
          "kind": "inject",
          "method": "handleContainerInput",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#handleContainerInput TAIL"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinClientPlayerInteractionManager",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "clickCreativeStack",
          "kind": "inject",
          "method": "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;handleCreativeModeItemAdd",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;handleCreativeModeItemAdd HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinClientPlayerInteractionManager",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "pickFromInventory",
          "kind": "inject",
          "method": "handlePickItemFromBlock",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#handlePickItemFromBlock HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinClientPlayerInteractionManager",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "pickFromInventory",
          "kind": "inject",
          "method": "handlePickItemFromEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#handlePickItemFromEntity HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinContainerScreen",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "onBackgroundRender",
          "kind": "inject",
          "method": "extractContents",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/AbstractContainerScreen;extractSlotHighlightBack(Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractContents INVOKE"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinContainerScreen",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "onForegroundRender",
          "kind": "inject",
          "method": "extractContents",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/AbstractContainerScreen;extractSlotHighlightFront(Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractContents INVOKE"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinContainerScreen",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "onMouseClick",
          "kind": "inject",
          "method": "slotClicked",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#slotClicked HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinContainerScreen",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "afterOnMouseClick",
          "kind": "inject",
          "method": "slotClicked",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#slotClicked TAIL"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinCraftingResultSlot",
          "targets": [
            "net/minecraft/world/inventory/ResultSlot"
          ],
          "handler": "onCrafted",
          "kind": "inject",
          "method": "checkTakeAchievements",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/ResultSlot#checkTakeAchievements HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "preScreenRender",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;extractRenderStateWithTooltipAndSubtitles(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#extractRenderState INVOKE"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "postScreenRender",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;extractRenderStateWithTooltipAndSubtitles(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#extractRenderState INVOKE"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinGuiCloseC2SPacket",
          "targets": [
            "net/minecraft/network/protocol/game/ServerboundContainerClosePacket"
          ],
          "handler": "onConstructed",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/protocol/game/ServerboundContainerClosePacket#<init> RETURN"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinInGameHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "preRenderHotbar",
          "kind": "inject",
          "method": "extractItemHotbar",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinInGameHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "postRenderHotbar",
          "kind": "inject",
          "method": "extractItemHotbar",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinMerchantScreen",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/MerchantScreen"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "extractContents",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/MerchantScreen;extractAndDecorateCostA(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/MerchantScreen#extractContents INVOKE"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "tick2",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "joinWorld",
          "kind": "inject",
          "method": "setLevel",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#setLevel RETURN"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "handleInputEventsPre",
          "kind": "inject",
          "method": "handleKeybinds",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "key",
          "why": "the frame's keys are handled"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "handleInputEventsPost",
          "kind": "inject",
          "method": "handleKeybinds",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#handleKeybinds TAIL"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "doItemPickPre",
          "kind": "inject",
          "method": "pickBlockOrEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#pickBlockOrEntity HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "doItemPickPost",
          "kind": "inject",
          "method": "pickBlockOrEntity",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#pickBlockOrEntity TAIL"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinPlayerInteractEntityC2SPacket",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "interactAt",
          "kind": "inject",
          "method": "interactOn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#interactOn HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinPlayerInteractionManagerForLockedSlotsMovePrevention",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "clickSlot",
          "kind": "inject",
          "method": "handleContainerInput",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#handleContainerInput HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinPlayerInteractionManagerForLockedSlotsMovePrevention",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "postClickSlot",
          "kind": "inject",
          "method": "handleContainerInput",
          "at": "TAIL",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#handleContainerInput TAIL"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinPlayerInventory",
          "targets": [
            "net/minecraft/world/entity/player/Inventory"
          ],
          "handler": "getEmptySlot",
          "kind": "inject",
          "method": "getFreeSlot",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Inventory#getFreeSlot HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinPlayerInventory",
          "targets": [
            "net/minecraft/world/entity/player/Inventory"
          ],
          "handler": "addStackPre",
          "kind": "inject",
          "method": "addResource",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Inventory#addResource HEAD"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinPlayerInventory",
          "targets": [
            "net/minecraft/world/entity/player/Inventory"
          ],
          "handler": "addStackPost",
          "kind": "inject",
          "method": "addResource",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Inventory#addResource TAIL"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinScreen",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "init",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_init_post",
          "why": "ScreenEvent.Init.Post: a screen's widgets are built, where a mod adds its own"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinScreen",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "removed",
          "kind": "inject",
          "method": "removed",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#removed RETURN"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinScreen",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "close",
          "kind": "inject",
          "method": "onClose",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#onClose RETURN"
        },
        {
          "mixin": "org/anti_ad/mc/ipnext/mixin/MixinVirtualMouseHandler",
          "targets": [
            "dev/isxander/controlify/virtualmouse/VirtualMouseHandler"
          ],
          "handler": "ipn$VirtualMouseHandler$handleControllerInput",
          "kind": "inject",
          "method": "handleControllerInput",
          "at": "FIELD",
          "at_target": "Ldev/isxander/controlify/virtualmouse/VirtualMouseHandler;snapPoints:Ljava/util/Set;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at dev/isxander/controlify/virtualmouse/VirtualMouseHandler#handleControllerInput FIELD"
        }
      ],
      "listening": 31,
      "accessors": 12,
      "hooks": {
        "hud": 2,
        "key": 1,
        "net_from_server": 2,
        "screen_init_post": 1,
        "tick": 2
      },
      "wanted": {
        "net/minecraft/client/Minecraft#handleKeybinds @TAIL": 1,
        "net/minecraft/client/Minecraft#pickBlockOrEntity @HEAD": 1,
        "net/minecraft/client/Minecraft#pickBlockOrEntity @TAIL": 1,
        "net/minecraft/client/Minecraft#setLevel @RETURN": 1,
        "net/minecraft/client/gui/screens/Screen#onClose @RETURN": 1,
        "net/minecraft/client/gui/screens/Screen#removed @RETURN": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#slotClicked @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#slotClicked @TAIL": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;handleCreativeModeItemAdd @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#handleContainerInput @HEAD": 2,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#handleContainerInput @TAIL": 2,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#handlePickItemFromBlock @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#handlePickItemFromEntity @HEAD": 1,
        "net/minecraft/network/protocol/game/ServerboundContainerClosePacket#<init> @RETURN": 1,
        "net/minecraft/world/entity/player/Inventory#addResource @HEAD": 1,
        "net/minecraft/world/entity/player/Inventory#addResource @TAIL": 1,
        "net/minecraft/world/entity/player/Inventory#getFreeSlot @HEAD": 1,
        "net/minecraft/world/entity/player/Player#interactOn @HEAD": 1,
        "net/minecraft/world/inventory/AnvilMenu#Lnet/minecraft/world/inventory/AnvilMenu;onTake @HEAD": 1,
        "net/minecraft/world/inventory/AnvilMenu#Lnet/minecraft/world/inventory/AnvilMenu;onTake @TAIL": 1,
        "net/minecraft/world/inventory/ResultSlot#checkTakeAchievements @HEAD": 1
      },
      "wanted_calls": {
        "dev/isxander/controlify/virtualmouse/VirtualMouseHandler#handleControllerInput @FIELD": 1,
        "net/minecraft/client/gui/Gui#extractRenderState @INVOKE": 2,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractContents @INVOKE": 2,
        "net/minecraft/client/gui/screens/inventory/MerchantScreen#extractContents @INVOKE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "AttachmentTarget",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PacketContextProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 752,
        "features": {
          "command": 1,
          "mixin": 21
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 752,
        "methods": 2660,
        "tried": 600,
        "completed": 316,
        "handlers_tried": 8,
        "handlers_completed": 1,
        "missing": {
          "[I#clone()Ljava/lang/Object;": 1,
          "[Lorg/anti_ad/embedded/b/a/a/a/a/I;#clone()Ljava/lang/Object;": 1,
          "java/lang/Integer#numberOfLeadingZeros(I)I": 1,
          "java/lang/Object#clone()Ljava/lang/Object;": 5,
          "java/nio/CharBuffer#array()[C": 1,
          "java/nio/CharBuffer#flip()Ljava/nio/Buffer;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 2,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#clear()V": 3,
          "kotlin/Lazy#getValue()Ljava/lang/Object;": 7,
          "kotlin/Pair#component1()Ljava/lang/Object;": 1,
          "kotlin/Unit#INSTANCE": 1,
          "kotlin/collections/CollectionsKt#collectionSizeOrDefault(Ljava/lang/Iterable;I)I": 2,
          "kotlin/collections/IndexedValue#getValue()Ljava/lang/Object;": 1,
          "kotlin/collections/MapsKt#getValue(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "kotlin/text/StringsKt#isBlank(Ljava/lang/CharSequence;)Z": 1,
          "kotlinx/serialization/json/Json#getSerializersModule()Lkotlinx/serialization/modules/SerializersModule;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/player/LocalPlayer#getInventory()Lnet/minecraft/world/entity/player/Inventory;": 2,
          "net/minecraft/nbt/NbtUtils#compareNbt(Lnet/minecraft/nbt/Tag;Lnet/minecraft/nbt/Tag;Z)Z": 1,
          "net/minecraft/resources/Identifier#hashCode()I": 1,
          "net/minecraft/world/inventory/ContainerInput#PICKUP": 3,
          "net/minecraft/world/inventory/ContainerInput#QUICK_MOVE": 1,
          "net/minecraft/world/inventory/ContainerInput#SWAP": 1,
          "net/minecraft/world/inventory/ContainerInput#THROW": 1,
          "net/minecraft/world/item/component/ChargedProjectiles#items()Ljava/util/List;": 1,
          "net/minecraft/world/level/saveddata/maps/MapId#id()I": 1,
          "new net/minecraft/commands/arguments/NbtPathArgument": 1,
          "new org/anti_ad/mc/common/extensions/ByPropertyName": 1,
          "new org/anti_ad/mc/common/gui/NativeContext": 4,
          "org/anti_ad/embedded/b/a/a/a/L#add(Ljava/lang/Object;)Z": 4,
          "org/anti_ad/embedded/b/a/a/a/a/I#ordinal()I": 1,
          "org/anti_ad/embedded/b/a/a/a/d/b#setParent(Lorg/anti_ad/embedded/b/a/a/a/M;)V": 1,
          "org/anti_ad/embedded/b/a/a/a/d/i#setParent(Lorg/anti_ad/embedded/b/a/a/a/M;)V": 1,
          "org/anti_ad/embedded/b/a/a/a/l#a(Lorg/anti_ad/embedded/b/a/a/a/c/k;)Ljava/lang/String;": 1,
          "org/anti_ad/mc/alias/registry/RegistryExKt#get(REGISTRIES-BLOCK-IDS)()Ljava/util/Set;": 1,
          "org/anti_ad/mc/common/input/GlobalInputHandler#INSTANCE": 2,
          "org/anti_ad/mc/common/input/MainKeybind#isPressing()Z": 2,
          "org/anti_ad/mc/common/math2d/Point#getX()I": 4,
          "org/anti_ad/mc/common/math2d/Point#plus(Lorg/anti_ad/mc/common/math2d/Point;)Lorg/anti_ad/mc/common/math2d/Point;": 4,
          "org/anti_ad/mc/common/vanilla/Vanilla#INSTANCE": 11,
          "org/anti_ad/mc/common/vanilla/VanillaUtil#INSTANCE": 2,
          "org/anti_ad/mc/common/vanilla/render/glue/Sprite#down$default(Lorg/anti_ad/mc/common/vanilla/render/glue/Sprite;IILjava/lang/Object;)Lorg/anti_ad/mc/common/vanilla/render/glue/Sprite;": 2,
          "org/anti_ad/mc/common/vanilla/render/glue/Sprite#left$default(Lorg/anti_ad/mc/common/vanilla/render/glue/Sprite;IILjava/lang/Object;)Lorg/anti_ad/mc/common/vanilla/render/glue/Sprite;": 2,
          "org/anti_ad/mc/common/vanilla/render/glue/Sprite#right$default(Lorg/anti_ad/mc/common/vanilla/render/glue/Sprite;IILjava/lang/Object;)Lorg/anti_ad/mc/common/vanilla/render/glue/Sprite;": 1,
          "org/anti_ad/mc/common/vanilla/render/glue/Sprite#right(I)Lorg/anti_ad/mc/common/vanilla/render/glue/Sprite;": 2,
          "org/anti_ad/mc/ipnext/gui/DebugScreen#getParent()Lnet/minecraft/client/gui/screens/Screen;": 3,
          "org/anti_ad/mc/ipnext/gui/inject/base/TexturedButtonWidget#setVisible(Z)V": 1,
          "org/anti_ad/mc/ipnext/profiles/config/ProfileSlotId#hashCode()I": 1
        },
        "runs": [
          {
            "class": "org/anti_ad/embedded/b/a/a/a/l",
            "method": "b",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/l",
            "method": "c",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/BaseRule",
            "method": "getArguments",
            "desc": "()Lorg/anti_ad/mc/ipnext/item/rule/ArgumentMap;",
            "value": "obj#16"
          },
          {
            "class": "org/anti_ad/mc/ipnext/event/autorefill/AutoRefillHandler$ItemSlotMonitor",
            "method": "getStoredSlotId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/event/autorefill/AutoRefillHandler$ItemSlotMonitor",
            "method": "getTickCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/event/autorefill/AutoRefillHandler$ItemSlotMonitor",
            "method": "getCurrentSlotId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/event/autorefill/AutoRefillHandler$ItemSlotMonitor",
            "method": "getShouldHandle",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/A",
            "method": "d",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/A",
            "method": "a",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/A",
            "method": "b",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/A",
            "method": "a",
            "desc": "(III)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/K",
            "method": "sempred",
            "desc": "(Lorg/anti_ad/embedded/b/a/a/a/M;II)Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/K",
            "method": "precpred",
            "desc": "(Lorg/anti_ad/embedded/b/a/a/a/M;I)Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/K",
            "method": "getState",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/ae",
            "method": "a",
            "desc": "()I",
            "value": "4"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/ae",
            "method": "b",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/ae",
            "method": "a",
            "desc": "(III)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/ae",
            "method": "d",
            "desc": "()Lorg/anti_ad/embedded/b/a/a/a/a/av;",
            "value": "obj#110"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/MutableItemStack",
            "method": "getCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/file/RuleFileRegister",
            "method": "getLoadedFileNames",
            "desc": "()Ljava/util/Set;",
            "value": "obj#118"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gen/ProfilesParser$ItemNameContext",
            "method": "getRuleIndex",
            "desc": "()I",
            "value": "5"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/ImmutableItemStack",
            "method": "getCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/an",
            "method": "b",
            "desc": "()I",
            "value": "7"
          },
          {
            "class": "org/anti_ad/mc/ipnext/event/SlotHighlightHandler",
            "method": "getAlphaChannel",
            "desc": "()I",
            "value": "10"
          },
          {
            "class": "org/anti_ad/mc/ipnext/event/SlotHighlightHandler",
            "method": "getStep",
            "desc": "()I",
            "value": "10"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/EmptyRule",
            "method": "getArguments",
            "desc": "()Lorg/anti_ad/mc/ipnext/item/rule/ArgumentMap;",
            "value": "obj#168"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/q",
            "method": "a",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/q",
            "method": "c",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/q",
            "method": "d",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/q",
            "method": "e",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/q",
            "method": "f",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/q",
            "method": "g",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/q",
            "method": "h",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/ArgumentMap",
            "method": "getMissingParameters",
            "desc": "()Ljava/util/List;",
            "value": "obj#216"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/T",
            "method": "b",
            "desc": "()I",
            "value": "12"
          },
          {
            "class": "org/anti_ad/mc/ipnext/inventory/sandbox/diffcalculator/DiffCalculatorInstance$CompareSlotDsl",
            "method": "getSlotIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/parameter/BooleanArgumentType",
            "method": "toString",
            "desc": "(Z)Ljava/lang/String;",
            "value": "\"0\""
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/parameter/BooleanArgumentType",
            "method": "toString",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "org/anti_ad/mc/ipnext/inventory/data/ItemStat$GroupEntry",
            "method": "getItemCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/inventory/data/ItemStat$GroupEntry",
            "method": "getSlotCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/profiles/config/ProfileSlot",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/natives/ByNbtRule",
            "method": "getInitialized",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/natives/NativeRuleKt$compareByMatch$1",
            "method": "invoke",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Integer;",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/natives/NativeRuleKt$compareByMatch$1",
            "method": "invoke",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/rule/parameter/Match",
            "method": "getMultiplier",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/parser/RuleLoader",
            "method": "doSanityCheck",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gui/inject/base/SettingsWidget",
            "method": "getUnderManagement",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/H",
            "method": "addChild",
            "desc": "(Lorg/anti_ad/embedded/b/a/a/a/O;)Lorg/anti_ad/embedded/b/a/a/a/d/i;",
            "value": "obj#377"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/H",
            "method": "addErrorNode",
            "desc": "(Lorg/anti_ad/embedded/b/a/a/a/O;)Lorg/anti_ad/embedded/b/a/a/a/d/b;",
            "value": "obj#381"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/H",
            "method": "getChildCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/H",
            "method": "getSourceInterval",
            "desc": "()Lorg/anti_ad/embedded/b/a/a/a/c/k;",
            "value": "obj#12"
          },
          {
            "class": "org/anti_ad/mc/ipnext/inventory/action/SubTrackerActionsKt",
            "method": "findEmptySlot",
            "desc": "(Ljava/util/List;I)I",
            "value": "-1"
          },
          {
            "class": "org/anti_ad/mc/ipnext/util/MutableBucket",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/mc/ipnext/util/MutableBucket",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/util/MutableBucket",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/a/a/a/c",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/a/a/a/c",
            "method": "hashCode",
            "desc": "()I",
            "value": "108572896"
          },
          {
            "class": "org/anti_ad/mc/ipnext/profiles/config/ProfileComponentType",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/profiles/config/ProfileComponentData",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "d",
            "desc": "(Ljava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "add",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "contains",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "e",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#499"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "toArray",
            "desc": "()[Ljava/lang/Object;",
            "value": "obj#503"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "remove",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "f",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "retainAll",
            "desc": "(Ljava/util/Collection;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "b",
            "desc": "(I)[[Ljava/lang/Object;",
            "value": "obj#525"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/b",
            "method": "a",
            "desc": "(I)[Ljava/lang/Object;",
            "value": "obj#528"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gui/inject/EditorWidget",
            "method": "getUnderManagement",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/NbtUtils",
            "method": "matchNbtNoExtra",
            "desc": "(Lnet/minecraft/nbt/Tag;Lnet/minecraft/nbt/Tag;)Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/mc/ipnext/item/NbtUtils",
            "method": "matchNbt",
            "desc": "(Lnet/minecraft/nbt/Tag;Lnet/minecraft/nbt/Tag;)Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/y",
            "method": "getRuleIndex",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "org/anti_ad/mc/ipnext/integration/HintsManagerNG",
            "method": "collectAllWithPriority",
            "desc": "(Lorg/anti_ad/mc/ipnext/integration/MergePriority;)Ljava/util/Map;",
            "value": "obj#564"
          },
          {
            "class": "org/anti_ad/mc/ipnext/integration/HintsManagerNG",
            "method": "isPlayerSideOnly",
            "desc": "(Ljava/lang/Class;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/integration/HintsManagerNG",
            "method": "isFastSwipeDisabled",
            "desc": "(Ljava/lang/Class;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/integration/HintsManagerNG",
            "method": "getAllById",
            "desc": "(Ljava/lang/String;)Ljava/util/Map;",
            "value": "obj#572"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gui/widgets/Hintable$HintManagementRenderer",
            "method": "getTick",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gui/widgets/Hintable$HintManagementRenderer",
            "method": "getAlphaChannel",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gui/widgets/Hintable$HintManagementRenderer",
            "method": "getStep",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gui/widgets/Hintable$HintManagementRenderer",
            "method": "getPingStep",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/M",
            "method": "a",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/M",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gen/RulesParser$SubRuleEOFContext",
            "method": "getRuleIndex",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gui/inject/ContainerScreenEventHandler",
            "method": "getWidgetPoints",
            "desc": "()Ljava/util/Set;",
            "value": "obj#607"
          },
          {
            "class": "org/anti_ad/mc/ipnext/inventory/action/PostActionsKt",
            "method": "connected",
            "desc": "(Ljava/util/Collection;)Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/mc/ipnext/event/villagers/VillagerDataManager$saveIfDirty$task$1",
            "method": "getMaxTimesEmpty",
            "desc": "()I",
            "value": "15"
          },
          {
            "class": "org/anti_ad/mc/ipnext/event/villagers/VillagerDataManager$saveIfDirty$task$1",
            "method": "getTimesEmpty",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/f",
            "method": "b",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/f",
            "method": "c",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/f",
            "method": "h",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/f",
            "method": "g",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/inventory/sandbox/diffcalculator/SimpleClickCount",
            "method": "getSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/inventory/sandbox/diffcalculator/SimpleClickCount",
            "method": "getClicks",
            "desc": "()Ljava/util/List;",
            "value": "obj#719"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/n",
            "method": "a",
            "desc": "(Ljava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/c/n",
            "method": "a",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "org/anti_ad/mc/ipn/events/api/ActionExecutor",
            "method": "getActions",
            "desc": "()Ljava/util/List;",
            "value": "obj#727"
          },
          {
            "class": "org/anti_ad/mc/ipn/events/api/ActionExecutor",
            "method": "getAdder",
            "desc": "()Lorg/anti_ad/mc/ipn/events/api/ActionExecutor$PredicateActionBuilder;",
            "value": "obj#740"
          },
          {
            "class": "org/anti_ad/mc/ipnext/gui/GUIDEEditorScreen$Companion",
            "method": "isVisible",
            "desc": "(Lorg/anti_ad/mc/ipnext/gui/widgets/Hintable;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/config/ExportHints",
            "method": "getAsInternal",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/inventory/action/GroupInColumnsCalculator",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/inventory/action/GroupInColumnsCalculator",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/aq",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/anti_ad/mc/ipnext/InventoryProfilesKt$init$ipnimpl$1",
            "method": "getContainerClicker",
            "desc": "()Lorg/anti_ad/mc/ipn/api/access/IContainerClicker;",
            "value": "obj#756"
          },
          {
            "class": "org/anti_ad/embedded/b/a/a/a/a/p",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          }
        ],
        "insns": 7543
      },
      "verdict": "partly",
      "summary": "8 of 31 listening patch sites land on a Horizon hook (25%); of 37 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "invmove",
      "name": "InvMove",
      "version": "0.9.6",
      "license": "LGPL-3.0-only",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/pieking1215/invmove/fabric/InvMoveFabric"
        },
        {
          "kind": "modmenu",
          "value": "me/pieking1215/invmove/fabric/InvMoveModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "invmove-fabric.mixins.json",
        "invmove.mixins.json"
      ],
      "depends": [
        "cloth-config"
      ],
      "classes": 41,
      "methods": 195,
      "sites": [
        {
          "mixin": "me/pieking1215/invmove/mixin/client/ButtonJumpKeyFixMixin",
          "targets": [
            "net/minecraft/client/gui/components/AbstractButton"
          ],
          "handler": "keyPressed",
          "kind": "inject",
          "method": "keyPressed",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/AbstractButton#keyPressed HEAD"
        },
        {
          "mixin": "me/pieking1215/invmove/mixin/client/MovementMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "onTick",
          "kind": "wrap-operation",
          "method": "aiStep",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/ClientInput;tick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/pieking1215/invmove/mixin/client/ToggleKeyMappingMixin",
          "targets": [
            "net/minecraft/client/ToggleKeyMapping"
          ],
          "handler": "injectRelease",
          "kind": "inject",
          "method": "release",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/ToggleKeyMapping#release HEAD"
        }
      ],
      "listening": 2,
      "accessors": 1,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/ToggleKeyMapping#release @HEAD": 1,
        "net/minecraft/client/gui/components/AbstractButton#keyPressed @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/player/ClientInput#tick @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 41,
        "features": {
          "mixin": 8
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 41,
        "methods": 116,
        "tried": 116,
        "completed": 40,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/pieking1215/invmove/InvMoveConfig$Background$PauseScreenMode;#clone()Ljava/lang/Object;": 1,
          "[Lme/pieking1215/invmove/InvMoveConfig$Movement$SneakMode;#clone()Ljava/lang/Object;": 1,
          "[Lme/pieking1215/invmove/module/Module$Background;#clone()Ljava/lang/Object;": 1,
          "[Lme/pieking1215/invmove/module/Module$Movement;#clone()Ljava/lang/Object;": 1,
          "com/google/gson/JsonElement#isJsonPrimitive()Z": 1,
          "com/google/gson/JsonObject#getAsJsonObject(Ljava/lang/String;)Lcom/google/gson/JsonObject;": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/mojang/datafixers/util/Pair#of(Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/datafixers/util/Pair;": 5,
          "java/lang/Class#getDeclaredFields()[Ljava/lang/reflect/Field;": 1,
          "java/lang/Runnable#run()V": 1,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 12,
          "java/util/List#of(Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 2,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 1,
          "me/pieking1215/invmove/InvMoveConfig$Movement$SneakMode#ordinal()I": 1,
          "me/shedaniel/clothconfig2/api/ConfigBuilder#create()Lme/shedaniel/clothconfig2/api/ConfigBuilder;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 3,
          "net/minecraft/client/KeyMapping#ALL": 1,
          "net/minecraft/client/KeyMapping#getName()Ljava/lang/String;": 1,
          "net/minecraft/client/KeyMapping#isUnbound()Z": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 5,
          "net/minecraft/client/gui/screens/Screen#getTitle()Lnet/minecraft/network/chat/Component;": 1,
          "net/minecraft/client/input/KeyEvent#isSelection()Z": 1,
          "net/minecraft/client/player/ClientInput#tick()V": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/resources/Identifier#parse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/util/GsonHelper#isBooleanValue(Lcom/google/gson/JsonObject;Ljava/lang/String;)Z": 1,
          "net/minecraft/util/GsonHelper#isStringValue(Lcom/google/gson/JsonObject;Ljava/lang/String;)Z": 1,
          "net/minecraft/util/GsonHelper#isValidNode(Lcom/google/gson/JsonObject;Ljava/lang/String;)Z": 3,
          "org/apache/logging/log4j/Logger#info(Ljava/lang/String;Ljava/lang/Object;)V": 1
        },
        "runs": [
          {
            "class": "me/pieking1215/invmove/module/VanillaModule",
            "method": "getId",
            "desc": "()Ljava/lang/String;",
            "value": "\"vanilla\""
          },
          {
            "class": "me/pieking1215/invmove/InvMoveNoOp",
            "method": "modidFromClassInternal",
            "desc": "(Ljava/lang/Class;)Ljava/util/Optional;",
            "value": "obj#33"
          },
          {
            "class": "me/pieking1215/invmove/InvMoveNoOp",
            "method": "modNameFromModid",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"???\""
          },
          {
            "class": "me/pieking1215/invmove/InvMoveNoOp",
            "method": "hasMod",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "me/pieking1215/invmove/module/CVComponent",
            "method": "literal",
            "desc": "(Ljava/lang/String;)Lme/pieking1215/invmove/module/CVComponent;",
            "value": "obj#84"
          },
          {
            "class": "me/pieking1215/invmove/module/CVComponent",
            "method": "translated",
            "desc": "(Ljava/lang/String;)Lme/pieking1215/invmove/module/CVComponent;",
            "value": "obj#85"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl$ConfigBackgroundHide",
            "method": "display",
            "desc": "(Ljava/lang/String;)Lme/pieking1215/invmove/module/ModuleImpl$ConfigBackgroundHide;",
            "value": "obj#108"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl$ConfigBackgroundHide",
            "method": "setDefault",
            "desc": "(Z)Lme/pieking1215/invmove/module/ModuleImpl$ConfigBackgroundHide;",
            "value": "obj#109"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl$ConfigBackgroundHide",
            "method": "textFn",
            "desc": "(Ljava/util/function/Function;)Lme/pieking1215/invmove/module/ModuleImpl$ConfigBackgroundHide;",
            "value": "obj#110"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl$ConfigBoth",
            "method": "display",
            "desc": "(Ljava/lang/String;)Lme/pieking1215/invmove/module/ModuleImpl$ConfigBoth;",
            "value": "obj#119"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl$ConfigBoth",
            "method": "setDefaults",
            "desc": "(ZZ)Lme/pieking1215/invmove/module/ModuleImpl$ConfigBoth;",
            "value": "obj#120"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl$ConfigBoth",
            "method": "textFns",
            "desc": "(Ljava/util/function/Function;Ljava/util/function/Function;)Lme/pieking1215/invmove/module/ModuleImpl$ConfigBoth;",
            "value": "obj#121"
          },
          {
            "class": "me/pieking1215/invmove/mixin/InvMoveMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl$ConfigMovement",
            "method": "display",
            "desc": "(Ljava/lang/String;)Lme/pieking1215/invmove/module/ModuleImpl$ConfigMovement;",
            "value": "obj#141"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl$ConfigMovement",
            "method": "setDefault",
            "desc": "(Z)Lme/pieking1215/invmove/module/ModuleImpl$ConfigMovement;",
            "value": "obj#142"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl$ConfigMovement",
            "method": "textFn",
            "desc": "(Ljava/util/function/Function;)Lme/pieking1215/invmove/module/ModuleImpl$ConfigMovement;",
            "value": "obj#143"
          },
          {
            "class": "me/pieking1215/invmove/module/config/ConfigBool",
            "method": "textFn",
            "desc": "(Ljava/util/function/Function;)Lme/pieking1215/invmove/module/config/ConfigBool;",
            "value": "obj#145"
          },
          {
            "class": "me/pieking1215/invmove/module/config/ConfigBool",
            "method": "hide",
            "desc": "()Lme/pieking1215/invmove/module/config/ConfigBool;",
            "value": "obj#146"
          },
          {
            "class": "me/pieking1215/invmove/module/config/ConfigEnum",
            "method": "setMigrator",
            "desc": "(Ljava/util/function/Function;)Lme/pieking1215/invmove/module/config/ConfigEnum;",
            "value": "obj#169"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl",
            "method": "register",
            "desc": "([Ljava/lang/Class;)Lme/pieking1215/invmove/module/ModuleImpl$Registering;",
            "value": "obj#204"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl",
            "method": "getMovementConfig",
            "desc": "()Lme/pieking1215/invmove/module/config/ModuleConfig;",
            "value": "obj#238"
          },
          {
            "class": "me/pieking1215/invmove/module/ModuleImpl",
            "method": "getBackgroundConfig",
            "desc": "()Lme/pieking1215/invmove/module/config/ModuleConfig;",
            "value": "obj#260"
          },
          {
            "class": "me/pieking1215/invmove/InvMove",
            "method": "allowKeyDefault",
            "desc": "(Lnet/minecraft/client/KeyMapping;)Z",
            "value": "0"
          },
          {
            "class": "me/pieking1215/invmove/InvMove",
            "method": "allowMovementInScreen",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Z",
            "value": "0"
          },
          {
            "class": "me/pieking1215/invmove/InvMove",
            "method": "shouldForceRawKeyDown",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "architectury_inject_InvMove_263_3ba3802732184cc596e538e2cee9889d_9b4573cf6c3efc622edc734b053509f6e71a5b6736146338935d7d3c01da564fInvMove263096devjar/PlatformMethods",
            "method": "getCurrentTarget",
            "desc": "()Ljava/lang/String;",
            "value": "\"fabric\""
          },
          {
            "class": "me/pieking1215/invmove/module/Module",
            "method": "allowKeyDefault",
            "desc": "(Lnet/minecraft/client/KeyMapping;)Ljava/util/Optional;",
            "value": "obj#456"
          }
        ],
        "insns": 2608
      },
      "verdict": "no",
      "summary": "none of its 3 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "iris",
      "name": "Iris",
      "version": "1.11.7+mc26.3",
      "license": "LGPL-3.0-only",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "modmenu",
          "value": "net/irisshaders/iris/compat/modmenu/ModMenuIntegration"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "net/irisshaders/iris/compat/sodium/config/IrisConfig"
        }
      ],
      "mixin_configs": [
        "mixins.iris.json",
        "mixins.iris.fabric.json",
        "mixins.iris.vertexformat.json",
        "mixins.iris.bettermipmaps.json",
        "mixins.iris.compat.sodium.json",
        "mixins.iris.compat.dh.json",
        "mixins.iris.fixes.maxfpscrash.json"
      ],
      "depends": [
        "sodium"
      ],
      "classes": 983,
      "methods": 5350,
      "sites": [
        {
          "mixin": "net/irisshaders/iris/mixin/fabric/MixinExtendedBlockModelSubmit",
          "targets": [
            "net/fabricmc/fabric/api/client/renderer/v1/render/submit/ExtendedBlockModelSubmit"
          ],
          "handler": "iris$c",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/fabricmc/fabric/api/client/renderer/v1/render/submit/ExtendedBlockModelSubmit#<init> RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinAbstractBlockRenderContext",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/model/AbstractBlockRenderContext"
          ],
          "handler": "checkDirectionNeo",
          "kind": "inject",
          "method": "bufferDefaultModel",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/services/PlatformModelAccess;getQuads(Lnet/minecraft/client/renderer/block/BlockAndTintGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/client/renderer/block/dispatch/BlockStateModelPart;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/util/RandomSource;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/model/AbstractBlockRenderContext#bufferDefaultModel INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinAbstractBlockRenderContext",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/model/AbstractBlockRenderContext"
          ],
          "handler": "checkDirectionNeo",
          "kind": "inject",
          "method": "bufferDefaultModel",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/model/AbstractBlockRenderContext#bufferDefaultModel TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinBlockRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer"
          ],
          "handler": "handleShaderPackTransparency",
          "kind": "inject",
          "method": "renderModel",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/services/PlatformModelEmitter;emitModel(Lnet/minecraft/client/renderer/block/dispatch/BlockStateModel;Ljava/util/function/Predicate;Lnet/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl;Lnet/minecraft/util/RandomSource;Lnet/minecraft/client/renderer/block/BlockAndTintGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/caffeinemc/mods/sodium/client/services/PlatformModelEmitter$Bufferer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer#renderModel INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinBlockRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer"
          ],
          "handler": "iris$overrideQuad",
          "kind": "inject",
          "method": "processQuad",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer#processQuad HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinBlockRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer"
          ],
          "handler": "iris$writeVertex",
          "kind": "inject",
          "method": "bufferQuad",
          "at": "FIELD",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkVertexEncoder$Vertex;x:F",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer#bufferQuad FIELD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinChunkMeshBuildTask",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask"
          ],
          "handler": "iris$setLightBlock",
          "kind": "inject",
          "method": "execute",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos$MutableBlockPos;set(III)Lnet/minecraft/core/BlockPos$MutableBlockPos;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask#execute INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinChunkMeshBuildTask",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask"
          ],
          "handler": "iris$onRenderModel",
          "kind": "inject",
          "method": "execute",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer;renderModel(Lnet/minecraft/client/renderer/block/dispatch/BlockStateModel;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/BlockPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask#execute INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinChunkMeshBuildTask",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask"
          ],
          "handler": "iris$onRenderLiquid",
          "kind": "inject",
          "method": "execute",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/FluidRenderer;render(Lnet/caffeinemc/mods/sodium/client/world/LevelSlice;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/material/FluidState;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/BlockPos;Lnet/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/TranslucentGeometryCollector;Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/ChunkBuildBuffers;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask#execute INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinChunkMeshBuildTask",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask"
          ],
          "handler": "iris$onEnd",
          "kind": "inject",
          "method": "execute",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;isSolidRender()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask#execute INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinChunkMeshFormats",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkMeshFormats"
          ],
          "handler": "getCurrent",
          "kind": "overwrite",
          "method": "getCurrent",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinChunkVertex",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkVertexEncoder$Vertex"
          ],
          "handler": "iris$copyVertex",
          "kind": "inject",
          "method": "copyVertexTo",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkVertexEncoder$Vertex#copyVertexTo HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinDefaultChunkRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer"
          ],
          "handler": "change",
          "kind": "redirect",
          "method": "prepare",
          "at": "FIELD",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer;shouldDraw:[Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinDefaultChunkRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer"
          ],
          "handler": "change",
          "kind": "redirect",
          "method": "render",
          "at": "FIELD",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer;shouldDraw:[Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinDefaultChunkRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer"
          ],
          "handler": "iris$disableBlockFaceCullingInShadowPass",
          "kind": "redirect",
          "method": "prepare",
          "at": "FIELD",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/gui/SodiumOptions$PerformanceSettings;useBlockFaceCulling:Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinDefaultChunkRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer"
          ],
          "handler": "iris$forceNearest",
          "kind": "wrap-operation",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer;begin(Lnet/caffeinemc/mods/sodium/client/render/chunk/terrain/TerrainRenderPass;Lnet/caffeinemc/mods/sodium/client/util/FogParameters;Lcom/mojang/renderpearl/api/textures/GpuSampler;Lnet/minecraft/client/renderer/oit/OitStage;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinDefaultFluidRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer"
          ],
          "handler": "setBrightness",
          "kind": "modify-arg",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer;updateQuad(Lnet/caffeinemc/mods/sodium/client/model/quad/ModelQuadViewMutable;Lnet/caffeinemc/mods/sodium/client/world/LevelSlice;Lnet/minecraft/core/BlockPos;Lnet/caffeinemc/mods/sodium/client/model/light/LightPipeline;Lnet/minecraft/core/Direction;Lnet/caffeinemc/mods/sodium/client/model/quad/properties/ModelQuadFacing;FLnet/caffeinemc/mods/sodium/client/model/color/ColorProvider;Lnet/minecraft/world/level/material/FluidState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinDefaultFluidRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer"
          ],
          "handler": "iris$writeVertex",
          "kind": "inject",
          "method": "writeQuad",
          "at": "FIELD",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkVertexEncoder$Vertex;x:F",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer#writeQuad FIELD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderRegion",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion"
          ],
          "handler": "iris$delete",
          "kind": "inject",
          "method": "delete",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion#delete HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderRegion",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion"
          ],
          "handler": "iris$clearAllBatchesAfterGeometryChange",
          "kind": "redirect",
          "method": "onGeometryBufferChange",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion;clearAllCachedBatches()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderRegion",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion"
          ],
          "handler": "iris$clearAllBatchesAfterGeometryChange",
          "kind": "redirect",
          "method": "onGeometrySegmentChange",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion;clearAllCachedBatches()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderRegion",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion"
          ],
          "handler": "iris$clearAllBatchesAfterGeometryChange",
          "kind": "redirect",
          "method": "update",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion;clearAllCachedBatches()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderRegion",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion"
          ],
          "handler": "iris$clearBatchAfterIndexChange",
          "kind": "redirect",
          "method": "onIndexBufferChange",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion;clearCachedBatchFor(Lnet/caffeinemc/mods/sodium/client/render/chunk/terrain/TerrainRenderPass;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderRegion",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion"
          ],
          "handler": "iris$clearBatchAfterIndexChange",
          "kind": "redirect",
          "method": "onIndexSegmentChange",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion;clearCachedBatchFor(Lnet/caffeinemc/mods/sodium/client/render/chunk/terrain/TerrainRenderPass;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderRegionManager",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegionManager"
          ],
          "handler": "iris$clearBatchesAfterUpload",
          "kind": "redirect",
          "method": "uploadResults",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion;clearCachedBatchFor(Lnet/caffeinemc/mods/sodium/client/render/chunk/terrain/TerrainRenderPass;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManager",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "iris$useExtendedVertexFormat$1",
          "kind": "modify-arg",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer;<init>(Lnet/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkVertexType;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManager",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "iris$useExtendedVertexFormat$2",
          "kind": "modify-arg",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkBuilder;<init>(Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkVertexType;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManager",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "iris$disableFogOcclusion",
          "kind": "redirect",
          "method": "getSearchDistance",
          "at": "FIELD",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/gui/SodiumOptions$PerformanceSettings;useFogOcclusion:Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "initIris",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#<init> TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "create",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#<init> TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "createRegionForCurrentRenderListState",
          "kind": "redirect",
          "method": "onSectionAdded",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegionManager;createForChunk(III)Lnet/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "skipAsyncCullDuringShadow",
          "kind": "inject",
          "method": "prepareRenderTrees",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#prepareRenderTrees HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "skipCleanupAndFlipDuringShadow",
          "kind": "inject",
          "method": "cleanupAndFlip",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#cleanupAndFlip HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "skipChunkBuildProcessingDuringShadow",
          "kind": "inject",
          "method": "processChunkBuilds",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#processChunkBuilds HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "skipTranslucentSortingDuringShadow",
          "kind": "inject",
          "method": "processGFNIMovement",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#processGFNIMovement HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "useShadowRenderLists",
          "kind": "redirect",
          "method": "getRenderLists",
          "at": "FIELD",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager;renderLists:Lnet/caffeinemc/mods/sodium/client/render/chunk/lists/SortedRenderLists;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "useShadowRenderLists",
          "kind": "redirect",
          "method": "getVisibleChunkCount",
          "at": "FIELD",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager;renderLists:Lnet/caffeinemc/mods/sodium/client/render/chunk/lists/SortedRenderLists;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinRenderSectionManagerShadow",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager"
          ],
          "handler": "iris$destroy",
          "kind": "inject",
          "method": "destroy",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#destroy HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinShaderChunkRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer"
          ],
          "handler": "iris$forceSoWeCanLookUpLater",
          "kind": "redirect",
          "method": "createShader",
          "at": "FIELD",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer;vertexFormat:Lcom/mojang/renderpearl/api/vertex/VertexFormat;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinSodiumGameOptions",
          "targets": [
            "net/caffeinemc/mods/sodium/client/gui/VideoSettingsScreen"
          ],
          "handler": "iris$makeColor",
          "kind": "wrap-operation",
          "method": "renderIconWithSpacing",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blit(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIFFIIIIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinSodiumWorldRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer"
          ],
          "handler": "iris$skipShadowTerrainUpdate",
          "kind": "inject",
          "method": "scheduleTerrainUpdate",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer#scheduleTerrainUpdate HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinSodiumWorldRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer"
          ],
          "handler": "iris$forceChunkGraphRebuildInShadowPass",
          "kind": "redirect",
          "method": "setupTerrain",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager;needsUpdate()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinSodiumWorldRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer"
          ],
          "handler": "iris$forceEndGraphRebuild",
          "kind": "wrap-operation",
          "method": "setupTerrain",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager;needsUpdate()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinSodiumWorldRenderer",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer"
          ],
          "handler": "iris$skipEntityCheck",
          "kind": "inject",
          "method": "isEntityVisible",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer#isEntityVisible HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinUniformData",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/UniformBufferManager"
          ],
          "handler": "iris$init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/UniformBufferManager#<init> RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/compat/sodium/mixin/MixinUniformData",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/UniformBufferManager"
          ],
          "handler": "iris$endFrame",
          "kind": "inject",
          "method": "endFrame",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/UniformBufferManager#endFrame HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/AbstractSignRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/blockentity/AbstractSignRenderer"
          ],
          "handler": "fism$cancelSignTextRendering",
          "kind": "inject",
          "method": "submitSignText",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/AbstractSignRenderer#submitSignText HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "fism$cancelGlintRendering",
          "kind": "inject",
          "method": "hasFoil",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#hasFoil HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MapRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/MapRenderer"
          ],
          "handler": "fism$cancelMapRendering",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/MapRenderer#render HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinBiomeAmbientSoundsHandler",
          "targets": [
            "net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler"
          ],
          "handler": "calculateConstantMoodiness",
          "kind": "inject",
          "method": "method_75840",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getBrightness(Lnet/minecraft/world/level/LightLayer;Lnet/minecraft/core/BlockPos;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler#method_75840 INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinBiomeAmbientSoundsHandler",
          "targets": [
            "net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler"
          ],
          "handler": "calculateConstantMoodiness",
          "kind": "inject",
          "method": "lambda$tick$1",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getBrightness(Lnet/minecraft/world/level/LightLayer;Lnet/minecraft/core/BlockPos;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler#lambda$tick$1 INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinBiomes",
          "targets": [
            "net/minecraft/world/level/biome/Biomes"
          ],
          "handler": "iris$registerBiome",
          "kind": "inject",
          "method": "register",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/biome/Biomes#register TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinBlockStateBehavior",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase"
          ],
          "handler": "getShadeBrightness",
          "kind": "inject",
          "method": "getShadeBrightness",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#getShadeBrightness RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinBooleanState",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager$BooleanState"
          ],
          "handler": "iris$setUnknownState",
          "kind": "inject",
          "method": "setEnabled",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager$BooleanState#setEnabled HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinCamera",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "iris$disableFrustum",
          "kind": "wrap-operation",
          "method": "prepareCullFrustum",
          "at": "NEW",
          "at_target": "Lnet/minecraft/client/renderer/culling/Frustum;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinChainedJsonException",
          "targets": [
            "net/minecraft/server/ChainedJsonException"
          ],
          "handler": "iris$changeShaderParseException",
          "kind": "inject",
          "method": "forException",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ChainedJsonException#forException HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinClientLanguage",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "injectFrom",
          "kind": "inject",
          "method": "appendFrom",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/language/ClientLanguage#appendFrom HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinClientLanguage",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "check",
          "kind": "inject",
          "method": "loadFrom",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/language/ClientLanguage#loadFrom HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinClientLanguage",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "iris$addLanguageEntries",
          "kind": "inject",
          "method": "getOrDefault",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/language/ClientLanguage#getOrDefault HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinClientLanguage",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "iris$addLanguageEntriesToTranslationChecks",
          "kind": "inject",
          "method": "has",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/language/ClientLanguage#has HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "iris$showUpdateMessage",
          "kind": "inject",
          "method": "handleLogin",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinCompiledShaderProgram",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlProgram"
          ],
          "handler": "iris$changeIndex",
          "kind": "redirect",
          "method": "setupBindGroupLayouts",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/opengl/GL33C;glGetUniformBlockIndex(ILjava/lang/CharSequence;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinDebugEntries",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntries"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinDebugScreenEntriesList",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntryList"
          ],
          "handler": "injectSodiumSettings",
          "kind": "inject",
          "method": "rebuildCurrentList",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinEndFlash",
          "targets": [
            "net/minecraft/client/renderer/EndFlashState"
          ],
          "handler": "iris$calculateNewAngles",
          "kind": "inject",
          "method": "calculateFlashParameters",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Mth;randomBetween(Lnet/minecraft/util/RandomSource;FF)F",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/EndFlashState#calculateFlashParameters INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinEntityRenderDispatcher",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "iris$maybeSuppressEntityShadow",
          "kind": "wrap-with-condition",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitShadow(Lcom/mojang/blaze3d/vertex/PoseStack;FLjava/util/List;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinFogRenderer",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "iris$setupLegacyWaterFog",
          "kind": "inject",
          "method": "setupFog",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "render_fog",
          "why": "ViewportEvent.RenderFog"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinFogRenderer",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "setupFog",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/FogRenderer#setupFog RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$startFrame",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "frame",
          "why": "RenderFrameEvent.Pre: once a frame, before it draws"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$logSystem",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#<init> TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$modifyBlur",
          "kind": "modify-args",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GlobalSettingsUniform;update(IIDJFILnet/minecraft/world/phys/Vec3;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-args)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$disableVanillaHandRendering",
          "kind": "redirect",
          "method": "renderItemInHand",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer;submitHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/PlayerRenderState;Lnet/minecraft/client/renderer/state/level/FirstPersonHandsAndItemsRenderState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$runColorSpace",
          "kind": "inject",
          "method": "renderLevel",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#renderLevel TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGameRenderer_NightVisionCompat",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$safecheckNightvisionStrength",
          "kind": "inject",
          "method": "nightVisionScale",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/effect/MobEffectInstance;endsWithin(I)Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#nightVisionScale INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "changeViewport",
          "kind": "redirect",
          "method": "createRenderPass",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/GlStateManager;_viewport(IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "changeViewport2",
          "kind": "redirect",
          "method": "createRenderPass",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/GlStateManager;_scissorBox(IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "changeViewport3",
          "kind": "redirect",
          "method": "createRenderPass",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/systems/ScissorState;enable(IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "changeFramebuffer",
          "kind": "redirect",
          "method": "createRenderPass",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/GlStateManager;_glBindFramebuffer(II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "iris$changeDrawBuffers",
          "kind": "redirect",
          "method": "createRenderPass",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/opengl/GL33C;glDrawBuffers([I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "iris$bypassSetup",
          "kind": "inject",
          "method": "setupDraw",
          "at": "FIELD",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/GlCommandEncoder;lastPipeline:Lcom/mojang/renderpearl/backend/opengl/GlRenderPipeline;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlCommandEncoder#setupDraw FIELD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "iris$trackProgram",
          "kind": "inject",
          "method": "setupDraw",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlCommandEncoder#setupDraw RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "iris$clearState",
          "kind": "inject",
          "method": "submitRenderPass",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlCommandEncoder#submitRenderPass HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "iris$terrainTessShaderCompat",
          "kind": "modify-arg",
          "method": "executeDraws",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/opengl/GL33C;nglMultiDrawElementsBaseVertex(IJIJIJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlCommandEncoder",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlCommandEncoder"
          ],
          "handler": "iris$entityTessShaderCompat",
          "kind": "modify-arg",
          "method": "executeDraw",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/opengl/GL33C;glDrawElementsInstancedBaseVertex(IIIJII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlProgram",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlProgram"
          ],
          "handler": "iris$setupInitialBindings",
          "kind": "inject",
          "method": "setupBindGroupLayouts",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlProgram#setupBindGroupLayouts HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlProgram",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlProgram"
          ],
          "handler": "iris$deleteTextureBuffers",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlProgram#close HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlRenderPass",
          "targets": [
            "com/mojang/renderpearl/frontend/FrontendRenderPass"
          ],
          "handler": "iris$bind",
          "kind": "inject",
          "method": "setUniform",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/frontend/FrontendRenderPass#setUniform HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlRenderPipeline",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlRenderPipeline"
          ],
          "handler": "iris$setCreateInfo",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlRenderPipeline#<init> RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlRenderPipeline",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlRenderPipeline"
          ],
          "handler": "iris$redirectCull",
          "kind": "wrap-operation",
          "method": "bind",
          "at": "FIELD",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/GlRenderPipeline;cull:Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlRenderPipeline",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlRenderPipeline"
          ],
          "handler": "iris$pass",
          "kind": "wrap-operation",
          "method": "bind",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/GlStateManager;_depthFunc(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlRenderPipeline",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlRenderPipeline"
          ],
          "handler": "iris$enableBlend",
          "kind": "wrap-operation",
          "method": "bind",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/GlStateManager;_enableBlend(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlRenderPipeline",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlRenderPipeline"
          ],
          "handler": "iris$disableBlend",
          "kind": "wrap-operation",
          "method": "bind",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/backend/opengl/GlStateManager;_disableBlend(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlRenderPipeline",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlRenderPipeline"
          ],
          "handler": "iris$bind",
          "kind": "inject",
          "method": "bind",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlRenderPipeline#bind RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$increaseMaximumAllowedTextureUnits",
          "kind": "modify-constant",
          "method": "<clinit>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_BlendOverride",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$blendDisableLock",
          "kind": "inject",
          "method": "_disableBlend",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_disableBlend HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_BlendOverride",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$blendEnableLock",
          "kind": "inject",
          "method": "_enableBlend",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_enableBlend HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_BlendOverride",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$blendFuncSeparateLock",
          "kind": "inject",
          "method": "_blendFuncSeparate",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_blendFuncSeparate HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_DepthColorOverride",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$colorMaskLock",
          "kind": "inject",
          "method": "_colorMask",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_colorMask HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_DepthColorOverride",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$colorMaskLock",
          "kind": "inject",
          "method": "_colorMask",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_colorMask HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_DepthColorOverride",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$depthMaskLock",
          "kind": "inject",
          "method": "_depthMask",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_depthMask HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_DepthColorOverride",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$modify",
          "kind": "redirect",
          "method": "_drawElements",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/opengl/GL33C;glDrawElements(IIIJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_DepthColorOverride",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$resetTessellation",
          "kind": "inject",
          "method": "_glUseProgram",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_glUseProgram TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_FramebufferBinding",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$avoidRedundantBind2",
          "kind": "inject",
          "method": "_glUseProgram",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_glUseProgram HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_FramebufferBinding",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$checkActiveTexture",
          "kind": "inject",
          "method": "_activeTexture",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_activeTexture HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinGlStateManager_FramebufferBinding",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$avoidRedundantBind1",
          "kind": "inject",
          "method": "_viewport",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_viewport HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinItemInHandRenderer",
          "targets": [
            "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer"
          ],
          "handler": "iris$skipTranslucentHands",
          "kind": "inject",
          "method": "submitArmWithItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinKeyboardHandler",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "iris$handleDebugKeys",
          "kind": "inject",
          "method": "handleDebugKeys",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#handleDebugKeys RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$setupPipeline",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "render_needs",
          "why": "the level's drawing starts: what it needs drawn is decided here"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$beginLevelRender",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/framegraph/FramePass;executes(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#render INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "skipRenderChunks",
          "kind": "wrap-with-condition",
          "method": "executeSolid",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;renderGroup(Lnet/minecraft/client/renderer/chunk/ChunkSectionLayerGroup;Lcom/mojang/renderpearl/api/commands/RenderPass;Lcom/mojang/renderpearl/api/textures/GpuSampler;Lcom/mojang/renderpearl/api/textures/GpuTextureView;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$endLevelRender",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Matrix4fStack;popMatrix()Lorg/joml/Matrix4fStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#render INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$beginSky",
          "kind": "inject",
          "method": "lambda$addSkyPass$0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$0 HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$beginSky",
          "kind": "inject",
          "method": "lambda$addSkyPass$8",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$8 HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$endSky",
          "kind": "inject",
          "method": "lambda$addSkyPass$0",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$0 RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$endSky",
          "kind": "inject",
          "method": "lambda$addSkyPass$8",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$8 RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$beginTerrainLayer",
          "kind": "wrap-operation",
          "method": "executeSolid",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;renderGroup(Lnet/minecraft/client/renderer/chunk/ChunkSectionLayerGroup;Lcom/mojang/renderpearl/api/commands/RenderPass;Lcom/mojang/renderpearl/api/textures/GpuSampler;Lcom/mojang/renderpearl/api/textures/GpuTextureView;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$beginWeather",
          "kind": "inject",
          "method": "executeClassicTransparency",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$beginWorldBorder",
          "kind": "inject",
          "method": "executeClassicTransparency",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/WorldBorderRenderer;render(Lnet/minecraft/client/renderer/state/level/WorldBorderRenderState;Lcom/mojang/renderpearl/api/commands/RenderPass;Lnet/minecraft/world/phys/Vec3;D)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$endWeather",
          "kind": "inject",
          "method": "executeClassicTransparency",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$beginBlockOutline",
          "kind": "modify-arg",
          "method": "submitBlockOutline",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;submitHitOutline(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/state/level/BlockOutlineRenderState;IFZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$beginTranslucents",
          "kind": "wrap-operation",
          "method": "lambda$addMainPass$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;executeClassicTransparency(Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher$PreparedFrame;Lcom/mojang/renderpearl/api/commands/RenderPass;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer_SkipRendering",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "skipRenderEntities",
          "kind": "wrap-operation",
          "method": "extractVisibleEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;entitiesForRendering()Ljava/lang/Iterable;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer_Sky",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "preRenderSky",
          "kind": "inject",
          "method": "lambda$addSkyPass$0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$0 HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLevelRenderer_Sky",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "preRenderSky",
          "kind": "inject",
          "method": "lambda$addSkyPass$8",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$8 HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLightTexture",
          "targets": [
            "net/minecraft/client/renderer/LightmapRenderStateExtractor"
          ],
          "handler": "resetDarknessValue",
          "kind": "inject",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/attribute/EnvironmentAttributeProbe;getValue(Lnet/minecraft/world/attribute/EnvironmentAttribute;F)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LightmapRenderStateExtractor#extract INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinLightTexture",
          "targets": [
            "net/minecraft/client/renderer/LightmapRenderStateExtractor"
          ],
          "handler": "storeDarknessValue",
          "kind": "inject",
          "method": "calculateDarknessScale",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LightmapRenderStateExtractor#calculateDarknessScale RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinMinecraft_Images",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "iris$setupImages",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "client_start",
          "why": "the client object is built"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinMinecraft_Keybinds",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "iris$onTick",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinMinecraft_PipelineManagement",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "iris$trackLastDimensionOnLeave",
          "kind": "inject",
          "method": "clearClientLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#clearClientLevel HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinMinecraft_PipelineManagement",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "iris$trackLastDimensionOnLevelChange",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_level_load",
          "why": "LevelEvent.Load: a level is set on the client"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinMinecraft_PipelineManagement",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "iris$resetPipeline",
          "kind": "inject",
          "method": "updateLevelInEngines",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#updateLevelInEngines HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinModelViewBobbing",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$saveShadersOn",
          "kind": "inject",
          "method": "renderLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#renderLevel HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinModelViewBobbing",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$applyBobbingToModelView",
          "kind": "wrap-operation",
          "method": "renderLevel",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Matrix4f;mul(Lorg/joml/Matrix4fc;)Lorg/joml/Matrix4f;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinModelViewBobbing",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$applySpinningRotate",
          "kind": "wrap-operation",
          "method": "renderLevel",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Matrix4f;rotate(FLorg/joml/Vector3fc;)Lorg/joml/Matrix4f;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinModelViewBobbing",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$applySpinningScale",
          "kind": "wrap-operation",
          "method": "renderLevel",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Matrix4f;scale(FFF)Lorg/joml/Matrix4f;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinModelViewBobbing",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "iris$renderLevel",
          "kind": "wrap-operation",
          "method": "renderLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;render(Lcom/mojang/blaze3d/resource/GraphicsResourceAllocator;ZLnet/minecraft/client/renderer/state/level/CameraRenderState;Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;Lorg/joml/Vector4f;ZZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinOptions_Entrypoint",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "iris$beforeLoadOptions",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Options;<init>(Lnet/minecraft/client/Minecraft;Ljava/io/File;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init> INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinParticleEngine",
          "targets": [
            "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer"
          ],
          "handler": "iris$beginDrawingParticles",
          "kind": "inject",
          "method": "executeGroup",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinParticleEngine",
          "targets": [
            "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer"
          ],
          "handler": "iris$finishDrawingParticles",
          "kind": "inject",
          "method": "executeGroup",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinQuickPlayDev",
          "targets": [
            "net/minecraft/client/quickplay/QuickPlay"
          ],
          "handler": "iris$createWorldIfDev",
          "kind": "inject",
          "method": "joinSingleplayerWorld",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/quickplay/QuickPlay#joinSingleplayerWorld HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinRenderPipeline",
          "targets": [
            "com/mojang/renderpearl/api/pipeline/RenderPipeline"
          ],
          "handler": "iris$change",
          "kind": "inject",
          "method": "getVertexFormatBinding",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/api/pipeline/RenderPipeline#getVertexFormatBinding RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinRenderPipeline",
          "targets": [
            "com/mojang/renderpearl/api/pipeline/RenderPipeline"
          ],
          "handler": "iris$change2",
          "kind": "inject",
          "method": "getVertexFormatBindings",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/api/pipeline/RenderPipeline#getVertexFormatBindings RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinRenderSystem",
          "targets": [
            "com/mojang/blaze3d/systems/RenderSystem"
          ],
          "handler": "iris$onRendererInit",
          "kind": "inject",
          "method": "initRenderer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/systems/RenderSystem#initRenderer RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinRenderTarget",
          "targets": [
            "com/mojang/blaze3d/pipeline/RenderTarget"
          ],
          "handler": "iris$onDestroyBuffers",
          "kind": "inject",
          "method": "destroyBuffers",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/pipeline/RenderTarget#destroyBuffers HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinScreenEffectRenderer",
          "targets": [
            "net/minecraft/client/renderer/ScreenEffectRenderer"
          ],
          "handler": "iris$disableUnderWaterOverlayRendering",
          "kind": "inject",
          "method": "submitWater",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/ScreenEffectRenderer#submitWater HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinShaderManager_Overrides",
          "targets": [
            "com/mojang/blaze3d/systems/RenderSystem"
          ],
          "handler": "redirectIrisProgram",
          "kind": "inject",
          "method": "getCompiledPipelineNullable",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/systems/RenderSystem#getCompiledPipelineNullable RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$renderSky$beginNormalSky",
          "kind": "inject",
          "method": "renderSkyDisc",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderSkyDisc HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$beforeDrawSun",
          "kind": "inject",
          "method": "renderSun",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderSun HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$beforeDrawMoon",
          "kind": "inject",
          "method": "renderMoon",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderMoon HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$setSunRenderStage",
          "kind": "inject",
          "method": "renderSun",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderSun HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$setMoonRenderStage",
          "kind": "inject",
          "method": "renderMoon",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderMoon HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$setSunsetRenderStage",
          "kind": "inject",
          "method": "renderSunriseAndSunset",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderSunriseAndSunset HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$setStarRenderStage",
          "kind": "inject",
          "method": "renderStars",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderStars HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$setVoidRenderStage",
          "kind": "inject",
          "method": "renderDarkDisc",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderDarkDisc HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$renderSky$tiltSun",
          "kind": "inject",
          "method": "renderSunMoonAndStars",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/PoseStack;rotateDegrees(Lcom/mojang/math/Axis;F)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderSunMoonAndStars INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinSystemReport",
          "targets": [
            "net/minecraft/SystemReport"
          ],
          "handler": "fillSystemDetails",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/SystemReport#<init> RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinTheEndGatewayRenderer",
          "targets": [
            "net/minecraft/client/renderer/blockentity/TheEndGatewayRenderer"
          ],
          "handler": "iris$renderType",
          "kind": "wrap-operation",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderTypes;endGateway()Lnet/minecraft/client/renderer/rendertype/RenderType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinTheEndPortalRenderer",
          "targets": [
            "net/minecraft/client/renderer/blockentity/AbstractEndPortalRenderer"
          ],
          "handler": "iris$renderType",
          "kind": "modify-arg",
          "method": "submitCube",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitCustomGeometry(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/SubmitNodeCollector$CustomGeometryRenderer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinTheEndPortalRenderer",
          "targets": [
            "net/minecraft/client/renderer/blockentity/AbstractEndPortalRenderer"
          ],
          "handler": "iris$onRender",
          "kind": "inject",
          "method": "lambda$submitCube$1",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/AbstractEndPortalRenderer#lambda$submitCube$1 HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinTitleScreen",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "iris$firstInit",
          "kind": "inject",
          "method": "init",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/TitleScreen#init RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinUniform",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$glGetUniformLocation",
          "kind": "inject",
          "method": "_glGetUniformLocation",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_glGetUniformLocation RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/MixinWindow",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlBackend"
          ],
          "handler": "iris$enableDebugContext",
          "kind": "inject",
          "method": "createWindow",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/sdl/SDLVideo;SDL_CreateWindow(Ljava/lang/CharSequence;IIJ)J",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlBackend#createWindow INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/VKOnly_InitKeys",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "iris$beforeLoadOptions",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Options;<init>(Lnet/minecraft/client/Minecraft;Ljava/io/File;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init> INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/VKOnly_InitKeys",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "iris$handleKe",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/BlockModelRenderStateMixin",
          "targets": [
            "net/minecraft/client/renderer/block/BlockModelRenderState"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/block/BlockModelRenderState#submit HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/BlockModelRenderStateMixin",
          "targets": [
            "net/minecraft/client/renderer/block/BlockModelRenderState"
          ],
          "handler": "onRenderEnd",
          "kind": "inject",
          "method": "submit",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/block/BlockModelRenderState#submit TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/BlockModelResolverMixin",
          "targets": [
            "net/minecraft/client/renderer/block/BlockModelResolver"
          ],
          "handler": "iris$setBlock",
          "kind": "inject",
          "method": "update",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/block/BlockModelResolver#update TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/ItemStackStateLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState"
          ],
          "handler": "iris$catchParent",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState#<init> TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/ItemStackStateLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState#submit HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/ItemStackStateLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState"
          ],
          "handler": "onRenderEnd",
          "kind": "inject",
          "method": "submit",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState#submit TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/ItemStackStateMixin",
          "targets": [
            "net/minecraft/client/renderer/item/ItemStackRenderState"
          ],
          "handler": "clearDisplayStack",
          "kind": "inject",
          "method": "clear",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/item/ItemStackRenderState#clear HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinBlockEntityRenderDispatcher",
          "targets": [
            "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher"
          ],
          "handler": "iris$beginEntityRender",
          "kind": "inject",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher;getRenderer(Lnet/minecraft/client/renderer/blockentity/state/BlockEntityRenderState;)Lnet/minecraft/client/renderer/blockentity/BlockEntityRenderer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#submit INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinBlockEntityRenderDispatcher",
          "targets": [
            "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher"
          ],
          "handler": "iris$endEntityRender",
          "kind": "inject",
          "method": "submit",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#submit RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinBlockModelFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/BlockModelFeatureRenderer"
          ],
          "handler": "iris$set",
          "kind": "inject",
          "method": "buildGroup",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/feature/BlockModelFeatureRenderer;getVertexBuilder(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lcom/mojang/blaze3d/vertex/VertexConsumer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/BlockModelFeatureRenderer#buildGroup INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinBlockModelFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/BlockModelFeatureRenderer"
          ],
          "handler": "iris$unset",
          "kind": "inject",
          "method": "buildGroup",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/BlockModelFeatureRenderer#buildGroup RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinCapeLayer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/CapeLayer"
          ],
          "handler": "changeId",
          "kind": "inject",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/PoseStack;pushPose()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/CapeLayer#submit INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinCapeLayer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/CapeLayer"
          ],
          "handler": "changeId2",
          "kind": "inject",
          "method": "submit",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/CapeLayer#submit RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinCustomFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/CustomFeatureRenderer"
          ],
          "handler": "iris$set",
          "kind": "inject",
          "method": "buildGroup",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/feature/CustomFeatureRenderer;getVertexBuilder(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lcom/mojang/blaze3d/vertex/VertexConsumer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/CustomFeatureRenderer#buildGroup INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinCustomFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/CustomFeatureRenderer"
          ],
          "handler": "iris$unset",
          "kind": "inject",
          "method": "buildGroup",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/CustomFeatureRenderer#buildGroup RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinCustomGeometrySubmit",
          "targets": [
            "net/minecraft/client/renderer/feature/CustomFeatureRenderer$Submit"
          ],
          "handler": "iris$capture2",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/CustomFeatureRenderer$Submit#<init> RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinElytraLayer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/WingsLayer"
          ],
          "handler": "changeId",
          "kind": "inject",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/PoseStack;pushPose()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/WingsLayer#submit INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinElytraLayer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/WingsLayer"
          ],
          "handler": "changeId2",
          "kind": "inject",
          "method": "submit",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/WingsLayer#submit RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinEnderDragonRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/EnderDragonRenderer"
          ],
          "handler": "changeId",
          "kind": "inject",
          "method": "submitCrystalBeams",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/PoseStack;pushPose()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EnderDragonRenderer#submitCrystalBeams INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinEnderDragonRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/EnderDragonRenderer"
          ],
          "handler": "changeId2",
          "kind": "inject",
          "method": "submitCrystalBeams",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EnderDragonRenderer#submitCrystalBeams RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinEntityRenderDispatcher",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "iris$beginEntityRender",
          "kind": "inject",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/PoseStack;pushPose()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinEntityRenderDispatcher",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "iris$endEntityRender",
          "kind": "inject",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/PoseStack;popPose()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinEquipmentLayerRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer"
          ],
          "handler": "changeId",
          "kind": "inject",
          "method": "Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/resources/model/EquipmentClientInfo$Layer;usePlayerTexture()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinEquipmentLayerRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer"
          ],
          "handler": "changeTrimTemp",
          "kind": "inject",
          "method": "Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;trimTextureLookup:Ljava/util/function/Function;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers FIELD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinEquipmentLayerRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer"
          ],
          "handler": "changeTrimTemp2",
          "kind": "inject",
          "method": "Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/OrderedSubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IIILnet/minecraft/client/renderer/texture/UvMapping;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinEquipmentLayerRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer"
          ],
          "handler": "changeId2",
          "kind": "inject",
          "method": "Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinFlameFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/FlameFeatureRenderer"
          ],
          "handler": "iris$setFlame",
          "kind": "inject",
          "method": "prepare",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/FlameFeatureRenderer#prepare HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinFlameFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/FlameFeatureRenderer"
          ],
          "handler": "iris$setFlame2",
          "kind": "inject",
          "method": "prepare",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/FlameFeatureRenderer#prepare RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinHorseArmorLayer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/SimpleEquipmentLayer"
          ],
          "handler": "changeId",
          "kind": "inject",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers(Lnet/minecraft/client/resources/model/EquipmentClientInfo$LayerType;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lnet/minecraft/world/item/ItemStack;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/resources/Identifier;II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/SimpleEquipmentLayer#submit INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinHorseArmorLayer",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/SimpleEquipmentLayer"
          ],
          "handler": "changeId2",
          "kind": "inject",
          "method": "submit",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/SimpleEquipmentLayer#submit TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinItemFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/ItemFeatureRenderer"
          ],
          "handler": "iris$set",
          "kind": "inject",
          "method": "prepareSubmit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/ItemFeatureRenderer#prepareSubmit HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinItemFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/ItemFeatureRenderer"
          ],
          "handler": "iris$clear",
          "kind": "inject",
          "method": "prepareSubmit",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/ItemFeatureRenderer#prepareSubmit RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinItemRenderer",
          "targets": [
            "net/minecraft/client/renderer/item/ItemModelResolver"
          ],
          "handler": "changeId",
          "kind": "inject",
          "method": "appendItemLayers",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/item/ItemModelResolver#appendItemLayers HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinModelStorageTrigger",
          "targets": [
            "net/minecraft/client/renderer/SubmitNodeCollection"
          ],
          "handler": "iris$capture",
          "kind": "inject",
          "method": "submitModel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderTypes;waterMask()Lnet/minecraft/client/renderer/rendertype/RenderType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SubmitNodeCollection#submitModel INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinModelStorageTrigger",
          "targets": [
            "net/minecraft/client/renderer/SubmitNodeCollection"
          ],
          "handler": "iris$capture6",
          "kind": "wrap-operation",
          "method": "submitBlockModel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderType;hasBlending()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinModelStorageTrigger",
          "targets": [
            "net/minecraft/client/renderer/SubmitNodeCollection"
          ],
          "handler": "iris$capture7",
          "kind": "wrap-operation",
          "method": "submitCustomGeometry",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderType;hasBlending()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinModelStorageTrigger",
          "targets": [
            "net/minecraft/client/renderer/SubmitNodeCollection"
          ],
          "handler": "iris$capture4",
          "kind": "wrap-operation",
          "method": "submitItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/feature/phase/SimpleFeatureRenderPhase;submit(Lnet/minecraft/client/renderer/feature/submit/SubmitNode;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinModelStorageTrigger",
          "targets": [
            "net/minecraft/client/renderer/SubmitNodeCollection"
          ],
          "handler": "iris$capture5",
          "kind": "wrap-operation",
          "method": "submitTextPart",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/feature/phase/SimpleFeatureRenderPhase;submit(Lnet/minecraft/client/renderer/feature/submit/SubmitNode;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinTextFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/TextFeatureRenderer"
          ],
          "handler": "iris$set",
          "kind": "inject",
          "method": "buildGroup",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/feature/TextFeatureRenderer$Submit;pose()Lorg/joml/Matrix4fc;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/TextFeatureRenderer#buildGroup INVOKE"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/entity_render_context/MixinTextFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/TextFeatureRenderer"
          ],
          "handler": "iris$clear",
          "kind": "inject",
          "method": "buildGroup",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/TextFeatureRenderer#buildGroup RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/fabulous/MixinDisableFabulousGraphics",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "iris$disableFabulousGraphicsOnResourceReload",
          "kind": "inject",
          "method": "onResourceManagerReload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#onResourceManagerReload HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/fabulous/MixinDisableFabulousGraphics",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "iris$disableFabulousGraphicsOnLevelRendererReload",
          "kind": "inject",
          "method": "allChanged",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#allChanged HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/gui/MixinHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "iris$disableVignetteRendering",
          "kind": "inject",
          "method": "extractVignette",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/gui/MixinVideoSettingsScreen",
          "targets": [
            "net/minecraft/client/gui/screens/options/VideoSettingsScreen"
          ],
          "handler": "iris$addShaderPackScreenButton",
          "kind": "modify-arg",
          "method": "addOptions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/OptionsList;addSmall([Lnet/minecraft/client/OptionInstance;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/shadows/MixinBeaconRenderer",
          "targets": [
            "net/minecraft/client/renderer/blockentity/BeaconRenderer"
          ],
          "handler": "iris$noLightBeamInShadowPass",
          "kind": "inject",
          "method": "submitBeaconBeam",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/BeaconRenderer#submitBeaconBeam HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/sky/MixinClientLevelData_DisableVoidPlane",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel$ClientLevelData"
          ],
          "handler": "iris$getHorizonHeight",
          "kind": "inject",
          "method": "getHorizonHeight",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel$ClientLevelData#getHorizonHeight HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/sky/MixinDimensionSpecialEffects",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "iris$getSunriseColor",
          "kind": "inject",
          "method": "renderSunriseAndSunset",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderSunriseAndSunset HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/sky/MixinOptions_CloudsOverride",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "iris$overrideCloudsType",
          "kind": "inject",
          "method": "getCloudStatus",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#getCloudStatus HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/statelisteners/MixinGlStateManager",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$onBlendFunc",
          "kind": "inject",
          "method": "_blendFuncSeparate",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_blendFuncSeparate RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/statelisteners/MixinRenderSystem",
          "targets": [
            "com/mojang/blaze3d/systems/RenderSystem"
          ],
          "handler": "iris$onFogStart",
          "kind": "inject",
          "method": "setShaderFog",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/systems/RenderSystem#setShaderFog HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinAbstractTexture",
          "targets": [
            "net/minecraft/client/renderer/texture/AbstractTexture"
          ],
          "handler": "iris$afterGenerateId",
          "kind": "inject",
          "method": "getTexture",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/AbstractTexture#getTexture RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinGlStateManager",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$onTexImage2D",
          "kind": "inject",
          "method": "_texImage2D",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_texImage2D TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinGlStateManager",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "iris$onDeleteTexture",
          "kind": "inject",
          "method": "_deleteTexture",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlStateManager#_deleteTexture TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinIdentifier",
          "targets": [
            "net/minecraft/resources/Identifier"
          ],
          "handler": "iris$blockDUMMY",
          "kind": "inject",
          "method": "isValidPath",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/resources/Identifier#isValidPath HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinIdentifier",
          "targets": [
            "net/minecraft/resources/Identifier"
          ],
          "handler": "iris$allowInvalidPaths",
          "kind": "inject",
          "method": "validPathChar",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/resources/Identifier#validPathChar HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinSpriteContents",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteContents"
          ],
          "handler": "iris$redirectMipmapGeneration",
          "kind": "wrap-operation",
          "method": "increaseMipLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/MipmapGenerator;generateMipLevels(Lnet/minecraft/resources/Identifier;[Lcom/mojang/blaze3d/platform/NativeImage;ILnet/minecraft/client/renderer/texture/MipmapStrategy;FLcom/mojang/blaze3d/platform/Transparency;)[Lcom/mojang/blaze3d/platform/NativeImage;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinTextureManager",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureManager"
          ],
          "handler": "iris$onTailReloadLambda",
          "kind": "inject",
          "method": "lambda$reload$2",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureManager#lambda$reload$2 TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinTextureManager",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureManager"
          ],
          "handler": "iris$onTailReloadLambda",
          "kind": "inject",
          "method": "lambda$reload$3",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureManager#lambda$reload$3 TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinTextureManager",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureManager"
          ],
          "handler": "iris$onInnerDumpTextures",
          "kind": "inject",
          "method": "dumpAllSheets",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureManager#dumpAllSheets RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/MixinTextureManager",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureManager"
          ],
          "handler": "iris$onTailClose",
          "kind": "inject",
          "method": "close",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureManager#close TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/pbr/MixinDirectoryLister",
          "targets": [
            "net/minecraft/client/renderer/texture/atlas/sources/DirectoryLister"
          ],
          "handler": "iris$modifyForEachAction",
          "kind": "modify-args",
          "method": "run",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;forEach(Ljava/util/function/BiConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-args)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/pbr/MixinReloadableTexture",
          "targets": [
            "net/minecraft/client/renderer/texture/ReloadableTexture"
          ],
          "handler": "iris$onDoLoad",
          "kind": "inject",
          "method": "doLoad",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/ReloadableTexture#doLoad RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/pbr/MixinSpriteContents",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteContents"
          ],
          "handler": "iris$onTailClose",
          "kind": "inject",
          "method": "close",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteContents#close TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/pbr/MixinTextureAtlas",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "iris$onTailCycleAnimationFrames",
          "kind": "inject",
          "method": "cycleAnimationFrames",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureAtlas#cycleAnimationFrames TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/texture/pbr/MixinTextureAtlas",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "iris$onUpload",
          "kind": "inject",
          "method": "upload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureAtlas#upload RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/MixinBufferBuilder",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "iris$extendFormat",
          "kind": "modify-variable",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/api/vertex/VertexFormat;contains(Ljava/lang/String;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/MixinBufferBuilder",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "iris$cacheOffsets",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/vertex/BufferBuilder#<init> TAIL"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/MixinBufferBuilder",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "iris$fillPerVertexData",
          "kind": "inject",
          "method": "addVertex",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/vertex/BufferBuilder#addVertex RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/MixinBufferBuilder",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "iris$beforeNext",
          "kind": "inject",
          "method": "endLastVertex",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/vertex/BufferBuilder#endLastVertex HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/block_rendering/MixinClientLevel",
          "targets": [
            "net/minecraft/world/level/CardinalLighting"
          ],
          "handler": "iris$maybeDisableDirectionalShading",
          "kind": "modify-variable",
          "method": "byFace",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/immediate/MixinBufferSource",
          "targets": [
            "net/minecraft/client/renderer/StagedVertexBuffer"
          ],
          "handler": "iris$beforeFlushBuffer",
          "kind": "inject",
          "method": "upload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/StagedVertexBuffer#upload HEAD"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/immediate/MixinBufferSource",
          "targets": [
            "net/minecraft/client/renderer/StagedVertexBuffer"
          ],
          "handler": "iris$afterFlushBuffer",
          "kind": "inject",
          "method": "upload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/StagedVertexBuffer#upload RETURN"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/immediate/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$immediateStateBeginLevelRender",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "render_needs",
          "why": "the level's drawing starts: what it needs drawn is decided here"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/immediate/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "iris$immediateStateEndLevelRender",
          "kind": "inject",
          "method": "render",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "world_drawn",
          "why": "RenderLevelStageEvent: the whole level is drawn"
        },
        {
          "mixin": "net/irisshaders/iris/mixin/vertices/immediate/MixinRenderType",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderType"
          ],
          "handler": "iris$change",
          "kind": "inject",
          "method": "format",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/rendertype/RenderType#format RETURN"
        }
      ],
      "listening": 144,
      "accessors": 43,
      "hooks": {
        "client_level_load": 1,
        "client_start": 1,
        "frame": 1,
        "hud": 1,
        "net_from_server": 1,
        "render_fog": 1,
        "render_needs": 2,
        "tick": 2,
        "world_drawn": 1
      },
      "wanted": {
        "com/mojang/blaze3d/pipeline/RenderTarget#destroyBuffers @HEAD": 1,
        "com/mojang/blaze3d/systems/RenderSystem#getCompiledPipelineNullable @RETURN": 1,
        "com/mojang/blaze3d/systems/RenderSystem#initRenderer @RETURN": 1,
        "com/mojang/blaze3d/systems/RenderSystem#setShaderFog @HEAD": 1,
        "com/mojang/blaze3d/vertex/BufferBuilder#<init> @TAIL": 1,
        "com/mojang/blaze3d/vertex/BufferBuilder#addVertex @RETURN": 1,
        "com/mojang/blaze3d/vertex/BufferBuilder#endLastVertex @HEAD": 1,
        "com/mojang/renderpearl/api/pipeline/RenderPipeline#getVertexFormatBinding @RETURN": 1,
        "com/mojang/renderpearl/api/pipeline/RenderPipeline#getVertexFormatBindings @RETURN": 1,
        "com/mojang/renderpearl/backend/opengl/GlCommandEncoder#setupDraw @RETURN": 1,
        "com/mojang/renderpearl/backend/opengl/GlCommandEncoder#submitRenderPass @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlProgram#close @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlProgram#setupBindGroupLayouts @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlRenderPipeline#<init> @RETURN": 1,
        "com/mojang/renderpearl/backend/opengl/GlRenderPipeline#bind @RETURN": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_activeTexture @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_blendFuncSeparate @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_blendFuncSeparate @RETURN": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_colorMask @HEAD": 2,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_deleteTexture @TAIL": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_depthMask @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_disableBlend @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_enableBlend @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_glGetUniformLocation @RETURN": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_glUseProgram @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_glUseProgram @TAIL": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_texImage2D @TAIL": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_viewport @HEAD": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager$BooleanState#setEnabled @HEAD": 1,
        "com/mojang/renderpearl/frontend/FrontendRenderPass#setUniform @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer#isEntityVisible @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer#scheduleTerrainUpdate @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#<init> @TAIL": 2,
        "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#cleanupAndFlip @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#destroy @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#prepareRenderTrees @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#processChunkBuilds @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#processGFNIMovement @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/UniformBufferManager#<init> @RETURN": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/UniformBufferManager#endFrame @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer#processQuad @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion#delete @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkVertexEncoder$Vertex#copyVertexTo @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/model/AbstractBlockRenderContext#bufferDefaultModel @TAIL": 1,
        "net/fabricmc/fabric/api/client/renderer/v1/render/submit/ExtendedBlockModelSubmit#<init> @RETURN": 1,
        "net/minecraft/SystemReport#<init> @RETURN": 1,
        "net/minecraft/client/KeyboardHandler#handleDebugKeys @RETURN": 1,
        "net/minecraft/client/Minecraft#clearClientLevel @HEAD": 1,
        "net/minecraft/client/Minecraft#updateLevelInEngines @HEAD": 1,
        "net/minecraft/client/Options#getCloudStatus @HEAD": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> @RETURN": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList @HEAD": 1,
        "net/minecraft/client/gui/screens/TitleScreen#init @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientLevel$ClientLevelData#getHorizonHeight @HEAD": 1,
        "net/minecraft/client/quickplay/QuickPlay#joinSingleplayerWorld @HEAD": 1,
        "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitArmWithItem @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#<init> @TAIL": 1,
        "net/minecraft/client/renderer/GameRenderer#renderLevel @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#renderLevel @TAIL": 1,
        "net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency @HEAD": 1,
        "net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$0 @HEAD": 2,
        "net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$0 @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$8 @HEAD": 2,
        "net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$8 @RETURN": 1,
        "net/minecraft/client/renderer/LightmapRenderStateExtractor#calculateDarknessScale @RETURN": 1,
        "net/minecraft/client/renderer/MapRenderer#render @HEAD": 1,
        "net/minecraft/client/renderer/ScreenEffectRenderer#submitWater @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderDarkDisc @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderMoon @HEAD": 2,
        "net/minecraft/client/renderer/SkyRenderer#renderSkyDisc @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderStars @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderSun @HEAD": 2,
        "net/minecraft/client/renderer/SkyRenderer#renderSunriseAndSunset @HEAD": 2,
        "net/minecraft/client/renderer/StagedVertexBuffer#upload @HEAD": 1,
        "net/minecraft/client/renderer/StagedVertexBuffer#upload @RETURN": 1,
        "net/minecraft/client/renderer/block/BlockModelRenderState#submit @HEAD": 1,
        "net/minecraft/client/renderer/block/BlockModelRenderState#submit @TAIL": 1,
        "net/minecraft/client/renderer/block/BlockModelResolver#update @TAIL": 1,
        "net/minecraft/client/renderer/blockentity/AbstractEndPortalRenderer#lambda$submitCube$1 @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/AbstractSignRenderer#submitSignText @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/BeaconRenderer#submitBeaconBeam @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#submit @RETURN": 1,
        "net/minecraft/client/renderer/entity/EnderDragonRenderer#submitCrystalBeams @RETURN": 1,
        "net/minecraft/client/renderer/entity/layers/CapeLayer#submit @RETURN": 1,
        "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers @TAIL": 1,
        "net/minecraft/client/renderer/entity/layers/SimpleEquipmentLayer#submit @TAIL": 1,
        "net/minecraft/client/renderer/entity/layers/WingsLayer#submit @RETURN": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#allChanged @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#onResourceManagerReload @HEAD": 1,
        "net/minecraft/client/renderer/feature/BlockModelFeatureRenderer#buildGroup @RETURN": 1,
        "net/minecraft/client/renderer/feature/CustomFeatureRenderer#buildGroup @RETURN": 1,
        "net/minecraft/client/renderer/feature/CustomFeatureRenderer$Submit#<init> @RETURN": 1,
        "net/minecraft/client/renderer/feature/FlameFeatureRenderer#prepare @HEAD": 1,
        "net/minecraft/client/renderer/feature/FlameFeatureRenderer#prepare @RETURN": 1,
        "net/minecraft/client/renderer/feature/ItemFeatureRenderer#prepareSubmit @HEAD": 1,
        "net/minecraft/client/renderer/feature/ItemFeatureRenderer#prepareSubmit @RETURN": 1,
        "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup @HEAD": 1,
        "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup @RETURN": 1,
        "net/minecraft/client/renderer/feature/TextFeatureRenderer#buildGroup @RETURN": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#setupFog @RETURN": 1,
        "net/minecraft/client/renderer/item/ItemModelResolver#appendItemLayers @HEAD": 1,
        "net/minecraft/client/renderer/item/ItemStackRenderState#clear @HEAD": 1,
        "net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState#<init> @TAIL": 1,
        "net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState#submit @HEAD": 1,
        "net/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState#submit @TAIL": 1,
        "net/minecraft/client/renderer/rendertype/RenderType#format @RETURN": 1,
        "net/minecraft/client/renderer/texture/AbstractTexture#getTexture @RETURN": 1,
        "net/minecraft/client/renderer/texture/ReloadableTexture#doLoad @RETURN": 1,
        "net/minecraft/client/renderer/texture/SpriteContents#close @TAIL": 1,
        "net/minecraft/client/renderer/texture/TextureAtlas#cycleAnimationFrames @TAIL": 1,
        "net/minecraft/client/renderer/texture/TextureAtlas#upload @RETURN": 1,
        "net/minecraft/client/renderer/texture/TextureManager#close @TAIL": 1,
        "net/minecraft/client/renderer/texture/TextureManager#dumpAllSheets @RETURN": 1,
        "net/minecraft/client/renderer/texture/TextureManager#lambda$reload$2 @TAIL": 1,
        "net/minecraft/client/renderer/texture/TextureManager#lambda$reload$3 @TAIL": 1,
        "net/minecraft/client/resources/language/ClientLanguage#appendFrom @HEAD": 1,
        "net/minecraft/client/resources/language/ClientLanguage#getOrDefault @HEAD": 1,
        "net/minecraft/client/resources/language/ClientLanguage#has @HEAD": 1,
        "net/minecraft/client/resources/language/ClientLanguage#loadFrom @HEAD": 1,
        "net/minecraft/resources/Identifier#isValidPath @HEAD": 1,
        "net/minecraft/resources/Identifier#validPathChar @HEAD": 1,
        "net/minecraft/server/ChainedJsonException#forException @HEAD": 1,
        "net/minecraft/world/item/ItemStack#hasFoil @HEAD": 1,
        "net/minecraft/world/level/biome/Biomes#register @TAIL": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#getShadeBrightness @RETURN": 1
      },
      "wanted_calls": {
        "com/mojang/blaze3d/systems/ScissorState#enable @INVOKE (redirect)": 1,
        "com/mojang/renderpearl/api/vertex/VertexFormat#contains @INVOKE (modify-variable)": 1,
        "com/mojang/renderpearl/backend/opengl/GlBackend#createWindow @INVOKE": 1,
        "com/mojang/renderpearl/backend/opengl/GlCommandEncoder#setupDraw @FIELD": 1,
        "com/mojang/renderpearl/backend/opengl/GlRenderPipeline#cull:Z @FIELD (wrap-operation)": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#<clinit> @HEAD (modify-constant)": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_depthFunc @INVOKE (wrap-operation)": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_disableBlend @INVOKE (wrap-operation)": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_enableBlend @INVOKE (wrap-operation)": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_glBindFramebuffer @INVOKE (redirect)": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_scissorBox @INVOKE (redirect)": 1,
        "com/mojang/renderpearl/backend/opengl/GlStateManager#_viewport @INVOKE (redirect)": 1,
        "java/util/Map#forEach @INVOKE (modify-args)": 1,
        "net/caffeinemc/mods/sodium/client/gui/SodiumOptions$PerformanceSettings#useBlockFaceCulling:Z @FIELD (redirect)": 1,
        "net/caffeinemc/mods/sodium/client/gui/SodiumOptions$PerformanceSettings#useFogOcclusion:Z @FIELD (redirect)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer#<init> @INVOKE (modify-arg)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer#shouldDraw:[Z @FIELD (redirect)": 2,
        "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#needsUpdate @INVOKE (redirect)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#needsUpdate @INVOKE (wrap-operation)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager#renderLists:Lnet/caffeinemc/mods/sodium/client/render/chunk/lists/SortedRenderLists; @FIELD (redirect)": 2,
        "net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer#begin @INVOKE (wrap-operation)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer#vertexFormat:Lcom/mojang/renderpearl/api/vertex/VertexFormat; @FIELD (redirect)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkBuilder#<init> @INVOKE (modify-arg)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer#bufferQuad @FIELD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer#renderModel @INVOKE": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer#updateQuad @INVOKE (modify-arg)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer#writeQuad @FIELD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask#execute @INVOKE": 4,
        "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion#clearAllCachedBatches @INVOKE (redirect)": 3,
        "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion#clearCachedBatchFor @INVOKE (redirect)": 3,
        "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegionManager#createForChunk @INVOKE (redirect)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkMeshFormats#getCurrent @OVERWRITE": 1,
        "net/caffeinemc/mods/sodium/client/render/model/AbstractBlockRenderContext#bufferDefaultModel @INVOKE": 1,
        "net/minecraft/client/Camera#prepareCullFrustum @NEW (wrap-operation)": 1,
        "net/minecraft/client/Minecraft#<init> @INVOKE": 2,
        "net/minecraft/client/gui/GuiGraphicsExtractor#blit @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/components/OptionsList#addSmall @INVOKE (modify-arg)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#entitiesForRendering @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/EndFlashState#calculateFlashParameters @INVOKE": 1,
        "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#submitHandsWithItems @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/GameRenderer#nightVisionScale @INVOKE": 1,
        "net/minecraft/client/renderer/GlobalSettingsUniform#update @INVOKE (modify-args)": 1,
        "net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency @INVOKE": 1,
        "net/minecraft/client/renderer/LevelRenderer#executeClassicTransparency @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/LevelRenderer#render @INVOKE": 2,
        "net/minecraft/client/renderer/LevelRenderer#render @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/LevelRenderer#submitHitOutline @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/LightmapRenderStateExtractor#extract @INVOKE": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderSunMoonAndStars @INVOKE": 1,
        "net/minecraft/client/renderer/SubmitNodeCollection#submitModel @INVOKE": 1,
        "net/minecraft/client/renderer/SubmitNodeCollector#submitCustomGeometry @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/SubmitNodeCollector#submitShadow @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher#submit @INVOKE": 1,
        "net/minecraft/client/renderer/chunk/ChunkSectionsToRender#renderGroup @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/chunk/ChunkSectionsToRender#renderGroup @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/entity/EnderDragonRenderer#submitCrystalBeams @INVOKE": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @INVOKE": 2,
        "net/minecraft/client/renderer/entity/layers/CapeLayer#submit @INVOKE": 1,
        "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers @FIELD": 1,
        "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#Lnet/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer;renderLayers @INVOKE": 2,
        "net/minecraft/client/renderer/entity/layers/SimpleEquipmentLayer#submit @INVOKE": 1,
        "net/minecraft/client/renderer/entity/layers/WingsLayer#submit @INVOKE": 1,
        "net/minecraft/client/renderer/feature/BlockModelFeatureRenderer#buildGroup @INVOKE": 1,
        "net/minecraft/client/renderer/feature/CustomFeatureRenderer#buildGroup @INVOKE": 1,
        "net/minecraft/client/renderer/feature/TextFeatureRenderer#buildGroup @INVOKE": 1,
        "net/minecraft/client/renderer/feature/phase/SimpleFeatureRenderPhase#submit @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/renderer/rendertype/RenderType#hasBlending @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/renderer/rendertype/RenderTypes#endGateway @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/texture/MipmapGenerator#generateMipLevels @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler#lambda$tick$1 @INVOKE": 1,
        "net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler#method_75840 @INVOKE": 1,
        "net/minecraft/world/level/CardinalLighting#byFace @HEAD (modify-variable)": 1,
        "org/joml/Matrix4f#mul @INVOKE (wrap-operation)": 1,
        "org/joml/Matrix4f#rotate @INVOKE (wrap-operation)": 1,
        "org/joml/Matrix4f#scale @INVOKE (wrap-operation)": 1,
        "org/lwjgl/opengl/GL33C#glDrawBuffers @INVOKE (redirect)": 1,
        "org/lwjgl/opengl/GL33C#glDrawElements @INVOKE (redirect)": 1,
        "org/lwjgl/opengl/GL33C#glDrawElementsInstancedBaseVertex @INVOKE (modify-arg)": 1,
        "org/lwjgl/opengl/GL33C#glGetUniformBlockIndex @INVOKE (redirect)": 1,
        "org/lwjgl/opengl/GL33C#nglMultiDrawElementsBaseVertex @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SemanticVersion",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "VersionParsingException",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 983,
        "features": {
          "screen": 19,
          "renderer": 13,
          "mixin": 187
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 983,
        "methods": 2933,
        "tried": 600,
        "completed": 250,
        "handlers_tried": 11,
        "handlers_completed": 3,
        "missing": {
          "[Lde/odysseus/ithaka/digraph/util/fas/FeedbackArcSetPolicy;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/gl/GlVersion;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/gl/blending/AlphaTestFunction;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/gl/blending/BlendModeFunction;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/gl/texture/PixelFormat;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/gl/texture/ShaderDataType;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/pathways/colorspace/ColorSpace;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/pipeline/transform/Patch;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/pipeline/transform/PatchShaderType;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/shaderpack/loading/ProgramGroup;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/shaderpack/materialmap/BlockRenderType;#clone()Ljava/lang/Object;": 1,
          "[Lnet/irisshaders/iris/shaderpack/parsing/BooleanParser$Operation;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/ImmutableMap#copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap;": 2,
          "com/google/common/collect/ImmutableSet#builder()Lcom/google/common/collect/ImmutableSet$Builder;": 2,
          "com/google/common/collect/ImmutableSet#of()Lcom/google/common/collect/ImmutableSet;": 1,
          "com/google/common/collect/ImmutableSet#of(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet;": 2,
          "com/mojang/blaze3d/systems/RenderSystem#getProjectionMatrixBuffer()Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;": 1,
          "com/mojang/blaze3d/systems/RenderSystem#setProjectionMatrix(Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;Lcom/mojang/blaze3d/ProjectionType;)V": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_activeTexture(I)V": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_genTexture()I": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_glBindFramebuffer(II)V": 6,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_glGenBuffers()I": 2,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_glUniform1i(II)V": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_scissorBox(IIII)V": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_viewport(IIII)V": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glGenFramebuffers()I": 1,
          "com/seibel/distanthorizons/api/DhApi$Delayed#configs": 4,
          "com/seibel/distanthorizons/api/DhApi$Delayed#renderProxy": 1,
          "it/unimi/dsi/fastutil/ints/Int2ObjectMap#get(I)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/ints/Int2ObjectMap#remove(I)Ljava/lang/Object;": 1,
          "java/io/Writer#write(Ljava/lang/String;)V": 1,
          "java/lang/Character#isJavaIdentifierStart(C)Z": 1,
          "java/lang/Throwable#getStackTrace()[Ljava/lang/StackTraceElement;": 3,
          "java/lang/invoke/MethodHandle#invoke()Z": 1,
          "java/nio/charset/StandardCharsets#UTF_8": 1,
          "java/nio/file/Path#resolve(Ljava/lang/String;)Ljava/nio/file/Path;": 3,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Collection#add(Ljava/lang/Object;)Z": 1,
          "java/util/List#of()Ljava/util/List;": 1,
          "java/util/Locale#US": 1,
          "java/util/Objects#hashCode(Ljava/lang/Object;)I": 1,
          "java/util/OptionalLong#empty()Ljava/util/OptionalLong;": 1,
          "java/util/OptionalLong#orElse(J)J": 1,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "java/util/Set#hashCode()I": 1,
          "java/util/function/IntSupplier#getAsInt()I": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 3,
          "net/caffeinemc/mods/sodium/api/util/ColorABGR#pack(IIII)I": 2,
          "net/caffeinemc/mods/sodium/api/util/ColorABGR#unpackAlpha(I)I": 2,
          "net/irisshaders/iris/gl/shader/ShaderType#ordinal()I": 1,
          "net/irisshaders/iris/gl/uniform/DynamicLocationalUniformHolder#location(Ljava/lang/String;Lnet/irisshaders/iris/gl/uniform/UniformType;)Ljava/util/OptionalInt;": 18,
          "net/irisshaders/iris/gui/FeatureMissingErrorScreen#extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/irisshaders/iris/gui/OldImageButton#getX()I": 1,
          "net/irisshaders/iris/gui/debug/DebugTextWidget#getY()I": 1,
          "net/irisshaders/iris/gui/element/ShaderPackSelectionList#getSelected()Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;": 1,
          "net/minecraft/client/Camera#getFluidInCamera()Lnet/minecraft/world/level/material/FogType;": 1,
          "net/minecraft/client/Minecraft#getCameraEntity()Lnet/minecraft/world/entity/Entity;": 6,
          "net/minecraft/client/Minecraft#getDeltaTracker()Lnet/minecraft/client/DeltaTracker;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 7,
          "net/minecraft/client/OptionInstance#createButton(Lnet/minecraft/client/Options;III)Lnet/minecraft/client/gui/components/AbstractWidget;": 1,
          "net/minecraft/client/gui/ComponentPath#leaf(Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/ComponentPath;": 2,
          "net/minecraft/client/gui/narration/NarratableEntry$NarrationPriority#NONE": 1,
          "net/minecraft/client/gui/narration/NarratedElementType#TITLE": 1,
          "net/minecraft/client/gui/screens/Screen#init()V": 1,
          "net/minecraft/client/gui/screens/Screen#tick()V": 1,
          "net/minecraft/client/input/KeyEvent#isConfirmation()Z": 2,
          "net/minecraft/client/input/KeyEvent#isEscape()Z": 1,
          "net/minecraft/client/input/MouseButtonEvent#button()I": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/MutableComponent#copy()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/util/Mth#clamp(FFF)F": 1,
          "new com/mojang/blaze3d/platform/NativeImage": 3,
          "new it/unimi/dsi/fastutil/objects/Object2IntOpenHashMap": 2,
          "new it/unimi/dsi/fastutil/objects/Object2ObjectArrayMap": 1,
          "new it/unimi/dsi/fastutil/objects/Object2ObjectLinkedOpenHashMap": 1,
          "new org/joml/Matrix4f": 2,
          "new org/joml/Vector3d": 1,
          "new org/joml/Vector4f": 1,
          "org/joml/Vector3f#x()F": 2,
          "org/lwjgl/opengl/GL#getCapabilities()Lorg/lwjgl/opengl/GLCapabilities;": 6,
          "org/lwjgl/opengl/GL30C#glBindTexture(II)V": 6,
          "org/lwjgl/opengl/GL32C#glBindAttribLocation(IILjava/lang/CharSequence;)V": 1,
          "org/lwjgl/opengl/GL32C#glBufferData(I[FI)V": 1,
          "org/lwjgl/opengl/GL32C#glDetachShader(II)V": 1,
          "org/lwjgl/opengl/GL32C#glDisablei(II)V": 1,
          "org/lwjgl/opengl/GL32C#glEnablei(II)V": 1,
          "org/lwjgl/opengl/GL32C#glGetFloatv(I[F)V": 1,
          "org/lwjgl/opengl/GL32C#glGetIntegerv(I[I)V": 1,
          "org/lwjgl/opengl/GL32C#glGetProgramInfoLog(I)Ljava/lang/String;": 1,
          "org/lwjgl/opengl/GL32C#glGetProgramiv(II[I)V": 1,
          "org/lwjgl/opengl/GL32C#glGetShaderInfoLog(I)Ljava/lang/String;": 1,
          "org/lwjgl/opengl/GL32C#glGetUniformBlockIndex(ILjava/lang/CharSequence;)I": 1,
          "org/lwjgl/opengl/GL32C#glTexParameteriv(II[I)V": 1,
          "org/lwjgl/opengl/GL32C#glUniform1f(IF)V": 1,
          "org/lwjgl/opengl/GL32C#glUniform2f(IFF)V": 1,
          "org/lwjgl/opengl/GL32C#glUniform2i(III)V": 1,
          "org/lwjgl/opengl/GL32C#glUniform3f(IFFF)V": 1,
          "org/lwjgl/opengl/GL32C#glUniform3i(IIII)V": 1,
          "org/lwjgl/opengl/GL32C#glUniformBlockBinding(III)V": 1,
          "org/lwjgl/opengl/GL32C#glUniformMatrix4fv(IZLjava/nio/FloatBuffer;)V": 1,
          "org/lwjgl/opengl/GL32C#glUniformMatrix4fv(IZ[F)V": 1,
          "org/lwjgl/opengl/GL43C#glBindBufferBase(III)V": 1,
          "org/lwjgl/opengl/GL43C#glGenBuffers([I)V": 1,
          "org/lwjgl/opengl/GL45C#glBufferStorage(IJI)V": 1,
          "org/lwjgl/opengl/GL45C#glDispatchCompute(III)V": 1,
          "org/lwjgl/opengl/KHRDebug#glObjectLabel(IILjava/lang/CharSequence;)V": 1,
          "org/lwjgl/opengl/KHRDebug#glPushDebugGroup(IILjava/lang/CharSequence;)V": 1
        },
        "runs": [
          {
            "class": "kroppeb/stareval/function/FFF2BFunction",
            "method": "getReturnType",
            "desc": "()Lkroppeb/stareval/function/Type;",
            "value": "obj#5"
          },
          {
            "class": "kroppeb/stareval/function/FFF2BFunction",
            "method": "getParameters",
            "desc": "()[Lkroppeb/stareval/function/TypedFunction$Parameter;",
            "value": "obj#13"
          },
          {
            "class": "de/odysseus/ithaka/digraph/DoubledDigraphAdapter$2",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#26"
          },
          {
            "class": "kroppeb/stareval/function/III2IFunction",
            "method": "getReturnType",
            "desc": "()Lkroppeb/stareval/function/Type;",
            "value": "obj#6"
          },
          {
            "class": "kroppeb/stareval/function/III2IFunction",
            "method": "getParameters",
            "desc": "()[Lkroppeb/stareval/function/TypedFunction$Parameter;",
            "value": "obj#33"
          },
          {
            "class": "net/irisshaders/iris/pipeline/transform/ShaderPrinter$ProgramPrintBuilder",
            "method": "setName",
            "desc": "(Ljava/lang/String;)Lnet/irisshaders/iris/pipeline/transform/ShaderPrinter$ProgramPrintBuilder;",
            "value": "obj#34"
          },
          {
            "class": "net/irisshaders/iris/pipeline/transform/ShaderPrinter$ProgramPrintBuilder",
            "method": "addSource",
            "desc": "(Lnet/irisshaders/iris/pipeline/transform/PatchShaderType;Ljava/lang/String;)Lnet/irisshaders/iris/pipeline/transform/ShaderPrinter$ProgramPrintBuilder;",
            "value": "obj#36"
          },
          {
            "class": "net/irisshaders/iris/pipeline/transform/ShaderPrinter$ProgramPrintBuilder",
            "method": "addSources",
            "desc": "(Ljava/util/Map;)Lnet/irisshaders/iris/pipeline/transform/ShaderPrinter$ProgramPrintBuilder;",
            "value": "obj#37"
          },
          {
            "class": "net/irisshaders/iris/shadows/ShadowRenderer$MipmapPass",
            "method": "texture",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shadows/ShadowRenderer$MipmapPass",
            "method": "targetFilteringMode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/uniforms/SystemTimeUniforms$Timer",
            "method": "getFrameTimeCounter",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/uniforms/SystemTimeUniforms$Timer",
            "method": "getLastFrameTime",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getFogDensity",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getTickDelta",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getRealTickDelta",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getCurrentRenderedBlockEntity",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getCurrentRenderedEntity",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getCurrentRenderedItem",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getCurrentAlphaTest",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getDarknessLightFactor",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getCloudTime",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/uniforms/CapturedRenderingState",
            "method": "getTextureReloadCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "kroppeb/stareval/function/I2IFunction",
            "method": "getReturnType",
            "desc": "()Lkroppeb/stareval/function/Type;",
            "value": "obj#6"
          },
          {
            "class": "kroppeb/stareval/function/I2IFunction",
            "method": "getParameters",
            "desc": "()[Lkroppeb/stareval/function/TypedFunction$Parameter;",
            "value": "obj#88"
          },
          {
            "class": "kroppeb/stareval/function/Type$ObjectType",
            "method": "createArray",
            "desc": "(I)Ljava/lang/Object;",
            "value": "obj#91"
          },
          {
            "class": "net/irisshaders/iris/compat/dh/DHCompatInternal",
            "method": "incompatiblePack",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/compat/dh/DHCompatInternal",
            "method": "getStoredDepthTex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/compat/dh/DHCompatInternal",
            "method": "getDepthTexNoTranslucent",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/compat/dh/DHCompatInternal",
            "method": "avoidRenderingClouds",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pbr/util/ImageManipulationUtil",
            "method": "blendChannel",
            "desc": "(IIFF)I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gl/image/GlImage",
            "method": "shouldClear",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "kroppeb/stareval/function/BB2BFunction",
            "method": "getReturnType",
            "desc": "()Lkroppeb/stareval/function/Type;",
            "value": "obj#5"
          },
          {
            "class": "kroppeb/stareval/function/BB2BFunction",
            "method": "getParameters",
            "desc": "()[Lkroppeb/stareval/function/TypedFunction$Parameter;",
            "value": "obj#205"
          },
          {
            "class": "kroppeb/stareval/function/Type$Float",
            "method": "createArray",
            "desc": "(I)Ljava/lang/Object;",
            "value": "obj#208"
          },
          {
            "class": "net/irisshaders/iris/gui/element/widget/AbstractElementWidget",
            "method": "mouseClicked",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gui/element/widget/AbstractElementWidget",
            "method": "mouseReleased",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;)Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gui/element/widget/AbstractElementWidget",
            "method": "keyPressed",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gui/element/widget/AbstractElementWidget",
            "method": "isFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pbr/format/LabPBRTextureFormat",
            "method": "canInterpolateValues",
            "desc": "(Lnet/irisshaders/iris/pbr/texture/PBRType;)Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pbr/format/LabPBRTextureFormat",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gl/texture/DepthCopyStrategy$Gl30BlitFbCombinedDepthStencil",
            "method": "needsDestFramebuffer",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "kroppeb/stareval/function/FFF2FFunction",
            "method": "getReturnType",
            "desc": "()Lkroppeb/stareval/function/Type;",
            "value": "obj#7"
          },
          {
            "class": "kroppeb/stareval/function/FFF2FFunction",
            "method": "getParameters",
            "desc": "()[Lkroppeb/stareval/function/TypedFunction$Parameter;",
            "value": "obj#242"
          },
          {
            "class": "net/irisshaders/iris/vertices/NormI8",
            "method": "pack",
            "desc": "(FFFF)I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/vertices/NormI8",
            "method": "toByte",
            "desc": "(F)B",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/vertices/NormI8",
            "method": "packColor",
            "desc": "(FFFF)I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/vertices/NormI8",
            "method": "unpackX",
            "desc": "(I)F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/vertices/NormI8",
            "method": "unpackY",
            "desc": "(I)F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/vertices/NormI8",
            "method": "unpackZ",
            "desc": "(I)F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/vertices/NormI8",
            "method": "unpackW",
            "desc": "(I)F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/gui/screen/ShaderPackScreen",
            "method": "isDisplayingComment",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/programs/ComputeSource",
            "method": "getSource",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#258"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/programs/ComputeSource",
            "method": "isValid",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/programs/ComputeSource",
            "method": "requireValid",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#267"
          },
          {
            "class": "net/irisshaders/iris/gl/texture/PixelFormat",
            "method": "getComponentCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gl/texture/PixelFormat",
            "method": "getGlFormat",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gl/texture/PixelFormat",
            "method": "isInteger",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gui/element/widget/LinkElementWidget",
            "method": "getCommentTitle",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#304"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/texture/CustomTextureData$RawData2D",
            "method": "getSizeX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/texture/CustomTextureData$RawData2D",
            "method": "getSizeY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/uniforms/custom/cached/IntCachedUniform",
            "method": "getType",
            "desc": "()Lkroppeb/stareval/function/Type;",
            "value": "obj#6"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "getCurrentNormalTexture",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "getCurrentSpecularTexture",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldDisableVanillaEntityShadows",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldRenderUnderwaterOverlay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldRenderVignette",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldRenderSun",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldRenderWeather",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldRenderWeatherParticles",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldRenderMoon",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldRenderStars",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldRenderSkyDisc",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldWriteRainAndSnowToDepthBuffer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "allowConcurrentCompute",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldDisableDirectionalShading",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldDisableFrustumCulling",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldDisableOcclusionCulling",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "shouldOverrideShaders",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "getSunPathRotation",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "supportsEndFlash",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "getAlbedoTex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "hasShadowRenderTargets",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/IrisRenderingPipeline",
            "method": "skipAllRendering",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shadows/frustum/advanced/NeighboringPlaneSet",
            "method": "forPlane",
            "desc": "(I)Lnet/irisshaders/iris/shadows/frustum/advanced/NeighboringPlaneSet;",
            "value": "obj#423"
          },
          {
            "class": "net/irisshaders/iris/shadows/frustum/advanced/NeighboringPlaneSet",
            "method": "plane0",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shadows/frustum/advanced/NeighboringPlaneSet",
            "method": "plane1",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shadows/frustum/advanced/NeighboringPlaneSet",
            "method": "plane2",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shadows/frustum/advanced/NeighboringPlaneSet",
            "method": "plane3",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gl/buffer/BuiltShaderStorageInfo",
            "method": "size",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gl/buffer/BuiltShaderStorageInfo",
            "method": "relative",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gl/buffer/BuiltShaderStorageInfo",
            "method": "scaleX",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/gl/buffer/BuiltShaderStorageInfo",
            "method": "scaleY",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/irisshaders/iris/gl/blending/BlendModeFunction",
            "method": "getGlId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "kroppeb/stareval/element/tree/partial/PartialBinaryExpression",
            "method": "resolveWith",
            "desc": "(Lkroppeb/stareval/element/ExpressionElement;)Lkroppeb/stareval/element/tree/BinaryExpressionElement;",
            "value": "obj#511"
          },
          {
            "class": "kroppeb/stareval/element/tree/partial/PartialBinaryExpression",
            "method": "resolveWith",
            "desc": "(Lkroppeb/stareval/element/ExpressionElement;)Lkroppeb/stareval/element/ExpressionElement;",
            "value": "obj#513"
          },
          {
            "class": "net/irisshaders/iris/pipeline/transform/parameter/TextureStageParameters",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "kroppeb/stareval/function/TypedFunction$Parameter",
            "method": "constant",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "kroppeb/stareval/function/TypedFunction$Parameter",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/vertices/ExtendedDataHelper",
            "method": "packMidBlock",
            "desc": "(FFF)I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gui/element/IrisElementRow$Element",
            "method": "isHovered",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gui/element/IrisElementRow$Element",
            "method": "isFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gl/blending/AlphaTestFunction",
            "method": "fromGlId",
            "desc": "(I)Ljava/util/Optional;",
            "value": "obj#544"
          },
          {
            "class": "net/irisshaders/iris/gl/blending/AlphaTestFunction",
            "method": "getGlId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/option/values/MutableOptionValues",
            "method": "getBooleanValue",
            "desc": "(Ljava/lang/String;)Lnet/irisshaders/iris/helpers/OptionalBoolean;",
            "value": "obj#568"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/option/values/MutableOptionValues",
            "method": "getStringValue",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#573"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/option/values/MutableOptionValues",
            "method": "getOptionsChanged",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/programs/ExtendedShader",
            "method": "isIntensitySwizzle",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/programs/ExtendedShader",
            "method": "usesTessellation",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/gl/texture/DepthCopyStrategy$Gl20CopyTexture",
            "method": "needsDestFramebuffer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/pipeline/PipelineManager",
            "method": "getPipeline",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#600"
          },
          {
            "class": "net/irisshaders/iris/pipeline/PipelineManager",
            "method": "getVersionCounterForSodiumShaderReload",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/texture/CustomTextureData$LightmapMarker",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/texture/CustomTextureData$LightmapMarker",
            "method": "hashCode",
            "desc": "()I",
            "value": "33"
          },
          {
            "class": "kroppeb/stareval/function/III2BFunction",
            "method": "getReturnType",
            "desc": "()Lkroppeb/stareval/function/Type;",
            "value": "obj#5"
          },
          {
            "class": "kroppeb/stareval/function/III2BFunction",
            "method": "getParameters",
            "desc": "()[Lkroppeb/stareval/function/TypedFunction$Parameter;",
            "value": "obj#655"
          },
          {
            "class": "net/irisshaders/iris/shaderpack/parsing/BooleanParser$Operation",
            "method": "compute",
            "desc": "(ZLjava/util/Stack;)Z",
            "value": "0"
          }
        ],
        "insns": 5847
      },
      "verdict": "no",
      "summary": "only 11 of 144 listening patch sites have a hook (7%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "highlighter",
      "name": "Highlighter",
      "version": "1.2.3",
      "license": "CC BY-NC-ND 4.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "main",
          "value": "com/anthonyhilyard/highlighter/fabric/HighlighterFabric"
        }
      ],
      "mixin_configs": [
        "highlighter.mixins.json",
        "highlighter.fabric.mixins.json"
      ],
      "depends": [
        "iceberg"
      ],
      "classes": 10,
      "methods": 34,
      "sites": [
        {
          "mixin": "com/anthonyhilyard/highlighter/fabric/mixin/AbstractContainerScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "renderSlot",
          "kind": "inject",
          "method": "extractSlot",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;itemDecorations(Lnet/minecraft/client/gui/Font;Lnet/minecraft/world/item/ItemStack;IILjava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractSlot INVOKE"
        },
        {
          "mixin": "com/anthonyhilyard/highlighter/mixin/AbstractContainerMenuMixin",
          "targets": [
            "net/minecraft/world/inventory/AbstractContainerMenu"
          ],
          "handler": "doClick",
          "kind": "inject",
          "method": "doClick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/AbstractContainerMenu#doClick HEAD"
        },
        {
          "mixin": "com/anthonyhilyard/highlighter/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "renderSlot",
          "kind": "inject",
          "method": "extractSlot",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;itemDecorations(Lnet/minecraft/client/gui/Font;Lnet/minecraft/world/item/ItemStack;II)V",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        }
      ],
      "listening": 1,
      "accessors": 0,
      "hooks": {
        "hud": 1
      },
      "wanted": {
        "net/minecraft/world/inventory/AbstractContainerMenu#doClick @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractSlot @INVOKE": 1
      },
      "api": [
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 10,
        "features": {
          "mixin": 4
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 10,
        "methods": 15,
        "tried": 15,
        "completed": 2,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/anthonyhilyard/highlighter/config/HighlighterConfig$IconPosition;#clone()Ljava/lang/Object;": 1,
          "com/anthonyhilyard/highlighter/config/HighlighterConfig#configInstances": 3,
          "java/util/Set#remove(Ljava/lang/Object;)Z": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#onClose()V": 1,
          "net/minecraft/world/entity/player/Player#getInventory()Lnet/minecraft/world/entity/player/Inventory;": 2,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 1,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 1
        },
        "runs": [
          {
            "class": "architectury_inject_Highlighter_common_d98c9712f2be4b4ea6762ab766bf6b30_2ae5eac3bc17de60f16ceae2645317531fda0f23915dd55875fcaad491a6cb12Highlighter263common123jar/PlatformMethods",
            "method": "getCurrentTarget",
            "desc": "()Ljava/lang/String;",
            "value": "\"fabric\""
          }
        ],
        "insns": 110
      },
      "verdict": "partly",
      "summary": "1 of 1 listening patch sites land on a Horizon hook (100%); of 3 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "ixeris",
      "name": "Ixeris",
      "version": "4.6.11+26.3-fabric",
      "license": "LGPL-3.0-only",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/decce/ixeris/fabric/IxerisModFabric"
        }
      ],
      "mixin_configs": [
        "ixeris.mixins.json",
        "ixeris.core.mixins.json"
      ],
      "depends": [],
      "classes": 442,
      "methods": 3625,
      "sites": [
        {
          "mixin": "me/decce/ixeris/mixins/MainMixin",
          "targets": [
            "net/minecraft/client/main/Main"
          ],
          "handler": "ixeris$main",
          "kind": "inject",
          "method": "main",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Thread;setName(Ljava/lang/String;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/main/Main#main INVOKE"
        },
        {
          "mixin": "me/decce/ixeris/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "ixeris$pollEvents",
          "kind": "inject",
          "method": "runTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "frame",
          "why": "RenderFrameEvent.Pre: once a frame, before it draws"
        },
        {
          "mixin": "me/decce/ixeris/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "ixeris$updateTextInputArea",
          "kind": "inject",
          "method": "renderFrame",
          "at": "CONSTANT",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#renderFrame CONSTANT"
        },
        {
          "mixin": "me/decce/ixeris/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "ixeris$replayQueue",
          "kind": "inject",
          "method": "run",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/systems/RenderSystem;pollEvents(Lcom/mojang/blaze3d/platform/SDLEventHandler;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#run INVOKE"
        },
        {
          "mixin": "me/decce/ixeris/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "ixeris$postSurfaceConfiguration",
          "kind": "inject",
          "method": "renderFrame",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/api/device/GpuSurface;configure(Lcom/mojang/renderpearl/api/device/GpuSurface$Configuration;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#renderFrame INVOKE"
        },
        {
          "mixin": "me/decce/ixeris/mixins/TitleScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "ixeris$init",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/TitleScreen#init HEAD"
        },
        {
          "mixin": "me/decce/ixeris/mixins/macos/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "ixeris$beforeRender",
          "kind": "inject",
          "method": "runTick",
          "at": "CONSTANT",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#runTick CONSTANT"
        },
        {
          "mixin": "me/decce/ixeris/mixins/macos/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "ixeris$afterRender",
          "kind": "inject",
          "method": "renderFrame",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;updateDisplay(Lcom/mojang/blaze3d/TracyFrameCapture;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#renderFrame INVOKE"
        }
      ],
      "listening": 2,
      "accessors": 2,
      "hooks": {
        "frame": 1
      },
      "wanted": {
        "net/minecraft/client/gui/screens/TitleScreen#init @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Minecraft#renderFrame @CONSTANT": 1,
        "net/minecraft/client/Minecraft#renderFrame @INVOKE": 2,
        "net/minecraft/client/Minecraft#run @INVOKE": 1,
        "net/minecraft/client/Minecraft#runTick @CONSTANT": 1,
        "net/minecraft/client/main/Main#main @INVOKE": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 440,
        "features": {
          "mixin": 28
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 440,
        "methods": 2429,
        "tried": 600,
        "completed": 110,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lme/decce/ixeris/core/shadow/nightconfig/core/EnumGetMethod;#clone()Ljava/lang/Object;": 1,
          "[Lme/decce/ixeris/core/shadow/nightconfig/core/io/WritingMode;#clone()Ljava/lang/Object;": 1,
          "[Lme/decce/ixeris/core/shadow/nightconfig/core/serde/annotations/SerdeSkipSerializingIf$SkipSerIf;#clone()Ljava/lang/Object;": 1,
          "cpw/mods/modlauncher/Launcher#INSTANCE": 3,
          "it/unimi/dsi/fastutil/longs/Long2ObjectArrayMap#remove(J)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceMap#containsKey(J)Z": 5,
          "it/unimi/dsi/fastutil/longs/LongList#isEmpty()Z": 1,
          "it/unimi/dsi/fastutil/objects/ReferenceArrayList#add(Ljava/lang/Object;)Z": 5,
          "it/unimi/dsi/fastutil/objects/ReferenceArrayList#isEmpty()Z": 5,
          "java/io/File#toPath()Ljava/nio/file/Path;": 1,
          "java/io/Reader#read()I": 2,
          "java/lang/ClassLoader#getName()Ljava/lang/String;": 1,
          "java/lang/ClassLoader#getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;": 1,
          "java/lang/Module#toString()Ljava/lang/String;": 1,
          "java/lang/Object#notify()V": 1,
          "java/lang/System#getProperty(Ljava/lang/String;)Ljava/lang/String;": 8,
          "java/lang/System#setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/net/URL#openConnection()Ljava/net/URLConnection;": 2,
          "java/nio/charset/Charset#newDecoder()Ljava/nio/charset/CharsetDecoder;": 2,
          "java/nio/charset/StandardCharsets#UTF_8": 6,
          "java/nio/file/Files#notExists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/nio/file/Path#of(Ljava/net/URI;)Ljava/nio/file/Path;": 1,
          "java/nio/file/Path#toString()Ljava/lang/String;": 1,
          "java/util/Collection#add(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#addAll(Ljava/util/Collection;)Z": 2,
          "java/util/Collection#clear()V": 2,
          "java/util/Collection#contains(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#containsAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#equals(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#forEach(Ljava/util/function/Consumer;)V": 1,
          "java/util/Collection#hashCode()I": 1,
          "java/util/Collection#parallelStream()Ljava/util/stream/Stream;": 1,
          "java/util/Collection#remove(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#removeAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#removeIf(Ljava/util/function/Predicate;)Z": 1,
          "java/util/Collection#retainAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#spliterator()Ljava/util/Spliterator;": 1,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collection#toArray()[Ljava/lang/Object;": 2,
          "java/util/Collection#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 2,
          "java/util/Iterator#forEachRemaining(Ljava/util/function/Consumer;)V": 1,
          "java/util/Iterator#remove()V": 2,
          "java/util/List#of(Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/Map#compute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;": 1,
          "java/util/Map#computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;": 1,
          "java/util/Map#computeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;": 1,
          "java/util/Map#containsValue(Ljava/lang/Object;)Z": 2,
          "java/util/Map#equals(Ljava/lang/Object;)Z": 2,
          "java/util/Map#hashCode()I": 2,
          "java/util/Map#merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;": 1,
          "java/util/Map#putAll(Ljava/util/Map;)V": 2,
          "java/util/Map#putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Map#replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Map#replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z": 1,
          "java/util/Map#replaceAll(Ljava/util/function/BiFunction;)V": 1,
          "java/util/Map$Entry#setValue(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Objects#hashCode(Ljava/lang/Object;)I": 1,
          "java/util/UUID#toString()Ljava/lang/String;": 2,
          "java/util/concurrent/ConcurrentLinkedQueue#add(Ljava/lang/Object;)Z": 2,
          "java/util/concurrent/ConcurrentLinkedQueue#poll()Ljava/lang/Object;": 2,
          "java/util/concurrent/atomic/AtomicInteger#get()I": 5,
          "java/util/concurrent/atomic/AtomicInteger#getAndDecrement()I": 9,
          "java/util/concurrent/atomic/AtomicInteger#getAndIncrement()I": 8,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 14,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 3,
          "me/decce/ixeris/core/natives/win32/RAWHID#__checkMalloc(II)J": 1,
          "me/decce/ixeris/core/natives/win32/RAWHID#__create(II)Ljava/nio/ByteBuffer;": 1,
          "me/decce/ixeris/core/natives/win32/RAWHID#address()J": 10,
          "me/decce/ixeris/core/natives/win32/RAWINPUTDEVICE#address()J": 2,
          "me/decce/ixeris/core/natives/win32/RAWINPUTHEADER#__checkMalloc(II)J": 1,
          "me/decce/ixeris/core/natives/win32/RAWINPUTHEADER#__create(II)Ljava/nio/ByteBuffer;": 1,
          "me/decce/ixeris/core/natives/win32/RAWINPUTHEADER#address()J": 10,
          "me/decce/ixeris/core/shadow/nightconfig/core/CommentedConfig#isEmpty()Z": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/CommentedConfig$Entry#getComment()Ljava/lang/String;": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/CommentedConfig$Entry#getKey()Ljava/lang/String;": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/Config#configFormat()Lme/decce/ixeris/core/shadow/nightconfig/core/ConfigFormat;": 3,
          "me/decce/ixeris/core/shadow/nightconfig/core/Config#contains(Ljava/util/List;)Z": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/Config#getRaw(Ljava/util/List;)Ljava/lang/Object;": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/Config#size()I": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/InMemoryFormat#createConcurrentConfig()Lme/decce/ixeris/core/shadow/nightconfig/core/Config;": 2,
          "me/decce/ixeris/core/shadow/nightconfig/core/InMemoryFormat#createConfig()Lme/decce/ixeris/core/shadow/nightconfig/core/Config;": 2,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/StampedConfig#isEmpty()Z": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#add(Ljava/lang/String;Ljava/lang/Object;)Z": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#addAll(Lme/decce/ixeris/core/shadow/nightconfig/core/UnmodifiableConfig;)V": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#apply(Ljava/util/List;)Ljava/lang/Object;": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#get(Ljava/util/List;)Ljava/lang/Object;": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#getComments()Ljava/util/Map;": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#getComments(Ljava/util/Map;)V": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#isEmpty()Z": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#putAll(Lme/decce/ixeris/core/shadow/nightconfig/core/UnmodifiableConfig;)V": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#putAllComments(Ljava/util/Map;)V": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#putAllComments(Lme/decce/ixeris/core/shadow/nightconfig/core/UnmodifiableCommentedConfig;)V": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#remove(Ljava/lang/String;)Ljava/lang/Object;": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#removeAll(Lme/decce/ixeris/core/shadow/nightconfig/core/UnmodifiableConfig;)V": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#set(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#unmodifiable()Lme/decce/ixeris/core/shadow/nightconfig/core/UnmodifiableCommentedConfig;": 2,
          "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$DataHolder#update(Ljava/util/List;Ljava/lang/Object;)V": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/utils/ConcurrentCommentedConfigWrapper#putAll(Lme/decce/ixeris/core/shadow/nightconfig/core/UnmodifiableConfig;)V": 1,
          "me/decce/ixeris/core/shadow/nightconfig/core/utils/ConcurrentCommentedConfigWrapper#removeAll(Lme/decce/ixeris/core/shadow/nightconfig/core/UnmodifiableConfig;)V": 1,
          "new me/decce/ixeris/core/shadow/lenni0451/classtransform/utils/tree/BasicClassProvider": 1,
          "org/apache/logging/log4j/Logger#debug(Ljava/lang/String;)V": 1,
          "org/lwjgl/BufferUtils#createByteBuffer(I)Ljava/nio/ByteBuffer;": 2,
          "org/lwjgl/glfw/GLFWCursorEnterCallback#address()J": 1,
          "org/lwjgl/glfw/GLFWIMEStatusCallback#address()J": 1,
          "org/lwjgl/glfw/GLFWKeyCallback#address()J": 1,
          "org/lwjgl/glfw/GLFWWindowMaximizeCallback#address()J": 1,
          "org/lwjgl/glfw/GLFWWindowSizeCallback#address()J": 1,
          "org/lwjgl/system/Checks#CHECKS": 1,
          "org/lwjgl/system/Checks#check(II)J": 2,
          "org/lwjgl/system/Checks#check(J)J": 1,
          "org/lwjgl/system/MemoryStack#ncalloc(III)J": 4,
          "org/lwjgl/system/MemoryStack#nmalloc(II)J": 4,
          "org/lwjgl/system/MemoryUtil#memByteBuffer(JI)Ljava/nio/ByteBuffer;": 1,
          "org/lwjgl/system/MemoryUtil#memGetAddress(J)J": 3,
          "org/lwjgl/system/MemoryUtil#memGetInt(J)I": 4,
          "org/lwjgl/system/MemoryUtil#memPutAddress(JJ)V": 1,
          "org/lwjgl/system/MemoryUtil#memPutInt(JI)V": 4,
          "org/lwjgl/system/MemoryUtil#nmemAllocChecked(J)J": 2,
          "org/lwjgl/system/MemoryUtil#nmemCallocChecked(JJ)J": 4,
          "org/lwjgl/system/Platform#LINUX": 1,
          "org/lwjgl/system/Platform#MACOSX": 1,
          "org/lwjgl/system/Platform#WINDOWS": 2,
          "org/lwjgl/system/Struct#<init>(JLjava/nio/ByteBuffer;)V": 6,
          "org/lwjgl/system/StructBuffer#<init>(JLjava/nio/ByteBuffer;IIII)V": 2
        },
        "runs": [
          {
            "class": "me/decce/ixeris/core/glfw/GlfwEventHandler",
            "method": "canPollEvents",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/sdl/SdlMemoryHelper",
            "method": "copySDL_Rect",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/StampedConfig$EntrySet",
            "method": "contains",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingCollection",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingCollection",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingCollection",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "me/decce/ixeris/core/sdl/state_caching/SdlStateCache",
            "method": "isSameOrDescendant",
            "desc": "(JJ)Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/file/FileWatcher$ControlMessage",
            "method": "remove",
            "desc": "(Lme/decce/ixeris/core/shadow/nightconfig/core/file/FileWatcher$CanonicalPath;Ljava/util/concurrent/CompletableFuture;)Lme/decce/ixeris/core/shadow/nightconfig/core/file/FileWatcher$ControlMessage;",
            "value": "obj#82"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/file/FileWatcher$ControlMessage",
            "method": "poison",
            "desc": "(Ljava/util/concurrent/CompletableFuture;)Lme/decce/ixeris/core/shadow/nightconfig/core/file/FileWatcher$ControlMessage;",
            "value": "obj#83"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/file/FileWatcher$ControlMessage",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"ControlMessage[kind=null, path=null, handler=null, future=null]\""
          },
          {
            "class": "me/decce/ixeris/core/util/VolatileObjectHolder",
            "method": "of",
            "desc": "(Ljava/lang/Object;)Lme/decce/ixeris/core/util/VolatileObjectHolder;",
            "value": "obj#89"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/AbstractConfig$EntryWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/toml/TableWriter$OrganizedTable",
            "method": "canBeSkipped",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/toml/TableWriter$OrganizedTable",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"OrganizedTable [simples=null, subTables=null, arraysOfTables=null, comment=null, canBeSkipped()=0]\""
          },
          {
            "class": "me/decce/ixeris/core/util/UpcallExceptionHelper",
            "method": "isSupported",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingIterator",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingIterator",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingIterator",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$SynchronizedIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/ObservedMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/ObservedMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/ObservedMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/Config",
            "method": "unmodifiable",
            "desc": "()Lme/decce/ixeris/core/shadow/nightconfig/core/UnmodifiableConfig;",
            "value": "obj#381"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$SynchronizedCollection",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$SynchronizedCollection",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/io/ArrayInput",
            "method": "directRead",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/EnumGetMethod",
            "method": "isCaseSensitive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/EnumGetMethod",
            "method": "isOrdinalOk",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/utils/TransformingMap",
            "method": "values",
            "desc": "()Ljava/util/Collection;",
            "value": "obj#500"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$SynchronizedMap",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$SynchronizedMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$SynchronizedMap",
            "method": "entrySet",
            "desc": "()Ljava/util/Set;",
            "value": "obj#527"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$SynchronizedMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig$SynchronizedMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/conversion/ObjectBinder$BoundConfig",
            "method": "createSubConfig",
            "desc": "()Lme/decce/ixeris/core/shadow/nightconfig/core/Config;",
            "value": "obj#547"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/conversion/ObjectBinder$BoundConfig",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/conversion/ObjectBinder$BoundConfig",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"BoundConfig{object=null, dataMap=null}\""
          },
          {
            "class": "me/decce/ixeris/core/Ixeris",
            "method": "isInitialized",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/Ixeris",
            "method": "isOnMainThread",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/decce/ixeris/core/DummyEventHandler",
            "method": "canPollEvents",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/decce/ixeris/core/shadow/nightconfig/core/concurrent/SynchronizedConfig",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          }
        ],
        "insns": 5680
      },
      "verdict": "partly",
      "summary": "1 of 2 listening patch sites land on a Horizon hook (50%); of 8 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "journeymap",
      "name": "Journeymap",
      "version": "26.3-6.0.10",
      "license": "All Rights Reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "journeymap/client/JourneymapClientFabric"
        },
        {
          "kind": "journeymap",
          "value": "journeymap/api/plugins/DebugVerificationPlugin"
        },
        {
          "kind": "journeymap",
          "value": "journeymap/api/plugins/OverlayLifecycleProfilingPlugin"
        },
        {
          "kind": "journeymap_server",
          "value": "journeymap/api/plugins/LoadedChunkOverlayPlugin"
        },
        {
          "kind": "main",
          "value": "journeymap/common/JourneymapFabric"
        },
        {
          "kind": "modmenu",
          "value": "journeymap/common/config/JourneyMapModMenuImpl"
        }
      ],
      "mixin_configs": [
        "journeymap.mixins.json",
        "journeymap.fabric.mixins.json"
      ],
      "depends": [
        "commonnetworking"
      ],
      "classes": 961,
      "methods": 8697,
      "sites": [
        {
          "mixin": "journeymap/common/mixin/client/ChunkMapMixin",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "updateChunkTracking",
          "kind": "inject",
          "method": "updateChunkTracking",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap#updateChunkTracking HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/client/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "replaceWithPacketData",
          "kind": "inject",
          "method": "replaceWithPacketData",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData TAIL"
        },
        {
          "mixin": "journeymap/common/mixin/client/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "jm$onChunkDrop",
          "kind": "inject",
          "method": "drop",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#drop HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/client/ClientCommonPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl"
          ],
          "handler": "journeymap_handleTransfer",
          "kind": "inject",
          "method": "handleTransfer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl#handleTransfer HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/client/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "setKnownState",
          "kind": "inject",
          "method": "setServerVerifiedBlockState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#setServerVerifiedBlockState TAIL"
        },
        {
          "mixin": "journeymap/common/mixin/client/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "journeymap_handleLogin",
          "kind": "inject",
          "method": "handleLogin",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/LocalPlayer;resetPos()V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "journeymap/common/mixin/client/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "journeymap_handleRespawn",
          "kind": "inject",
          "method": "handleRespawn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/LocalPlayer;resetPos()V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "journeymap/common/mixin/client/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "journeymap_handleDisguisedChat_onClientChatEventReceived",
          "kind": "inject",
          "method": "handleDisguisedChat",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/chat/ChatListener;handleDisguisedChatMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/ChatType$Bound;)V",
          "cancellable": true,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "journeymap/common/mixin/client/ClientWaypointManagerMixin",
          "targets": [
            "net/minecraft/client/waypoints/ClientWaypointManager"
          ],
          "handler": "hasWaypointsMixin",
          "kind": "inject",
          "method": "hasWaypoints",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/waypoints/ClientWaypointManager#hasWaypoints HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/client/DebugScreenEntriesMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntries"
          ],
          "handler": "debugMixin",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> RETURN"
        },
        {
          "mixin": "journeymap/common/mixin/client/DebugScreenOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "debugOverlayRendererMixin",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/client/DynamicTextureMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/DynamicTexture"
          ],
          "handler": "journeymap$onClose",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/DynamicTexture#close HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/client/FabricHudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "renderEffectPre",
          "kind": "inject",
          "method": "extractEffects",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "journeymap/common/mixin/client/FabricHudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "renderEffectPost",
          "kind": "inject",
          "method": "extractEffects",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "journeymap/common/mixin/client/FabricMinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "clearLevel",
          "kind": "inject",
          "method": "Lnet/minecraft/client/Minecraft;disconnect",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;setScreenAndShow(Lnet/minecraft/client/gui/screens/Screen;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#Lnet/minecraft/client/Minecraft;disconnect INVOKE"
        },
        {
          "mixin": "journeymap/common/mixin/client/FabricMinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "setLevel",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_level_load",
          "why": "LevelEvent.Load: a level is set on the client"
        },
        {
          "mixin": "journeymap/common/mixin/client/FabricMinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "disconnect",
          "kind": "inject",
          "method": "disconnect",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;onDisconnected()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#disconnect INVOKE"
        },
        {
          "mixin": "journeymap/common/mixin/client/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "getI",
          "kind": "modify-variable",
          "method": "extractEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/effect/MobEffectInstance;isAmbient()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "journeymap/common/mixin/client/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "getJ",
          "kind": "modify-variable",
          "method": "extractEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/effect/MobEffectInstance;isAmbient()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "journeymap/common/mixin/client/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "getK",
          "kind": "modify-variable",
          "method": "extractEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/effect/MobEffectInstance;isAmbient()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "journeymap/common/mixin/client/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "getL",
          "kind": "modify-variable",
          "method": "extractEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/effect/MobEffectInstance;isAmbient()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "journeymap/common/mixin/client/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "getMobEffect",
          "kind": "modify-variable",
          "method": "extractEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/effect/MobEffectInstance;isAmbient()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "journeymap/common/mixin/client/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "replaceK",
          "kind": "modify-variable",
          "method": "extractEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/effect/MobEffectInstance;isAmbient()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "journeymap/common/mixin/client/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "replaceL",
          "kind": "modify-variable",
          "method": "extractEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/effect/MobEffectInstance;isAmbient()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "journeymap/common/mixin/client/LevelRendererFabricMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "jm_submitWaypointBeams",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;submitFeatures(Lnet/minecraft/client/renderer/state/level/LevelRenderState;Lnet/minecraft/client/renderer/SubmitNodeCollector;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#render INVOKE"
        },
        {
          "mixin": "journeymap/common/mixin/client/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "journeymap_handleEntityEvent",
          "kind": "inject",
          "method": "handleEntityEvent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/LocalPlayer#handleEntityEvent HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/client/LocatorBarRendererMixin",
          "targets": [
            "net/minecraft/client/gui/contextualbar/LocatorBar"
          ],
          "handler": "renderWaypointMixin",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/contextualbar/LocatorBar#extractRenderState RETURN"
        },
        {
          "mixin": "journeymap/common/mixin/client/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "journeymap_onGameLoadFinishedMixin",
          "kind": "inject",
          "method": "onGameLoadFinished",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#onGameLoadFinished TAIL"
        },
        {
          "mixin": "journeymap/common/mixin/client/TranslatableContentsMixin",
          "targets": [
            "net/minecraft/network/chat/contents/TranslatableContents"
          ],
          "handler": "journeymap_getArguments",
          "kind": "inject",
          "method": "getArgument",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/chat/contents/TranslatableContents#getArgument HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/client/WorldSelectionListMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry"
          ],
          "handler": "deleteWorld",
          "kind": "inject",
          "method": "deleteWorld",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#deleteWorld HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/server/FabricServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "addPlayer",
          "kind": "inject",
          "method": "addPlayer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#addPlayer HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/server/PersistentEntitySectionManagerMixin",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager"
          ],
          "handler": "addPlayer",
          "kind": "inject",
          "method": "addEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager#addEntity HEAD"
        },
        {
          "mixin": "journeymap/common/mixin/server/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "op",
          "kind": "inject",
          "method": "op",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/players/PlayerList;sendPlayerPermissionLevel(Lnet/minecraft/server/level/ServerPlayer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#op INVOKE"
        },
        {
          "mixin": "journeymap/common/mixin/server/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "deop",
          "kind": "inject",
          "method": "deop",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/players/PlayerList;sendPlayerPermissionLevel(Lnet/minecraft/server/level/ServerPlayer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#deop INVOKE"
        },
        {
          "mixin": "journeymap/common/mixin/server/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "addPlayer",
          "kind": "inject",
          "method": "placeNewPlayer",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "player_logged_in",
          "why": "PlayerEvent.PlayerLoggedInEvent"
        }
      ],
      "listening": 20,
      "accessors": 35,
      "hooks": {
        "client_level_load": 1,
        "hud": 2,
        "net_from_server": 3,
        "player_logged_in": 1
      },
      "wanted": {
        "net/minecraft/client/Minecraft#onGameLoadFinished @TAIL": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @HEAD": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> @RETURN": 1,
        "net/minecraft/client/gui/contextualbar/LocatorBar#extractRenderState @RETURN": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#deleteWorld @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#drop @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @TAIL": 1,
        "net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl#handleTransfer @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#setServerVerifiedBlockState @TAIL": 1,
        "net/minecraft/client/player/LocalPlayer#handleEntityEvent @HEAD": 1,
        "net/minecraft/client/renderer/texture/DynamicTexture#close @HEAD": 1,
        "net/minecraft/client/waypoints/ClientWaypointManager#hasWaypoints @HEAD": 1,
        "net/minecraft/network/chat/contents/TranslatableContents#getArgument @HEAD": 1,
        "net/minecraft/server/level/ChunkMap#updateChunkTracking @HEAD": 1,
        "net/minecraft/server/level/ServerLevel#addPlayer @HEAD": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager#addEntity @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Minecraft#Lnet/minecraft/client/Minecraft;disconnect @INVOKE": 1,
        "net/minecraft/client/Minecraft#disconnect @INVOKE": 1,
        "net/minecraft/client/renderer/LevelRenderer#render @INVOKE": 1,
        "net/minecraft/server/players/PlayerList#deop @INVOKE": 1,
        "net/minecraft/server/players/PlayerList#op @INVOKE": 1,
        "net/minecraft/world/effect/MobEffectInstance#isAmbient @INVOKE (modify-variable)": 7
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "HudElementRegistry",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "VanillaHudElements",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientCommands",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents$ClientStarted",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientReceiveMessageEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientReceiveMessageEvents$AllowChat",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientReceiveMessageEvents$AllowGame",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModOrigin",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$BeforeExtract",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$BeforeInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$Remove",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents$AllowMouseClick",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents$BeforeMouseRelease",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityEvents$Unload",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarted",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopping",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLivingEntityEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLivingEntityEvents$AfterDeath",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerTickEvents",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "ServerTickEvents$StartTick",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 961,
        "features": {
          "screen": 115,
          "renderer": 4,
          "command": 1,
          "network": 27,
          "events": 2,
          "mixin": 46
        },
        "events": [
          "Event",
          "ServerLivingEntityEvents"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 961,
        "methods": 5502,
        "tried": 600,
        "completed": 233,
        "handlers_tried": 7,
        "handlers_completed": 2,
        "missing": {
          "[Ljourneymap/api/common/OverlayMutationResult$Status;#clone()Ljava/lang/Object;": 1,
          "[Ljourneymap/api/server/ServerOverlayAPI;#clone()Ljava/lang/Object;": 1,
          "[Ljourneymap/client/data/SnapshotBlockDataAccessor;#clone()Ljava/lang/Object;": 1,
          "[Ljourneymap/client/data/WorldData$MoonPhase;#clone()Ljava/lang/Object;": 1,
          "[Ljourneymap/client/model/block/BlockFlag;#clone()Ljava/lang/Object;": 1,
          "[Ljourneymap/client/ui/option/SlotMetadata$ValueType;#clone()Ljava/lang/Object;": 1,
          "[Ljourneymap/common/network/packets/WaypointQueryPacket$QueryType;#clone()Ljava/lang/Object;": 1,
          "com/google/common/base/Objects#equal(Ljava/lang/Object;Ljava/lang/Object;)Z": 1,
          "com/google/common/base/Objects#hashCode([Ljava/lang/Object;)I": 1,
          "com/google/common/cache/RemovalNotification#getValue()Ljava/lang/Object;": 1,
          "com/mojang/authlib/GameProfile#id()Ljava/util/UUID;": 1,
          "com/mojang/blaze3d/platform/NativeImage#getWidth()I": 6,
          "com/mojang/blaze3d/vertex/PoseStack#pushPose()V": 1,
          "commonnetwork/api/Network#getNetworkHandler()Lcommonnetwork/api/NetworkHandler;": 1,
          "commonnetwork/networking/data/Side#CLIENT": 3,
          "java/io/File#getAbsolutePath()Ljava/lang/String;": 1,
          "java/io/File#getName()Ljava/lang/String;": 1,
          "java/io/File#isDirectory()Z": 1,
          "java/lang/System#out": 2,
          "java/lang/ref/WeakReference#get()Ljava/lang/Object;": 9,
          "java/net/URI#create(Ljava/lang/String;)Ljava/net/URI;": 2,
          "java/nio/file/Path#toFile()Ljava/io/File;": 2,
          "java/util/Collections#sort(Ljava/util/List;Ljava/util/Comparator;)V": 2,
          "java/util/Collections#unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;": 3,
          "java/util/EnumSet#clone()Ljava/util/EnumSet;": 2,
          "java/util/EnumSet#contains(Ljava/lang/Object;)Z": 1,
          "java/util/LinkedHashMap#keySet()Ljava/util/Set;": 1,
          "java/util/UUID#fromString(Ljava/lang/String;)Ljava/util/UUID;": 1,
          "java/util/concurrent/ArrayBlockingQueue#clear()V": 2,
          "java/util/concurrent/ArrayBlockingQueue#isEmpty()Z": 1,
          "java/util/concurrent/ConcurrentHashMap#isEmpty()Z": 1,
          "java/util/concurrent/ConcurrentHashMap#size()I": 2,
          "java/util/concurrent/ConcurrentHashMap#values()Ljava/util/Collection;": 1,
          "java/util/concurrent/ExecutorService#submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;": 1,
          "java/util/concurrent/atomic/AtomicLong#get()J": 5,
          "java/util/concurrent/atomic/AtomicLong#getAndIncrement()J": 1,
          "java/util/concurrent/atomic/AtomicLong#incrementAndGet()J": 1,
          "java/util/concurrent/atomic/AtomicLong#set(J)V": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 1,
          "java/util/zip/ZipOutputStream#putNextEntry(Ljava/util/zip/ZipEntry;)V": 1,
          "journeymap/api/v2/common/option/KeyedEnum#getKey()Ljava/lang/String;": 2,
          "journeymap/api/v2/common/tuple/Tuple2#b()Ljava/lang/Object;": 1,
          "journeymap/api/v2/server/overlay/OverlayPoints#points()Ljava/util/List;": 1,
          "journeymap/api/v2/server/overlay/ServerPolygon#props()Ljourneymap/api/v2/server/overlay/OverlayShapeProps;": 1,
          "journeymap/client/render/draw/DrawUtil$HAlign#ordinal()I": 1,
          "journeymap/client/ui/component/ScrollListLayoutPane#setX(I)V": 1,
          "journeymap/client/ui/component/ScrollListPane#children()Ljava/util/List;": 1,
          "journeymap/client/ui/component/ScrollListPane#getItemCount()I": 1,
          "journeymap/client/ui/component/buttons/AbstractSliderButton#getX()I": 1,
          "journeymap/client/ui/component/buttons/AbstractSliderButton#mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z": 1,
          "journeymap/client/ui/component/buttons/ThreeLineButton#getX()I": 1,
          "journeymap/client/ui/component/popupscreenbutton/PopupButtonScreen#renderPopupScreen(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 2,
          "journeymap/client/ui/dialog/import_export/ExportPopup#popLayer()V": 1,
          "journeymap/client/ui/option/OptionScreen#resize(II)V": 1,
          "journeymap/client/ui/option/OptionsScrollListPane#mouseScrolled(DDDD)Z": 1,
          "journeymap/client/waypoint/WaypointExporter$Format#ordinal()I": 1,
          "journeymap/common/nbt/GlobalWaypointData#setDirty()V": 2,
          "net/fabricmc/fabric/api/event/lifecycle/v1/ServerTickEvents#START_SERVER_TICK": 1,
          "net/minecraft/ChatFormatting#AQUA": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 24,
          "net/minecraft/client/gui/components/Button#isActive()Z": 3,
          "net/minecraft/client/gui/components/MultiLineEditBox#getValue()Ljava/lang/String;": 1,
          "net/minecraft/client/gui/screens/ChatScreen#charTyped(Lnet/minecraft/client/input/CharacterEvent;)Z": 1,
          "net/minecraft/client/gui/screens/ChatScreen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/ChatScreen#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "net/minecraft/client/gui/screens/ChatScreen#removed()V": 2,
          "net/minecraft/client/gui/screens/ChatScreen#tick()V": 1,
          "net/minecraft/client/input/KeyEvent#key()I": 2,
          "net/minecraft/client/input/MouseButtonEvent#x()D": 3,
          "net/minecraft/client/model/geom/ModelPart#getAllParts()Ljava/util/List;": 1,
          "net/minecraft/core/BlockPos#getX()I": 1,
          "net/minecraft/network/RegistryFriendlyByteBuf#readNbt()Lnet/minecraft/nbt/CompoundTag;": 1,
          "net/minecraft/network/RegistryFriendlyByteBuf#readUtf()Ljava/lang/String;": 3,
          "net/minecraft/network/RegistryFriendlyByteBuf#writeNbt(Lnet/minecraft/nbt/Tag;)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/network/RegistryFriendlyByteBuf#writeUtf(Ljava/lang/String;)Lnet/minecraft/network/FriendlyByteBuf;": 3,
          "net/minecraft/network/protocol/game/ClientboundDisguisedChatPacket#message()Lnet/minecraft/network/chat/Component;": 2,
          "net/minecraft/network/protocol/game/ClientboundLoginPacket#commonPlayerSpawnInfo()Lnet/minecraft/network/protocol/game/CommonPlayerSpawnInfo;": 2,
          "net/minecraft/network/protocol/game/ClientboundRespawnPacket#commonPlayerSpawnInfo()Lnet/minecraft/network/protocol/game/CommonPlayerSpawnInfo;": 2,
          "net/minecraft/server/level/ServerPlayer#level()Lnet/minecraft/server/level/ServerLevel;": 1,
          "net/minecraft/world/entity/Entity#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/level/ChunkPos#hashCode()I": 1,
          "net/minecraft/world/level/ChunkPos#pack()J": 1,
          "net/minecraft/world/level/ChunkPos#pack(Lnet/minecraft/core/BlockPos;)J": 4,
          "net/minecraft/world/level/ChunkPos#x()I": 1,
          "net/minecraft/world/level/ChunkPos#z()I": 1,
          "net/minecraft/world/level/biome/Biome#getSpecialEffects()Lnet/minecraft/world/level/biome/BiomeSpecialEffects;": 1,
          "net/minecraft/world/level/chunk/LevelChunk#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/level/saveddata/SavedData#<init>()V": 1,
          "new com/google/common/util/concurrent/AtomicDouble": 2,
          "new com/mojang/blaze3d/platform/NativeImage": 5,
          "new com/mojang/blaze3d/vertex/PoseStack": 1,
          "new journeymap/api/v2/client/event/RegistryEvent$InfoSlotRegistryEvent": 1,
          "new net/minecraft/core/BlockPos": 4,
          "new net/minecraft/world/level/biome/BiomeSpecialEffects$Builder": 1,
          "new org/joml/Vector3f": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#cancel()V": 1
        },
        "runs": [
          {
            "class": "journeymap/common/util/PlayerRadarManager",
            "method": "getInstance",
            "desc": "()Ljourneymap/common/util/PlayerRadarManager;",
            "value": "obj#4"
          },
          {
            "class": "journeymap/common/util/PlayerRadarManager",
            "method": "getPlayers",
            "desc": "()Ljava/util/Map;",
            "value": "obj#10"
          },
          {
            "class": "journeymap/common/network/packets/crud/WaypointCrudAction$SaveGroup",
            "method": "type",
            "desc": "()Ljourneymap/common/network/packets/crud/WaypointCrudActionType;",
            "value": "obj#31"
          },
          {
            "class": "journeymap/client/model/block/BiomeMD",
            "method": "getGrassColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/block/BiomeMD",
            "method": "getFogColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/block/BiomeMD",
            "method": "getFoliageColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/block/BiomeMD",
            "method": "getWaterColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/block/BiomeMD",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/task/multi/SaveMapTask$Manager",
            "method": "enableTask",
            "desc": "(Lnet/minecraft/client/Minecraft;Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/task/multi/SaveMapTask$Manager",
            "method": "isEnabled",
            "desc": "(Lnet/minecraft/client/Minecraft;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/network/handler/ClientPacketHandler",
            "method": "validOrigin",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/texture/RegionLodGenerator",
            "method": "generate",
            "desc": "(Lcom/mojang/blaze3d/platform/NativeImage;I)[Lcom/mojang/blaze3d/platform/NativeImage;",
            "value": "obj#105"
          },
          {
            "class": "journeymap/client/texture/RegionLodGenerator",
            "method": "alphaBlend",
            "desc": "(IIII)I",
            "value": "0"
          },
          {
            "class": "journeymap/client/texture/RegionLodGenerator",
            "method": "getPow22",
            "desc": "(I)F",
            "value": "0f"
          },
          {
            "class": "journeymap/client/ui/fullscreen/MapChat",
            "method": "isHidden",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/texture/ImageUtil",
            "method": "getAlpha",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "journeymap/client/event/handlers/keymapping/KeyRegistrationWrapper$Builder",
            "method": "withFabricKeyCode",
            "desc": "(I)Ljourneymap/client/event/handlers/keymapping/KeyRegistrationWrapper$Builder;",
            "value": "obj#123"
          },
          {
            "class": "journeymap/client/event/handlers/keymapping/KeyRegistrationWrapper$Builder",
            "method": "withModifier",
            "desc": "(Ljourneymap/client/event/handlers/keymapping/KeyRegistrationWrapper$Modifier;)Ljourneymap/client/event/handlers/keymapping/KeyRegistrationWrapper$Builder;",
            "value": "obj#124"
          },
          {
            "class": "journeymap/client/event/handlers/keymapping/KeyRegistrationWrapper$Builder",
            "method": "withAction",
            "desc": "(Ljava/lang/Runnable;)Ljourneymap/client/event/handlers/keymapping/KeyRegistrationWrapper$Builder;",
            "value": "obj#125"
          },
          {
            "class": "journeymap/client/event/handlers/keymapping/KeyRegistrationWrapper$Builder",
            "method": "register",
            "desc": "()Ljourneymap/client/event/handlers/keymapping/KeyRegistrationWrapper;",
            "value": "obj#140"
          },
          {
            "class": "journeymap/client/texture/SharedOverlayImageManager$SearchResult",
            "method": "revision",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "journeymap/common/config/AdminAccessConfig",
            "method": "getInstance",
            "desc": "()Ljourneymap/common/config/AdminAccessConfig;",
            "value": "obj#160"
          },
          {
            "class": "journeymap/client/task/multi/TaskController",
            "method": "isActive",
            "desc": "()Ljava/lang/Boolean;",
            "value": "0"
          },
          {
            "class": "journeymap/client/waypoint/ExternalWaypointFinder",
            "method": "waypointExist",
            "desc": "(Ljourneymap/api/v2/common/waypoint/Waypoint;)Z",
            "value": "1"
          },
          {
            "class": "journeymap/client/render/GuiRenderToTexture$RenderContext",
            "method": "guiScale",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/render/GuiRenderToTexture$RenderContext",
            "method": "targetWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/render/GuiRenderToTexture$RenderContext",
            "method": "targetHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/common/network/packets/crud/WaypointCrudResult$Failure",
            "method": "kind",
            "desc": "()Ljourneymap/common/network/packets/crud/WaypointCrudResult$Kind;",
            "value": "obj#312"
          },
          {
            "class": "journeymap/common/properties/MultiplayerProperties",
            "method": "save",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "journeymap/client/render/RegionTileShaders$ShaderKeys",
            "method": "index",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/data/SnapshotBlockDataAccessor",
            "method": "resolveTopY",
            "desc": "(IILjourneymap/client/model/map/MapType;)I",
            "value": "0"
          },
          {
            "class": "journeymap/common/nbt/model/ServerWaypointPlayerRecord",
            "method": "hasPendingWaypoints",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/ui/theme/ThemeButton",
            "method": "isStaysOn",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/ui/theme/ThemeButton",
            "method": "getButton",
            "desc": "()Lnet/minecraft/client/gui/components/Button;",
            "value": "obj#383"
          },
          {
            "class": "journeymap/client/log/StatTimer",
            "method": "elapsed",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "journeymap/client/log/StatTimer",
            "method": "hasReachedElapsedLimit",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/log/StatTimer",
            "method": "getElapsedLimitReachedCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/log/StatTimer",
            "method": "getElapsedLimitWarningsRemaining",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/render/draw/MobIconCache",
            "method": "getClosestValidSize",
            "desc": "(III)Ljourneymap/client/render/draw/MobIconCache$SizeInfo;",
            "value": "obj#409"
          },
          {
            "class": "journeymap/common/waypoint/GroupSettings",
            "method": "isLocked",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/waypoint/GroupSettings",
            "method": "getDisplaySettings",
            "desc": "()Ljava/util/Map;",
            "value": "obj#417"
          },
          {
            "class": "journeymap/common/waypoint/GroupSettings",
            "method": "isOverrideIconImage",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/waypoint/GroupSettings",
            "method": "isOverrideIconColor",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/waypoint/GroupSettings",
            "method": "isOverrideBeaconColor",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/waypoint/GroupSettings",
            "method": "isOverrideLabelColor",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/waypoint/GroupSettings",
            "method": "isOverrideSettings",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/block/BlockCoordIntPair",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/block/BlockCoordIntPair",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "journeymap/client/render/map/TileGrid",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/chunk/ChunkMD",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/chunk/ChunkMD",
            "method": "hasRetainedChunk",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/chunk/ChunkMD",
            "method": "fromNbt",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/event/handlers/ResourceReloadHandler",
            "method": "getInstance",
            "desc": "()Ljourneymap/client/event/handlers/ResourceReloadHandler;",
            "value": "obj#540"
          },
          {
            "class": "journeymap/client/model/map/MapState",
            "method": "getLastMapTypeChange",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/map/MapState",
            "method": "getLastConsumedRenderRevision",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/map/MapState",
            "method": "getLastConsumedPolygonContentRevision",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/map/MapState",
            "method": "isCaveMappingAllowed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/map/MapState",
            "method": "isCaveMappingEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/map/MapState",
            "method": "isSurfaceMappingAllowed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/map/MapState",
            "method": "isTopoMappingAllowed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/map/MapState",
            "method": "isBiomeMappingAllowed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/network/handler/PacketHandler$1",
            "method": "getX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "journeymap/common/network/handler/PacketHandler$1",
            "method": "getY",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "journeymap/common/network/handler/PacketHandler$1",
            "method": "getZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "journeymap/api/client/impl/BlockInfo",
            "method": "builder",
            "desc": "()Ljourneymap/api/client/impl/BlockInfo$Builder;",
            "value": "obj#606"
          },
          {
            "class": "journeymap/client/render/map/OverlayProjectionRevision",
            "method": "get",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "journeymap/client/render/map/OverlaySurfacePolygonState",
            "method": "differsFrom",
            "desc": "(Ljava/util/List;IJ)Z",
            "value": "1"
          },
          {
            "class": "journeymap/common/network/packets/crud/WaypointCrudAction$TransferWaypoint",
            "method": "type",
            "desc": "()Ljourneymap/common/network/packets/crud/WaypointCrudActionType;",
            "value": "obj#33"
          },
          {
            "class": "journeymap/common/util/PermissionsManager",
            "method": "getInstance",
            "desc": "()Ljourneymap/common/util/PermissionsManager;",
            "value": "obj#646"
          },
          {
            "class": "journeymap/common/util/PermissionsManager",
            "method": "canServerAdmin",
            "desc": "(Lnet/minecraft/server/level/ServerPlayer;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/model/entity/EntityDTO$EntityDTOExclusionStrategy",
            "method": "shouldSkipClass",
            "desc": "(Ljava/lang/Class;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/config/FabricConfig",
            "method": "getOpAccess",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/waypoint/WaypointScopeDescriptor",
            "method": "isAdmin",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/common/network/packets/share/WaypointShareOperation$UnblockUser",
            "method": "type",
            "desc": "()Ljourneymap/common/network/packets/share/WaypointShareOperation$Type;",
            "value": "obj#759"
          },
          {
            "class": "journeymap/client/JourneymapClient",
            "method": "started",
            "desc": "()Ljava/lang/Boolean;",
            "value": "0"
          },
          {
            "class": "journeymap/client/JourneymapClient",
            "method": "isMapping",
            "desc": "()Ljava/lang/Boolean;",
            "value": "0"
          },
          {
            "class": "journeymap/client/JourneymapClient",
            "method": "isMappingSuspended",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/JourneymapClient",
            "method": "isThreadLogging",
            "desc": "()Ljava/lang/Boolean;",
            "value": "0"
          },
          {
            "class": "journeymap/client/JourneymapClient",
            "method": "enabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/JourneymapClient",
            "method": "isTaskManagerEnabled",
            "desc": "(Ljava/lang/Class;)Z",
            "value": "0"
          },
          {
            "class": "journeymap/client/JourneymapClient",
            "method": "isMainThreadTaskActive",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 9975
      },
      "verdict": "partly",
      "summary": "7 of 20 listening patch sites land on a Horizon hook (35%); of 35 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "jecharacters",
      "name": "Just Enough Characters",
      "version": "4.6.9",
      "license": "MIT License",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/towdium/jecharacters/JustEnoughCharactersFabric"
        },
        {
          "kind": "jech:transformer",
          "value": "me/towdium/jecharacters/asm/transformers/ContainsTransformer"
        },
        {
          "kind": "jech:transformer",
          "value": "me/towdium/jecharacters/asm/transformers/EqualsTransformer"
        },
        {
          "kind": "jech:transformer",
          "value": "me/towdium/jecharacters/asm/transformers/RegExpTransformer"
        },
        {
          "kind": "jech:transformer",
          "value": "me/towdium/jecharacters/asm/transformers/SuffixArrayTransformer"
        },
        {
          "kind": "jech:transformer",
          "value": "me/towdium/jecharacters/asm/transformers/JeiTransformer"
        },
        {
          "kind": "jech:transformer",
          "value": "me/towdium/jecharacters/asm/transformers/HexcessibleTransformer"
        },
        {
          "kind": "jei_mod_plugin",
          "value": "me/towdium/jecharacters/JechJeiPlugin"
        }
      ],
      "mixin_configs": [
        "jecharacters.mixins.json"
      ],
      "depends": [],
      "classes": 48,
      "methods": 215,
      "sites": [
        {
          "mixin": "me/towdium/jecharacters/mixin/MixinClientLevel",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "injectAddEntity",
          "kind": "inject",
          "method": "addEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#addEntity HEAD"
        }
      ],
      "listening": 1,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/multiplayer/ClientLevel#addEntity @HEAD": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 48,
        "features": {
          "command": 1,
          "events": 1,
          "mixin": 1
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 48,
        "methods": 96,
        "tried": 96,
        "completed": 31,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/towdium/jecharacters/config/JechConfig$Spell;#clone()Ljava/lang/Object;": 1,
          "[Lme/towdium/jecharacters/utils/Profiler$Platform;#clone()Ljava/lang/Object;": 1,
          "[Lme/towdium/jecharacters/utils/Profiler$Type;#clone()Ljava/lang/Object;": 1,
          "com/google/gson/JsonObject#has(Ljava/lang/String;)Z": 6,
          "com/mojang/brigadier/builder/LiteralArgumentBuilder#literal(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;": 1,
          "java/lang/CharSequence#toString()Ljava/lang/String;": 4,
          "java/util/Collections#unmodifiableSet(Ljava/util/Set;)Ljava/util/Set;": 1,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 2,
          "me/towdium/pinin/PinIn#config()Lme/towdium/pinin/PinIn$Config;": 1,
          "me/towdium/pinin/searchers/TreeSearcher#put(Ljava/lang/String;Ljava/lang/Object;)V": 4,
          "me/towdium/pinin/searchers/TreeSearcher#search(Ljava/lang/String;)Ljava/util/List;": 4,
          "net/fabricmc/fabric/api/client/command/v2/ClientCommandRegistrationCallback#EVENT": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "new me/towdium/pinin/searchers/TreeSearcher": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#audit(Lorg/spongepowered/asm/mixin/MixinEnvironment;)V": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#computeFramesForClass(Lorg/spongepowered/asm/mixin/MixinEnvironment;Ljava/lang/String;Lorg/objectweb/asm/tree/ClassNode;)Z": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#couldTransformClass(Lorg/spongepowered/asm/mixin/MixinEnvironment;Ljava/lang/String;)Z": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#generateClass(Lorg/spongepowered/asm/mixin/MixinEnvironment;Ljava/lang/String;)[B": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#generateClass(Lorg/spongepowered/asm/mixin/MixinEnvironment;Ljava/lang/String;Lorg/objectweb/asm/tree/ClassNode;)Z": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#getExtensions()Lorg/spongepowered/asm/mixin/transformer/ext/IExtensionRegistry;": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#reload(Ljava/lang/String;Lorg/objectweb/asm/tree/ClassNode;)Ljava/util/List;": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#transformClass(Lorg/spongepowered/asm/mixin/MixinEnvironment;Ljava/lang/String;Lorg/objectweb/asm/tree/ClassNode;)Z": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#transformClass(Lorg/spongepowered/asm/mixin/MixinEnvironment;Ljava/lang/String;[B)[B": 1,
          "org/spongepowered/asm/mixin/transformer/IMixinTransformer#transformClassBytes(Ljava/lang/String;Ljava/lang/String;[B)[B": 2,
          "org/spongepowered/asm/transformers/TreeTransformer#getName()Ljava/lang/String;": 1,
          "org/spongepowered/asm/transformers/TreeTransformer#isDelegationExcluded()Z": 1
        },
        "runs": [
          {
            "class": "me/towdium/jecharacters/utils/FabricInfoReader",
            "method": "getPlatform",
            "desc": "()Lme/towdium/jecharacters/utils/Profiler$Platform;",
            "value": "obj#3"
          },
          {
            "class": "me/towdium/jecharacters/asm/ConfigurableTransformer",
            "method": "accept",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "me/towdium/jecharacters/utils/Profiler$Analyzer$Construct",
            "method": "match",
            "desc": "(Lorg/objectweb/asm/tree/AbstractInsnNode;)Z",
            "value": "0"
          },
          {
            "class": "me/towdium/jecharacters/mixin/JechMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "me/towdium/jecharacters/asm/TransformTarget",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/towdium/jecharacters/asm/TransformTarget",
            "method": "hashCode",
            "desc": "()I",
            "value": "-925814617"
          },
          {
            "class": "me/towdium/jecharacters/asm/Transformer",
            "method": "accept",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "me/towdium/jecharacters/utils/HexcessibleHooks",
            "method": "mergeScore",
            "desc": "(ILjava/lang/String;Ljava/lang/String;)I",
            "value": "0"
          },
          {
            "class": "me/towdium/jecharacters/utils/Profiler$Analyzer$Invoke",
            "method": "match",
            "desc": "(Lorg/objectweb/asm/tree/AbstractInsnNode;)Z",
            "value": "0"
          },
          {
            "class": "me/towdium/jecharacters/utils/Match",
            "method": "equals",
            "desc": "(Ljava/lang/String;Ljava/lang/Object;)Z",
            "value": "0"
          }
        ],
        "insns": 677
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "krypton",
      "name": "Krypton",
      "version": "0.3.2",
      "license": "LGPL-3.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/steinborn/krypton/mod/client/KryptonClientInitializer"
        },
        {
          "kind": "main",
          "value": "me/steinborn/krypton/mod/shared/KryptonSharedInitializer"
        },
        {
          "kind": "server",
          "value": "me/steinborn/krypton/mod/server/KryptonServerInitializer"
        }
      ],
      "mixin_configs": [
        "krypton.mixins.json"
      ],
      "depends": [],
      "classes": 25,
      "methods": 86,
      "sites": [
        {
          "mixin": "me/steinborn/krypton/mixin/shared/debugaid/ResourceLeakDetectorDisableConditionalMixin",
          "targets": [
            "net/minecraft/SharedConstants"
          ],
          "handler": "clinit$resourceLeakDetectorDisableConditional",
          "kind": "redirect",
          "method": "<clinit>",
          "at": "INVOKE",
          "at_target": "Lio/netty/util/ResourceLeakDetector;setLevel(Lio/netty/util/ResourceLeakDetector$Level;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/microopt/ServerEntityMixin",
          "targets": [
            "net/minecraft/server/level/ServerEntity"
          ],
          "handler": "construct$initialPassengersListIsGuavaImmutableList",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Ljava/util/Collections;emptyList()Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/microopt/Utf8StringMixin",
          "targets": [
            "net/minecraft/network/Utf8String"
          ],
          "handler": "write",
          "kind": "overwrite",
          "method": "write",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/microopt/VarIntMixin",
          "targets": [
            "net/minecraft/network/VarInt"
          ],
          "handler": "getByteSize",
          "kind": "overwrite",
          "method": "getByteSize",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/microopt/VarIntMixin",
          "targets": [
            "net/minecraft/network/VarInt"
          ],
          "handler": "write",
          "kind": "overwrite",
          "method": "write",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/pipeline/LegacyQueryHandlerMixin",
          "targets": [
            "net/minecraft/server/network/LegacyQueryHandler"
          ],
          "handler": "channelRead",
          "kind": "inject",
          "method": "channelRead",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/LegacyQueryHandler#channelRead HEAD"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/pipeline/Varint21FrameDecoderMixin",
          "targets": [
            "net/minecraft/network/Varint21FrameDecoder"
          ],
          "handler": "decode",
          "kind": "overwrite",
          "method": "decode",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/pipeline/compression/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "setupCompression",
          "kind": "inject",
          "method": "setupCompression",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/Connection#setupCompression HEAD"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/pipeline/encryption/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "onKey$initializeVelocityCipher",
          "kind": "redirect",
          "method": "handleKey",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Crypt;getCipher(ILjava/security/Key;)Ljavax/crypto/Cipher;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/pipeline/encryption/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "onKey$ignoreMinecraftEncryptionPipelineInjection",
          "kind": "redirect",
          "method": "handleKey",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/Connection;setEncryptionKey(Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/steinborn/krypton/mixin/shared/network/pipeline/prepender/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "createFrameEncoder",
          "kind": "overwrite",
          "method": "createFrameEncoder",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        }
      ],
      "listening": 2,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/network/Connection#setupCompression @HEAD": 1,
        "net/minecraft/server/network/LegacyQueryHandler#channelRead @HEAD": 1
      },
      "wanted_calls": {
        "io/netty/util/ResourceLeakDetector#setLevel @INVOKE (redirect)": 1,
        "java/util/Collections#emptyList @INVOKE (redirect)": 1,
        "net/minecraft/network/Connection#createFrameEncoder @OVERWRITE": 1,
        "net/minecraft/network/Connection#setEncryptionKey @INVOKE (redirect)": 1,
        "net/minecraft/network/Utf8String#write @OVERWRITE": 1,
        "net/minecraft/network/VarInt#getByteSize @OVERWRITE": 1,
        "net/minecraft/network/VarInt#write @OVERWRITE": 1,
        "net/minecraft/network/Varint21FrameDecoder#decode @OVERWRITE": 1,
        "net/minecraft/util/Crypt#getCipher @INVOKE (redirect)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DedicatedServerModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 25,
        "features": {
          "mixin": 10
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 25,
        "methods": 39,
        "tried": 39,
        "completed": 13,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/steinborn/krypton/mod/shared/misc/KryptonPipelineEvent;#clone()Ljava/lang/Object;": 1,
          "[Lme/steinborn/krypton/mod/shared/network/util/WellKnownExceptions;#clone()Ljava/lang/Object;": 1,
          "com/velocitypowered/natives/compression/VelocityCompressor#close()V": 2,
          "com/velocitypowered/natives/encryption/VelocityCipher#close()V": 2,
          "io/netty/buffer/ByteBuf#isReadable()Z": 1,
          "io/netty/buffer/ByteBuf#readableBytes()I": 5,
          "io/netty/buffer/ByteBuf#writeByte(I)Lio/netty/buffer/ByteBuf;": 2,
          "io/netty/channel/ChannelHandlerContext#alloc()Lio/netty/buffer/ByteBufAllocator;": 4,
          "io/netty/channel/ChannelHandlerContext#channel()Lio/netty/channel/Channel;": 2,
          "java/lang/CharSequence#length()I": 1,
          "java/lang/Integer#numberOfLeadingZeros(I)I": 2,
          "new net/minecraft/network/FriendlyByteBuf": 2
        },
        "runs": [
          {
            "class": "me/steinborn/krypton/mod/shared/KryptonMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "me/steinborn/krypton/mod/shared/network/util/QuietDecoderException",
            "method": "fillInStackTrace",
            "desc": "()Ljava/lang/Throwable;",
            "value": "obj#22"
          },
          {
            "class": "me/steinborn/krypton/mixin/shared/network/pipeline/compression/ConnectionMixin",
            "method": "isKryptonOrVanillaDecompressor",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/steinborn/krypton/mixin/shared/network/pipeline/compression/ConnectionMixin",
            "method": "isKryptonOrVanillaCompressor",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          }
        ],
        "insns": 851
      },
      "verdict": "no",
      "summary": "none of its 11 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "lambdynlights",
      "name": "LambDynamicLights",
      "version": "4.13.0+26.3",
      "license": "Lambda License",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "lambdynlights:platform",
          "value": "dev/lambdaurora/lambdynlights/platform/fabric/FabricPlatform"
        },
        {
          "kind": "modmenu",
          "value": "dev/lambdaurora/lambdynlights/LambDynLightsModMenu"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "dev/lambdaurora/lambdynlights/compat/SodiumCompat"
        },
        {
          "kind": "yumi:client_init",
          "value": "dev/lambdaurora/lambdynlights/LambDynLights::INSTANCE"
        }
      ],
      "mixin_configs": [
        "lambdynlights.mixins.json",
        "lambdynlights.lightsource.mixins.json"
      ],
      "depends": [
        "lambdynlights_api",
        "spruceui",
        "yumi_mc_core"
      ],
      "classes": 376,
      "methods": 2760,
      "sites": [
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "lambdynlights$onStartWorldTick",
          "kind": "inject",
          "method": "tickEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickEntities HEAD"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "lambdynlights$onEndWorldTick",
          "kind": "inject",
          "method": "tickEntities",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickEntities TAIL"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "lambdynlights$onTickNonPassenger",
          "kind": "inject",
          "method": "tickNonPassenger",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;tick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger INVOKE"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "lambdynlights$onTickPassenger",
          "kind": "inject",
          "method": "tickPassenger",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;rideTick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickPassenger INVOKE"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "lambdynlights$onFinishRemovingEntity",
          "kind": "inject",
          "method": "removeEntity",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#removeEntity RETURN"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/DebugRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/debug/DebugRenderer"
          ],
          "handler": "lambdynlights$onRender",
          "kind": "inject",
          "method": "refreshRendererList",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/debug/DebugRenderer#refreshRendererList TAIL"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/DebugScreenOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "lambdynlights$onRender",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;values()Ljava/util/Collection;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "lambdynlights$onExtractRenderState",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "gui_render_post",
          "why": "RenderGuiEvent.Post: the whole GUI has drawn"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "lambdynlights$onEndTick",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onUpdateLevelInEngines",
          "kind": "inject",
          "method": "updateLevelInEngines",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#updateLevelInEngines HEAD"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "lambdynlights$onLoad",
          "kind": "inject",
          "method": "load",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#load HEAD"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/ParticleGroupMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleGroup"
          ],
          "handler": "lambdynlights$onTick",
          "kind": "inject",
          "method": "tickParticle",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/Particle;tick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleGroup#tickParticle INVOKE"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/VideoSettingsScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/options/VideoSettingsScreen"
          ],
          "handler": "onConstruct",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/VideoSettingsScreen#<init> TAIL"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/VideoSettingsScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/options/VideoSettingsScreen"
          ],
          "handler": "addOptionButton",
          "kind": "wrap-operation",
          "method": "addOptions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/options/VideoSettingsScreen;qualityOptions(Lnet/minecraft/client/Options;)[Lnet/minecraft/client/OptionInstance;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/lightsource/BeaconBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BeaconBlockEntity"
          ],
          "handler": "lambdynlights$onTick",
          "kind": "inject",
          "method": "tick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/block/entity/BeaconBlockEntity;beamSections:Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BeaconBlockEntity#tick FIELD"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/lightsource/BeaconBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BeaconBlockEntity"
          ],
          "handler": "lambdynlights$markRemoved",
          "kind": "inject",
          "method": "setRemoved",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BeaconBlockEntity#setRemoved RETURN"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/lightsource/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onRemove",
          "kind": "inject",
          "method": "remove",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#remove TAIL"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/lightsource/PrimedTntEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/PrimedTnt"
          ],
          "handler": "onNew",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/PrimedTnt#<init> TAIL"
        },
        {
          "mixin": "dev/lambdaurora/lambdynlights/mixin/lightsource/TheEndGatewayBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity"
          ],
          "handler": "lambdynlights$onBeamAnimationTick",
          "kind": "inject",
          "method": "beamAnimationTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity#beamAnimationTick RETURN"
        }
      ],
      "listening": 13,
      "accessors": 1,
      "hooks": {
        "gui_render_post": 1,
        "tick": 1
      },
      "wanted": {
        "net/minecraft/client/Minecraft#updateLevelInEngines @HEAD": 1,
        "net/minecraft/client/Options#load @HEAD": 1,
        "net/minecraft/client/gui/screens/options/VideoSettingsScreen#<init> @TAIL": 1,
        "net/minecraft/client/multiplayer/ClientLevel#removeEntity @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientLevel#tickEntities @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#tickEntities @TAIL": 1,
        "net/minecraft/client/renderer/debug/DebugRenderer#refreshRendererList @TAIL": 1,
        "net/minecraft/world/entity/Entity#remove @TAIL": 1,
        "net/minecraft/world/entity/item/PrimedTnt#<init> @TAIL": 1,
        "net/minecraft/world/level/block/entity/BeaconBlockEntity#setRemoved @RETURN": 1,
        "net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity#beamAnimationTick @RETURN": 1
      },
      "wanted_calls": {
        "java/util/Map#values @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/options/VideoSettingsScreen#qualityOptions @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger @INVOKE": 1,
        "net/minecraft/client/multiplayer/ClientLevel#tickPassenger @INVOKE": 1,
        "net/minecraft/client/particle/ParticleGroup#tickParticle @INVOKE": 1,
        "net/minecraft/world/level/block/entity/BeaconBlockEntity#tick @FIELD": 1
      },
      "api": [
        {
          "class": "CommonLifecycleEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CommonLifecycleEvents$TagsLoaded",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceCondition",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceConditions",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 374,
        "features": {
          "events": 2,
          "mixin": 25
        },
        "events": [
          "Event",
          "TagsUpdatedEvent"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 374,
        "methods": 1959,
        "tried": 600,
        "completed": 128,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "[Ldev/lambdaurora/lambdynlights/ChunkRebuildSchedulerMode;#clone()Ljava/lang/Object;": 3,
          "[Ldev/lambdaurora/lambdynlights/ExplosiveLightingMode;#clone()Ljava/lang/Object;": 3,
          "[Ldev/lambdaurora/lambdynlights/engine/scheduler/ChunkRebuildStatus;#clone()Ljava/lang/Object;": 1,
          "[Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/ConfigSpec$CorrectionAction;#clone()Ljava/lang/Object;": 1,
          "[Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/io/WritingMode;#clone()Ljava/lang/Object;": 1,
          "[Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/serde/annotations/SerdePhase;#clone()Ljava/lang/Object;": 1,
          "[Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/serde/annotations/SerdeSkipDeserializingIf$SkipDeIf;#clone()Ljava/lang/Object;": 1,
          "[Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/serde/annotations/SerdeSkipSerializingIf$SkipSerIf;#clone()Ljava/lang/Object;": 1,
          "com/mojang/serialization/JsonOps#INSTANCE": 2,
          "dev/lambdaurora/lambdynlights/ChunkRebuildSchedulerMode#name()Ljava/lang/String;": 2,
          "dev/lambdaurora/lambdynlights/DynamicLightsMode#name()Ljava/lang/String;": 2,
          "dev/lambdaurora/lambdynlights/ExplosiveLightingMode#name()Ljava/lang/String;": 3,
          "dev/lambdaurora/lambdynlights/api/DynamicLightsInitializer#onInitializeDynamicLights(Ldev/lambdaurora/lambdynlights/api/DynamicLightsContext;)V": 1,
          "dev/lambdaurora/lambdynlights/engine/source/EntityDynamicLightSourceBehavior#getDynamicLightX()D": 1,
          "dev/lambdaurora/lambdynlights/engine/source/EntityDynamicLightSourceBehavior#isDynamicLightEnabled()Z": 1,
          "dev/lambdaurora/lambdynlights/engine/source/EntityDynamicLightSourceBehavior#resetDynamicLight()V": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/AbstractCommentedConfig$CommentedEntryWrapper#getValue()Ljava/lang/Object;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig#configFormat()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/ConfigFormat;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig#contains(Ljava/util/List;)Z": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig#containsComment(Ljava/util/List;)Z": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig#getComment(Ljava/util/List;)Ljava/lang/String;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig#getComments()Ljava/util/Map;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig#getRaw(Ljava/util/List;)Ljava/lang/Object;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig#set(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig#size()I": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig#valueMap()Ljava/util/Map;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig$Entry#getComment()Ljava/lang/String;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/CommentedConfig$Entry#getKey()Ljava/lang/String;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/Config#configFormat()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/ConfigFormat;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/Config#contains(Ljava/util/List;)Z": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/Config#getRaw(Ljava/util/List;)Ljava/lang/Object;": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/Config#size()I": 1,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/concurrent/StampedConfig$ThreadConfigState#ordinal()I": 6,
          "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlFormat#createConfig()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/Config;": 2,
          "dev/lambdaurora/spruceui/util/ColorUtil#argbUnpackRed(I)I": 1,
          "dev/lambdaurora/spruceui/widget/container/SpruceContainerWidget#addChild(Ldev/lambdaurora/spruceui/widget/SpruceWidget;)V": 1,
          "dev/lambdaurora/spruceui/widget/container/SpruceContainerWidget#getWidth()I": 1,
          "dev/lambdaurora/spruceui/widget/container/SpruceParentWidget#getPosition()Ldev/lambdaurora/spruceui/Position;": 1,
          "dev/yumi/mc/core/api/YumiMods#get()Ldev/yumi/mc/core/api/YumiMods;": 5,
          "eu/pb4/trinkets/api/TrinketsApi#getAttachment(Lnet/minecraft/world/entity/LivingEntity;)Leu/pb4/trinkets/api/TrinketAttachment;": 1,
          "io/github/queerbric/pride/PrideFlag#getShape()Lio/github/queerbric/pride/shape/PrideFlagShape;": 2,
          "io/github/queerbric/pride/PrideFlags#getRandomFlag(Ljava/util/Random;)Lio/github/queerbric/pride/PrideFlag;": 1,
          "it/unimi/dsi/fastutil/ints/IntList#size()I": 1,
          "it/unimi/dsi/fastutil/longs/Long2ObjectMap#isEmpty()Z": 1,
          "it/unimi/dsi/fastutil/longs/Long2ObjectMap#size()I": 1,
          "it/unimi/dsi/fastutil/longs/LongSet#size()I": 1,
          "java/io/File#getName()Ljava/lang/String;": 1,
          "java/io/File#toPath()Ljava/nio/file/Path;": 9,
          "java/lang/Class#forName(Ljava/lang/String;)Ljava/lang/Class;": 1,
          "java/lang/Class#getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;": 1,
          "java/lang/Class#getGenericSuperclass()Ljava/lang/reflect/Type;": 1,
          "java/lang/Class#getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;": 1,
          "java/lang/Class#isArray()Z": 1,
          "java/lang/Class#isPrimitive()Z": 2,
          "java/lang/Integer#toString(I)Ljava/lang/String;": 2,
          "java/lang/System#getProperty(Ljava/lang/String;)Ljava/lang/String;": 2,
          "java/lang/reflect/Array#getLength(Ljava/lang/Object;)I": 2,
          "java/lang/reflect/WildcardType#getLowerBounds()[Ljava/lang/reflect/Type;": 1,
          "java/lang/reflect/WildcardType#getUpperBounds()[Ljava/lang/reflect/Type;": 1,
          "java/net/URL#openConnection()Ljava/net/URLConnection;": 3,
          "java/nio/ByteBuffer#position()I": 1,
          "java/nio/charset/Charset#newDecoder()Ljava/nio/charset/CharsetDecoder;": 3,
          "java/nio/charset/CharsetDecoder#charset()Ljava/nio/charset/Charset;": 1,
          "java/nio/charset/CharsetDecoder#flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;": 1,
          "java/nio/charset/CharsetDecoder#reset()Ljava/nio/charset/CharsetDecoder;": 1,
          "java/nio/charset/CharsetEncoder#canEncode(C)Z": 1,
          "java/nio/charset/CharsetEncoder#canEncode(Ljava/lang/CharSequence;)Z": 1,
          "java/nio/charset/CharsetEncoder#encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;": 1,
          "java/nio/charset/CharsetEncoder#flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;": 1,
          "java/nio/charset/CharsetEncoder#isLegalReplacement([B)Z": 1,
          "java/nio/charset/CharsetEncoder#reset()Ljava/nio/charset/CharsetEncoder;": 1,
          "java/nio/charset/StandardCharsets#UTF_8": 12,
          "java/nio/file/Files#newBufferedReader(Ljava/nio/file/Path;)Ljava/io/BufferedReader;": 2,
          "java/nio/file/Files#notExists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/nio/file/Path#getFileName()Ljava/nio/file/Path;": 4,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 2,
          "java/nio/file/Paths#get(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;": 6,
          "java/nio/file/StandardOpenOption#TRUNCATE_EXISTING": 1,
          "java/time/temporal/ChronoField#HOUR_OF_DAY": 1,
          "java/time/temporal/ChronoField#YEAR": 2,
          "java/util/Collection#add(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#addAll(Ljava/util/Collection;)Z": 2,
          "java/util/Collection#clear()V": 2,
          "java/util/Collection#contains(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#containsAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#equals(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#hashCode()I": 1,
          "java/util/Collection#parallelStream()Ljava/util/stream/Stream;": 1,
          "java/util/Collection#remove(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#removeAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#retainAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#spliterator()Ljava/util/Spliterator;": 1,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collection#toArray()[Ljava/lang/Object;": 1,
          "java/util/Collection#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 1,
          "java/util/Collections#singletonList(Ljava/lang/Object;)Ljava/util/List;": 4,
          "java/util/IdentityHashMap#size()I": 1,
          "java/util/Objects#hashCode(Ljava/lang/Object;)I": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#clear()V": 2,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 4,
          "java/util/Set#containsAll(Ljava/util/Collection;)Z": 1,
          "java/util/Set#equals(Ljava/lang/Object;)Z": 1,
          "java/util/Set#hashCode()I": 1,
          "java/util/Set#remove(Ljava/lang/Object;)Z": 1,
          "java/util/Set#removeAll(Ljava/util/Collection;)Z": 1,
          "java/util/Set#removeIf(Ljava/util/function/Predicate;)Z": 1,
          "java/util/Set#retainAll(Ljava/util/Collection;)Z": 1,
          "java/util/Set#toArray()[Ljava/lang/Object;": 1,
          "java/util/Set#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 1,
          "java/util/Spliterator#characteristics()I": 1,
          "java/util/Spliterator#estimateSize()J": 1,
          "java/util/Spliterator#getExactSizeIfKnown()J": 1,
          "java/util/Spliterator#hasCharacteristics(I)Z": 1,
          "java/util/Spliterator#trySplit()Ljava/util/Spliterator;": 1,
          "java/util/concurrent/TimeUnit#NANOSECONDS": 1,
          "java/util/concurrent/locks/ReentrantReadWriteLock#readLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;": 1,
          "java/util/concurrent/locks/StampedLock#tryOptimisticRead()J": 3,
          "java/util/concurrent/locks/StampedLock#tryReadLock()J": 2,
          "java/util/concurrent/locks/StampedLock#tryWriteLock()J": 9,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 5,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 4,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/core/BlockPos#getX()I": 1,
          "net/minecraft/core/SectionPos#x(J)I": 1,
          "net/minecraft/util/Mth#square(I)I": 2,
          "net/minecraft/world/entity/monster/Guardian#getActiveAttackTarget()Lnet/minecraft/world/entity/LivingEntity;": 1,
          "net/minecraft/world/level/BlockAndLightGetter#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/Level#getMaxY()I": 1,
          "net/minecraft/world/level/Level#getMinY()I": 1,
          "net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity#getBlockPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity#isRemoved()Z": 1,
          "new dev/lambdaurora/spruceui/widget/SpruceLabelWidget": 1
        },
        "runs": [
          {
            "class": "dev/lambdaurora/lambdynlights/gui/SettingsScreen$TabContext",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/engine/scheduler/ChunkRebuildStatus",
            "method": "color",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/engine/scheduler/ChunkRebuildStatus",
            "method": "needsRebuild",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/engine/scheduler/ChunkRebuildStatus",
            "method": "needsCleanup",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/echo/TheEndGatewayBeamLightBehavior",
            "method": "hasChanged",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/utils/TransformingCollection",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/utils/TransformingCollection",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/utils/TransformingCollection",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/io/CharsetUnicodeBom$Decoder",
            "method": "isAutoDetecting",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/io/CharsetUnicodeBom$Decoder",
            "method": "isCharsetDetected",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/DynamicLightsConfig",
            "method": "getSlowTickingDistance",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/DynamicLightsConfig",
            "method": "getSlowerTickingDistance",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/DynamicLightsConfig",
            "method": "getDebugCellDisplayRadius",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/DynamicLightsConfig",
            "method": "getDebugLightLevelRadius",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/serde/TypeConstraint",
            "method": "resolveTypeArgumentsFor",
            "desc": "(Ljava/lang/Class;)Ljava/util/Optional;",
            "value": "obj#223"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/resource/entity/luminance/DisplayEntityLuminance$ItemDisplayLuminance",
            "method": "getLuminance",
            "desc": "(Ldev/lambdaurora/lambdynlights/api/item/ItemLightSourceManager;Lnet/minecraft/world/entity/Entity;)I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "charset",
            "desc": "(Ljava/nio/charset/Charset;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#264"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "writingMode",
            "desc": "(Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/io/WritingMode;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#265"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "parsingMode",
            "desc": "(Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/io/ParsingMode;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#266"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "onFileNotFound",
            "desc": "(Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/FileNotFoundAction;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#267"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "sync",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#272"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "async",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#273"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "asyncWithDebouncing",
            "desc": "(Ljava/time/Duration;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#274"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "autosave",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#275"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "autoreload",
            "desc": "(Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/FileWatcher;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#279"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "onAutoReload",
            "desc": "(Ljava/lang/Runnable;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#280"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "onAutoSave",
            "desc": "(Ljava/lang/Runnable;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#281"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "onLoad",
            "desc": "(Ljava/lang/Runnable;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#282"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "onSave",
            "desc": "(Ljava/lang/Runnable;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#283"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "onLoadFilter",
            "desc": "(Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/ConfigLoadFilter;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#284"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "concurrent",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#285"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "preserveInsertionOrder",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#286"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder",
            "method": "backingMapCreator",
            "desc": "(Ljava/util/function/Supplier;)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/GenericBuilder;",
            "value": "obj#287"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/utils/ObservedSet2",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/utils/ObservedSet2",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/engine/scheduler/ChunkRebuildScheduler",
            "method": "getSourceUpdatedLastTick",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/ConfigFormat",
            "method": "isInMemory",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/ExplosiveLightingMode",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/utils/TransformingSpliterator",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/utils/TransformingSpliterator",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/utils/TransformingSpliterator",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/AbstractCommentedConfig$CommentedEntryWrapper",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/FileConfig",
            "method": "checked",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/FileConfig;",
            "value": "obj#431"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/FileConfig",
            "method": "checked",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/Config;",
            "value": "obj#443"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/engine/DynamicLightingEngine",
            "method": "positionToCell",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/engine/DynamicLightingEngine",
            "method": "getLastEntryCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "isLenientWithSeparators",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "setLenientWithSeparators",
            "desc": "(Z)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser;",
            "value": "obj#509"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "isLenientWithBareKeys",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "setLenientWithBareKeys",
            "desc": "(Z)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser;",
            "value": "obj#513"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "setInitialStringBuilderCapacity",
            "desc": "(I)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser;",
            "value": "obj#515"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "setInitialListCapacity",
            "desc": "(I)Ldev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser;",
            "value": "obj#517"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "getFormat",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/ConfigFormat;",
            "value": "obj#496"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "configWasEmpty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "createList",
            "desc": "()Ljava/util/List;",
            "value": "obj#527"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "createBuilder",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/io/CharsWrapper$Builder;",
            "value": "obj#531"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/toml/TomlParser",
            "method": "hasPendingComment",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/engine/lookup/SpatialLookupEntityEntry",
            "method": "cellKey",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/CheckedFileConfig",
            "method": "checked",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/FileConfig;",
            "value": "obj#571"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/file/CheckedFileConfig",
            "method": "checked",
            "desc": "()Ldev/lambdaurora/lambdynlights/shadow/nightconfig/core/Config;",
            "value": "obj#585"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/LambDynLights",
            "method": "getLightmapWithDynamicLight",
            "desc": "(DI)I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/LambDynLights",
            "method": "getLightSourcesCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/LambDynLights",
            "method": "canLightParticle",
            "desc": "(Lnet/minecraft/client/particle/Particle;)Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/concurrent/StampedConfig",
            "method": "valueMap",
            "desc": "()Ljava/util/Map;",
            "value": "obj#668"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/concurrent/StampedConfig",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/concurrent/StampedConfig",
            "method": "entrySet",
            "desc": "()Ljava/util/Set;",
            "value": "obj#703"
          },
          {
            "class": "dev/lambdaurora/lambdynlights/shadow/nightconfig/core/concurrent/SynchronizedConfig$SynchronizedCollection",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          }
        ],
        "insns": 6300
      },
      "verdict": "no",
      "summary": "only 2 of 13 listening patch sites have a hook (15%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "languagereload",
      "name": "Language Reload",
      "version": "1.7.8+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "jerozgen/languagereload/LanguageReload"
        },
        {
          "kind": "modmenu",
          "value": "jerozgen/languagereload/config/ModMenuEntrypoint"
        }
      ],
      "mixin_configs": [
        "languagereload.mixins.json"
      ],
      "depends": [],
      "classes": 37,
      "methods": 143,
      "sites": [
        {
          "mixin": "jerozgen/languagereload/mixin/ClientLanguageMixin",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "onConstructed",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/language/ClientLanguage#<init> RETURN"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/ClientLanguageMixin",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "onLoadFrom$applyDeprecatedLanguageData",
          "kind": "wrap-operation",
          "method": "loadFrom",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/locale/DeprecatedTranslationsInfo;applyToMap(Ljava/util/Map;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/ClientLanguageMixin",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "onLoadFrom",
          "kind": "inject",
          "method": "loadFrom",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/language/ClientLanguage#loadFrom HEAD"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/ClientLanguageMixin",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "onAppendFrom$saveSeparately",
          "kind": "redirect",
          "method": "appendFrom",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/locale/Language;loadFromJson(Ljava/io/InputStream;Ljava/util/function/BiConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/KeyboardHandlerMixin",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "onHandleDebugKeys",
          "kind": "inject",
          "method": "handleDebugKeys",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#handleDebugKeys RETURN"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/KeyboardHandlerMixin",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "onKeyPress",
          "kind": "inject",
          "method": "keyPress",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/KeyboardHandler;debugCrashKeyTime:J",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#keyPress FIELD"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/KeyboardHandlerMixin",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "onCharTyped",
          "kind": "inject",
          "method": "charTyped",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#charTyped HEAD"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/LanguageManagerMixin",
          "targets": [
            "net/minecraft/client/resources/language/LanguageManager"
          ],
          "handler": "onResourceManagerReload$addFallbacks",
          "kind": "redirect",
          "method": "onResourceManagerReload",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/LanguageManagerMixin",
          "targets": [
            "net/minecraft/client/resources/language/LanguageManager"
          ],
          "handler": "onResourceManagerReload$setSystemLanguage",
          "kind": "inject",
          "method": "onResourceManagerReload",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/language/LanguageManager#onResourceManagerReload INVOKE"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/LanguageMixin",
          "targets": [
            "net/minecraft/locale/Language"
          ],
          "handler": "onInject",
          "kind": "inject",
          "method": "inject",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/locale/Language#inject HEAD"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/LanguageMixin",
          "targets": [
            "net/minecraft/locale/Language"
          ],
          "handler": "afterInject",
          "kind": "inject",
          "method": "inject",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/locale/Language#inject TAIL"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/LanguageSelectScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/options/LanguageSelectScreen"
          ],
          "handler": "onConstructed",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/LanguageSelectScreen#<init> TAIL"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/LanguageSelectScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/options/LanguageSelectScreen"
          ],
          "handler": "onAddContents",
          "kind": "inject",
          "method": "addContents",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/LanguageSelectScreen#addContents HEAD"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/LanguageSelectScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/options/LanguageSelectScreen"
          ],
          "handler": "onRepositionElements",
          "kind": "inject",
          "method": "repositionElements",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/LanguageSelectScreen#repositionElements HEAD"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/LanguageSelectScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/options/LanguageSelectScreen"
          ],
          "handler": "onDone",
          "kind": "inject",
          "method": "onDone",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/LanguageSelectScreen#onDone HEAD"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "onConstructed",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#<init> TAIL"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "onLoad",
          "kind": "inject",
          "method": "load",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#load HEAD"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "onDataFix",
          "kind": "inject",
          "method": "dataFix",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#dataFix RETURN"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/RecipeBookComponentMixin",
          "targets": [
            "net/minecraft/client/gui/screens/recipebook/RecipeBookComponent"
          ],
          "handler": "onPirateSpeechForThePeople$cancelReload",
          "kind": "inject",
          "method": "pirateSpeechForThePeople",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/resources/language/LanguageManager;setSelected(Ljava/lang/String;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/recipebook/RecipeBookComponent#pirateSpeechForThePeople INVOKE"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/SessionSearchTreesMixin",
          "targets": [
            "net/minecraft/client/multiplayer/SessionSearchTrees"
          ],
          "handler": "addFallbackTranslationsToSearchTooltips",
          "kind": "wrap-operation",
          "method": "lambda$getTooltipLines$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;getTooltipLines(Lnet/minecraft/world/item/Item$TooltipContext;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/TooltipFlag;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/TranslatableContentsMixin",
          "targets": [
            "net/minecraft/network/chat/contents/TranslatableContents"
          ],
          "handler": "onVisit",
          "kind": "wrap-operation",
          "method": "visit",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/network/chat/contents/TranslatableContents;decomposedParts:Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "jerozgen/languagereload/mixin/TranslatableContentsMixin",
          "targets": [
            "net/minecraft/network/chat/contents/TranslatableContents"
          ],
          "handler": "onVisitStyled",
          "kind": "wrap-operation",
          "method": "visit",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/network/chat/contents/TranslatableContents;decomposedParts:Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 13,
      "accessors": 14,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/KeyboardHandler#charTyped @HEAD": 1,
        "net/minecraft/client/KeyboardHandler#handleDebugKeys @RETURN": 1,
        "net/minecraft/client/Options#<init> @TAIL": 1,
        "net/minecraft/client/Options#dataFix @RETURN": 1,
        "net/minecraft/client/Options#load @HEAD": 1,
        "net/minecraft/client/gui/screens/options/LanguageSelectScreen#<init> @TAIL": 1,
        "net/minecraft/client/gui/screens/options/LanguageSelectScreen#addContents @HEAD": 1,
        "net/minecraft/client/gui/screens/options/LanguageSelectScreen#onDone @HEAD": 1,
        "net/minecraft/client/gui/screens/options/LanguageSelectScreen#repositionElements @HEAD": 1,
        "net/minecraft/client/resources/language/ClientLanguage#<init> @RETURN": 1,
        "net/minecraft/client/resources/language/ClientLanguage#loadFrom @HEAD": 1,
        "net/minecraft/locale/Language#inject @HEAD": 1,
        "net/minecraft/locale/Language#inject @TAIL": 1
      },
      "wanted_calls": {
        "java/util/List#add @INVOKE (redirect)": 1,
        "net/minecraft/client/KeyboardHandler#keyPress @FIELD": 1,
        "net/minecraft/client/gui/screens/recipebook/RecipeBookComponent#pirateSpeechForThePeople @INVOKE": 1,
        "net/minecraft/client/resources/language/LanguageManager#onResourceManagerReload @INVOKE": 1,
        "net/minecraft/locale/DeprecatedTranslationsInfo#applyToMap @INVOKE (wrap-operation)": 1,
        "net/minecraft/locale/Language#loadFromJson @INVOKE (redirect)": 1,
        "net/minecraft/network/chat/contents/TranslatableContents#decomposedParts:Ljava/util/List; @FIELD (wrap-operation)": 2,
        "net/minecraft/world/item/ItemStack#getTooltipLines @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 37,
        "features": {
          "screen": 7,
          "mixin": 20
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 37,
        "methods": 64,
        "tried": 64,
        "completed": 12,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/google/common/collect/Maps#newHashMap()Ljava/util/HashMap;": 1,
          "java/io/File#exists()Z": 1,
          "java/lang/Thread#currentThread()Ljava/lang/Thread;": 2,
          "java/util/LinkedList#contains(Ljava/lang/Object;)Z": 4,
          "java/util/LinkedList#peekFirst()Ljava/lang/Object;": 1,
          "java/util/LinkedList#peekLast()Ljava/lang/Object;": 1,
          "java/util/LinkedList#stream()Ljava/util/stream/Stream;": 1,
          "jerozgen/languagereload/gui/LanguageEntry#isFocused()Z": 1,
          "jerozgen/languagereload/gui/LanguageList#clearEntries()V": 1,
          "jerozgen/languagereload/gui/LanguageList#getRight()I": 1,
          "jerozgen/languagereload/gui/LanguageList#getSelected()Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;": 1,
          "jerozgen/languagereload/gui/LanguageList#scrollable()Z": 3,
          "jerozgen/languagereload/mixin/LanguageSelectScreenMixin$1#isFocused()Z": 1,
          "net/minecraft/client/KeyMapping#matches(Lnet/minecraft/client/input/KeyEvent;)Z": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/ComponentPath#path(Lnet/minecraft/client/gui/components/events/GuiEventListener;[Lnet/minecraft/client/gui/components/events/ContainerEventHandler;)Lnet/minecraft/client/gui/ComponentPath;": 2,
          "net/minecraft/client/gui/components/ImageButton#<init>(IIIILnet/minecraft/client/gui/components/WidgetSprites;Lnet/minecraft/client/gui/components/Button$OnPress;)V": 1,
          "net/minecraft/client/gui/components/ImageButton#extractContents(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/components/ObjectSelectionList#getEntryAtPosition(DD)Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;": 2,
          "net/minecraft/client/gui/screens/options/OptionsSubScreen#repositionElements()V": 1,
          "net/minecraft/client/input/KeyEvent#isConfirmation()Z": 1
        },
        "runs": [
          {
            "class": "jerozgen/languagereload/gui/HeaderEntry",
            "method": "mouseClicked",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z",
            "value": "0"
          },
          {
            "class": "jerozgen/languagereload/mixin/LanguageSelectScreenMixin",
            "method": "it",
            "desc": "()Lnet/minecraft/client/gui/screens/options/LanguageSelectScreen;",
            "value": "obj#60"
          }
        ],
        "insns": 328
      },
      "verdict": "no",
      "summary": "none of its 22 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "leavesbegone",
      "name": "Leaves Be Gone",
      "version": "26.3.0",
      "license": "MPL-2.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "fuzs/leavesbegone/fabric/client/LeavesBeGoneFabricClient"
        },
        {
          "kind": "main",
          "value": "fuzs/leavesbegone/fabric/LeavesBeGoneFabric"
        }
      ],
      "mixin_configs": [
        "leavesbegone.common.mixins.json",
        "leavesbegone.fabric.mixins.json"
      ],
      "depends": [
        "forgeconfigapiport",
        "puzzleslib"
      ],
      "classes": 16,
      "methods": 48,
      "sites": [
        {
          "mixin": "fuzs/leavesbegone/common/mixin/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "unpackTicks",
          "kind": "inject",
          "method": "unpackTicks",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#unpackTicks TAIL"
        },
        {
          "mixin": "fuzs/leavesbegone/common/mixin/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "registerTickContainerInLevel",
          "kind": "inject",
          "method": "registerTickContainerInLevel",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#registerTickContainerInLevel TAIL"
        },
        {
          "mixin": "fuzs/leavesbegone/common/mixin/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "unregisterTickContainerFromLevel",
          "kind": "inject",
          "method": "unregisterTickContainerFromLevel",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#unregisterTickContainerFromLevel TAIL"
        },
        {
          "mixin": "fuzs/leavesbegone/common/mixin/SerializableChunkDataMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SerializableChunkData"
          ],
          "handler": "parse",
          "kind": "modify-variable",
          "method": "parse",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "fuzs/leavesbegone/common/mixin/SerializableChunkDataMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SerializableChunkData"
          ],
          "handler": "read",
          "kind": "modify-variable",
          "method": "read",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "fuzs/leavesbegone/common/mixin/SerializableChunkDataMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SerializableChunkData"
          ],
          "handler": "saveTicks",
          "kind": "inject",
          "method": "saveTicks",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/storage/SerializableChunkData#saveTicks TAIL"
        },
        {
          "mixin": "fuzs/leavesbegone/common/mixin/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/ticks/LevelTicks;tick(JILjava/util/function/BiConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#tick INVOKE"
        },
        {
          "mixin": "fuzs/leavesbegone/common/mixin/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "tickBlock$0",
          "kind": "inject",
          "method": "tickBlock",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#tickBlock HEAD"
        },
        {
          "mixin": "fuzs/leavesbegone/common/mixin/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "tickBlock$1",
          "kind": "inject",
          "method": "tickBlock",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#tickBlock TAIL"
        }
      ],
      "listening": 6,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/server/level/ServerLevel#tickBlock @HEAD": 1,
        "net/minecraft/server/level/ServerLevel#tickBlock @TAIL": 1,
        "net/minecraft/world/level/chunk/LevelChunk#registerTickContainerInLevel @TAIL": 1,
        "net/minecraft/world/level/chunk/LevelChunk#unpackTicks @TAIL": 1,
        "net/minecraft/world/level/chunk/LevelChunk#unregisterTickContainerFromLevel @TAIL": 1,
        "net/minecraft/world/level/chunk/storage/SerializableChunkData#saveTicks @TAIL": 1
      },
      "wanted_calls": {
        "net/minecraft/server/level/ServerLevel#tick @INVOKE": 1,
        "net/minecraft/world/level/chunk/storage/SerializableChunkData#parse @STORE (modify-variable)": 1,
        "net/minecraft/world/level/chunk/storage/SerializableChunkData#read @STORE (modify-variable)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 16,
        "features": {
          "mixin": 5
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 16,
        "methods": 11,
        "tried": 11,
        "completed": 3,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "fuzs/leavesbegone/common/mixin/ServerLevelMixin#getGameTime()J": 1,
          "fuzs/puzzleslib/common/api/event/v1/level/ServerChunkEvents#LOAD": 2,
          "net/minecraft/core/Holder#unwrapKey()Ljava/util/Optional;": 1,
          "net/minecraft/core/registries/Registries#BLOCK": 1,
          "net/minecraft/tags/BlockTags#LEAVES": 2
        },
        "runs": [],
        "insns": 44
      },
      "verdict": "no",
      "summary": "none of its 9 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "litematica",
      "name": "Litematica",
      "version": "0.29.1",
      "license": "LGPLv3",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "main",
          "value": "fi/dy/masa/litematica/Litematica"
        },
        {
          "kind": "modmenu",
          "value": "fi/dy/masa/litematica/compat/modmenu/ModMenuImpl"
        }
      ],
      "mixin_configs": [
        "mixins.litematica.json"
      ],
      "depends": [
        "malilib"
      ],
      "classes": 504,
      "methods": 4708,
      "sites": [
        {
          "mixin": "fi/dy/masa/litematica/mixin/block/MixinBlock",
          "targets": [
            "net/minecraft/world/level/block/Block"
          ],
          "handler": "litematica_preventItemDrops",
          "kind": "inject",
          "method": "popResource",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/Block#popResource HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/block/MixinBlockStateData",
          "targets": [
            "net/minecraft/util/datafix/fixes/BlockStateData"
          ],
          "handler": "litematica_onAddEntry",
          "kind": "inject",
          "method": "register",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/datafix/fixes/BlockStateData#register HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/block/MixinChestBlock",
          "targets": [
            "net/minecraft/world/level/block/ChestBlock"
          ],
          "handler": "litematica_fixChestMirror",
          "kind": "inject",
          "method": "mirror",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/ChestBlock#mirror HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/block/MixinRailBlocks",
          "targets": [
            "net/minecraft/world/level/block/RailBlock",
            "net/minecraft/world/level/block/DetectorRailBlock",
            "net/minecraft/world/level/block/PoweredRailBlock"
          ],
          "handler": "litematica_fixRailRotation",
          "kind": "inject",
          "method": "rotate",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RailBlock#rotate HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/block/MixinStairsBlock",
          "targets": [
            "net/minecraft/world/level/block/StairBlock"
          ],
          "handler": "litematica_fixStairsMirror",
          "kind": "inject",
          "method": "mirror",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/StairBlock#mirror HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/client/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "litematica_onRunTickStart",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/client/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "litematica_onResourceLoadFinished",
          "kind": "inject",
          "method": "onResourceLoadFinished",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#onResourceLoadFinished TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/client/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "litematica_onRunStop",
          "kind": "inject",
          "method": "stop",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_stopping",
          "why": "the client stops"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/client/MixinOptions",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "litematica_onOptionsSave",
          "kind": "inject",
          "method": "save",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#save TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/easyplace/MixinBlockItem_easyPlace",
          "targets": [
            "net/minecraft/world/item/BlockItem"
          ],
          "handler": "litematica_modifyPlacementState",
          "kind": "inject",
          "method": "getPlacementState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/BlockItem#getPlacementState HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/easyplace/MixinClientPlayerInteractionManager_easyPlace",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "litematica_onInteractBlock",
          "kind": "inject",
          "method": "useItemOn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#useItemOn HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/easyplace/MixinClientPlayerInteractionManager_easyPlace",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "litematica_onInteractBlockInternal",
          "kind": "inject",
          "method": "performUseItemOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/LocalPlayer;getItemInHand(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#performUseItemOn INVOKE"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/easyplace/MixinMinecraft_easyPlace",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "litematica_handlePlacementRestriction",
          "kind": "inject",
          "method": "startUseItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;getCount()I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#startUseItem INVOKE"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/easyplace/MixinMinecraft_easyPlace",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onUseKeyPre",
          "kind": "inject",
          "method": "handleKeybinds",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;startUseItem()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#handleKeybinds INVOKE"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/easyplace/MixinMinecraft_easyPlace",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onUseKeyPost",
          "kind": "inject",
          "method": "startUseItem",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#startUseItem TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/easyplace/MixinServerGamePacketListenerImpl_easyPlace",
          "targets": [
            "net/minecraft/server/network/ServerGamePacketListenerImpl"
          ],
          "handler": "litematica_removeHitPosCheck",
          "kind": "wrap-operation",
          "method": "handleUseItemOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/Vec3;subtract(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/entity/MixinAbstractSignEditScreen",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen"
          ],
          "handler": "litematica_insertSignText",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#init HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/hud/MixinDebugScreenEntryList",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntryList"
          ],
          "handler": "litematica_updateVisibleEntries",
          "kind": "inject",
          "method": "rebuildCurrentList",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/hud/MixinDebugScreenOverlay",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "litematica_fixF3WhenAllDisabled",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Ljava/util/Collection;isEmpty()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/hud/MixinDebugScreenOverlay",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "litematica_addDebugLines_Left",
          "kind": "modify-arg",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/DebugScreenOverlay;extractLines(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Ljava/util/List;ZI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/model/MixinBlockStateDefinitions",
          "targets": [
            "net/minecraft/client/resources/model/BlockStateDefinitions"
          ],
          "handler": "litematica$fillFallbackBlocks",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/BlockStateDefinitions#<clinit> RETURN"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/network/MixinClientCommonPacketListenerImpl",
          "targets": [
            "net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl"
          ],
          "handler": "litematica_onCustomPayload",
          "kind": "inject",
          "method": "handleCustomPayload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl#handleCustomPayload HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/network/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "litematica_onUpdateChunk",
          "kind": "inject",
          "method": "handleLevelChunkWithLight",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/network/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "litematica_onChunkUnload",
          "kind": "inject",
          "method": "handleForgetLevelChunk",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/network/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "litematica_onGameMessage",
          "kind": "inject",
          "method": "handleSystemChat",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/chat/ChatListener;handleSystemMessage(Lnet/minecraft/network/chat/Component;Z)V",
          "cancellable": true,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/network/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "litematica_onCustomPayload",
          "kind": "inject",
          "method": "handleCustomPayload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/network/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "litematica_onQueryResponse",
          "kind": "inject",
          "method": "handleTagQueryPacket",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/DebugQueryHandler;handleResponse(ILnet/minecraft/nbt/CompoundTag;)Z",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/network/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "minihud_onCommandTree",
          "kind": "inject",
          "method": "handleCommands",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinBindGroupLayouts",
          "targets": [
            "net/minecraft/client/renderer/BindGroupLayouts"
          ],
          "handler": "registerBindGroups",
          "kind": "inject",
          "method": "<clinit>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/BindGroupLayouts#<clinit> TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinEntityHitboxDebugRenderer",
          "targets": [
            "net/minecraft/client/renderer/debug/EntityHitboxDebugRenderer"
          ],
          "handler": "litematica_renderEntityHitboxes",
          "kind": "inject",
          "method": "emitGizmos",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/debug/EntityHitboxDebugRenderer#emitGizmos TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "litematica_updateCameraState",
          "kind": "inject",
          "method": "extractCamera",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#extractCamera TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelExtractor",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "litematica_onLoadRenderers",
          "kind": "inject",
          "method": "allChanged",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#allChanged RETURN"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelExtractor",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "litematica_onExtractLevel",
          "kind": "inject",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/profiling/ProfilerFiller;popPush(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extract INVOKE"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelExtractor",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "litematica_onPostPrepareEntities",
          "kind": "inject",
          "method": "extractVisibleEntities",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities RETURN"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelExtractor",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "litematica_onPostPrepareBlockEntities",
          "kind": "inject",
          "method": "extractVisibleBlockEntities",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleBlockEntities RETURN"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_onPreRenderMain",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;addMainPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher$PreparedFrame;Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#render INVOKE"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_onPrepareBlockLayersPost1",
          "kind": "inject",
          "method": "prepareChunkRenders",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#prepareChunkRenders TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_onPrepareBlockLayersPost2",
          "kind": "inject",
          "method": "prepareChunkRendersIndirect",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#prepareChunkRendersIndirect TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_renderMainSection_Oit",
          "kind": "inject",
          "method": "executeOit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#executeOit HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_renderMainSection_Outline1",
          "kind": "inject",
          "method": "executeOutline",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#executeOutline HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_renderMainSection_Outline2",
          "kind": "inject",
          "method": "executeOutline",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#executeOutline TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_onPostRenderEntities",
          "kind": "inject",
          "method": "submitEntities",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#submitEntities RETURN"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_onPostRenderBlockEntities",
          "kind": "inject",
          "method": "submitBlockEntities",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#submitBlockEntities RETURN"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_onEndFrame",
          "kind": "inject",
          "method": "endFrame",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#endFrame TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "litematica_onClose",
          "kind": "inject",
          "method": "close",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#close TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/render/MixinRenderPipelines",
          "targets": [
            "net/minecraft/client/renderer/RenderPipelines"
          ],
          "handler": "litematica_onRegisterPipelines",
          "kind": "inject",
          "method": "<clinit>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/RenderPipelines#<clinit> TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/screen/MixinVideoSettingsScreen",
          "targets": [
            "net/minecraft/client/gui/screens/options/VideoSettingsScreen"
          ],
          "handler": "litematica_onVideoSettingsClose",
          "kind": "inject",
          "method": "removed",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/VideoSettingsScreen#removed TAIL"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/server/MixinMinecraftServer",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "litematica_onServerTickOmegaHackFixBecauseLunarBreaksMinecraftEvenThoughABooleanSupplierIsAlwaysSupposedToBeThereEvenAccordingToMojangMappingsButIsNotWhenYouAreRunningLunarAndTheyCannotExplainWhyThisWouldBreakButItDoesEvenThoughNothingHasChangedInMinecraftUnlessYouArePlayingWithLunar",
          "kind": "inject",
          "method": "logTickMethodTime",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#logTickMethodTime HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/world/MixinClientLevel",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "litematica_onHandleBlockUpdate",
          "kind": "inject",
          "method": "setServerVerifiedBlockState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#setServerVerifiedBlockState HEAD"
        },
        {
          "mixin": "fi/dy/masa/litematica/mixin/world/MixinLevelChunk",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "litematica_redirectIsRemote",
          "kind": "wrap-operation",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;isClientSide()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 39,
      "accessors": 32,
      "hooks": {
        "client_stopping": 1,
        "net_from_server": 6,
        "tick": 1
      },
      "wanted": {
        "net/minecraft/client/Minecraft#onResourceLoadFinished @TAIL": 1,
        "net/minecraft/client/Minecraft#startUseItem @TAIL": 1,
        "net/minecraft/client/Options#save @TAIL": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList @TAIL": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen#init @HEAD": 1,
        "net/minecraft/client/gui/screens/options/VideoSettingsScreen#removed @TAIL": 1,
        "net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl#handleCustomPayload @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#setServerVerifiedBlockState @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#useItemOn @HEAD": 1,
        "net/minecraft/client/renderer/BindGroupLayouts#<clinit> @TAIL": 1,
        "net/minecraft/client/renderer/GameRenderer#extractCamera @TAIL": 1,
        "net/minecraft/client/renderer/LevelRenderer#close @TAIL": 1,
        "net/minecraft/client/renderer/LevelRenderer#endFrame @TAIL": 1,
        "net/minecraft/client/renderer/LevelRenderer#executeOit @HEAD": 1,
        "net/minecraft/client/renderer/LevelRenderer#executeOutline @HEAD": 1,
        "net/minecraft/client/renderer/LevelRenderer#executeOutline @TAIL": 1,
        "net/minecraft/client/renderer/LevelRenderer#prepareChunkRenders @TAIL": 1,
        "net/minecraft/client/renderer/LevelRenderer#prepareChunkRendersIndirect @TAIL": 1,
        "net/minecraft/client/renderer/LevelRenderer#submitBlockEntities @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#submitEntities @RETURN": 1,
        "net/minecraft/client/renderer/RenderPipelines#<clinit> @TAIL": 1,
        "net/minecraft/client/renderer/debug/EntityHitboxDebugRenderer#emitGizmos @TAIL": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#allChanged @RETURN": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleBlockEntities @RETURN": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleEntities @RETURN": 1,
        "net/minecraft/client/resources/model/BlockStateDefinitions#<clinit> @RETURN": 1,
        "net/minecraft/server/MinecraftServer#logTickMethodTime @HEAD": 1,
        "net/minecraft/util/datafix/fixes/BlockStateData#register @HEAD": 1,
        "net/minecraft/world/item/BlockItem#getPlacementState @HEAD": 1,
        "net/minecraft/world/level/block/Block#popResource @HEAD": 1,
        "net/minecraft/world/level/block/ChestBlock#mirror @HEAD": 1,
        "net/minecraft/world/level/block/RailBlock#rotate @HEAD": 1,
        "net/minecraft/world/level/block/StairBlock#mirror @HEAD": 1
      },
      "wanted_calls": {
        "java/util/Collection#isEmpty @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/Minecraft#handleKeybinds @INVOKE": 1,
        "net/minecraft/client/Minecraft#startUseItem @INVOKE": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractLines @INVOKE (modify-arg)": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#performUseItemOn @INVOKE": 1,
        "net/minecraft/client/renderer/LevelRenderer#render @INVOKE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extract @INVOKE": 1,
        "net/minecraft/world/level/Level#isClientSide @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/phys/Vec3#subtract @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 504,
        "features": {
          "renderer": 1,
          "network": 1,
          "mixin": 52
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 504,
        "methods": 2980,
        "tried": 600,
        "completed": 221,
        "handlers_tried": 8,
        "handlers_completed": 1,
        "missing": {
          "[Lfi/dy/masa/litematica/gui/GuiPlacementConfiguration$ButtonListener$Type;#clone()Ljava/lang/Object;": 1,
          "[Lfi/dy/masa/litematica/gui/GuiSchematicManager$EditType;#clone()Ljava/lang/Object;": 4,
          "[Lfi/dy/masa/litematica/gui/GuiSchematicManager$ExportType;#clone()Ljava/lang/Object;": 4,
          "[Lfi/dy/masa/litematica/gui/GuiSchematicSaveBase$ButtonType;#clone()Ljava/lang/Object;": 1,
          "[Lfi/dy/masa/litematica/gui/Icons;#clone()Ljava/lang/Object;": 1,
          "[Lfi/dy/masa/litematica/gui/widgets/WidgetSchematicVerificationResult$ButtonListener$ButtonType;#clone()Ljava/lang/Object;": 1,
          "[Lfi/dy/masa/litematica/render/schematic/OverlayRenderType;#clone()Ljava/lang/Object;": 2,
          "[Lfi/dy/masa/litematica/tool/ToolMode;#clone()Ljava/lang/Object;": 2,
          "[Lfi/dy/masa/litematica/util/DebugHudMode;#clone()Ljava/lang/Object;": 4,
          "[Lfi/dy/masa/litematica/util/FileType;#clone()Ljava/lang/Object;": 1,
          "[Lfi/dy/masa/litematica/util/PositionUtils$Corner;#clone()Ljava/lang/Object;": 1,
          "[Lfi/dy/masa/litematica/util/ReplaceBehavior;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/ArrayListMultimap#get(Ljava/lang/Object;)Ljava/util/List;": 4,
          "com/google/common/collect/ArrayListMultimap#keySet()Ljava/util/Set;": 3,
          "com/google/common/collect/ArrayListMultimap#size()I": 6,
          "com/google/common/collect/HashMultimap#containsValue(Ljava/lang/Object;)Z": 1,
          "com/google/common/collect/HashMultimap#removeAll(Ljava/lang/Object;)Ljava/util/Set;": 1,
          "com/google/common/collect/ImmutableList#iterator()Lcom/google/common/collect/UnmodifiableIterator;": 3,
          "com/google/common/collect/ImmutableMap#builder()Lcom/google/common/collect/ImmutableMap$Builder;": 1,
          "com/google/common/util/concurrent/ListenableFuture#cancel(Z)Z": 1,
          "com/mojang/renderpearl/api/pipeline/RenderPipeline#getVertexFormatBinding(I)Lcom/mojang/renderpearl/api/vertex/VertexFormat;": 2,
          "com/mojang/serialization/JsonOps#INSTANCE": 1,
          "fi/dy/masa/litematica/gui/GuiAreaSelectionEditorNormal#getScreenHeight()I": 1,
          "fi/dy/masa/litematica/gui/GuiAreaSelectionEditorNormal#getScreenWidth()I": 3,
          "fi/dy/masa/litematica/gui/GuiAreaSelectionManager#getScreenHeight()I": 1,
          "fi/dy/masa/litematica/gui/GuiAreaSelectionManager#getScreenWidth()I": 1,
          "fi/dy/masa/litematica/gui/GuiMainMenu$ButtonListenerChangeMenu$ButtonType#ordinal()I": 1,
          "fi/dy/masa/litematica/gui/GuiMaterialListBrowserBase#drawContents(Lfi/dy/masa/malilib/render/GuiContext;IIF)V": 1,
          "fi/dy/masa/litematica/gui/GuiMaterialListBrowserBase#getScreenHeight()I": 2,
          "fi/dy/masa/litematica/gui/GuiMaterialListBrowserBase#getScreenWidth()I": 1,
          "fi/dy/masa/litematica/gui/GuiMaterialListBrowserBase#initGui()V": 1,
          "fi/dy/masa/litematica/gui/GuiMaterialListSaveBase#getScreenHeight()I": 1,
          "fi/dy/masa/litematica/gui/GuiSchematicManager$EditType#name()Ljava/lang/String;": 1,
          "fi/dy/masa/litematica/gui/GuiSchematicManager$EditType#ordinal()I": 1,
          "fi/dy/masa/litematica/gui/GuiSchematicManager$ExportType#name()Ljava/lang/String;": 1,
          "fi/dy/masa/litematica/gui/GuiSchematicManager$ExportType#ordinal()I": 1,
          "fi/dy/masa/litematica/gui/widgets/WidgetAreaSelectionEntry#getDirectoryEntry()Lfi/dy/masa/malilib/gui/widgets/WidgetFileBrowserBase$DirectoryEntry;": 1,
          "fi/dy/masa/litematica/gui/widgets/WidgetMaterialListBrowser#getLastSelectedEntry()Ljava/lang/Object;": 1,
          "fi/dy/masa/litematica/gui/widgets/WidgetSchematicEntry#isMouseOver(II)Z": 1,
          "fi/dy/masa/litematica/schematic/placement/SubRegionPlacement$RequiredEnabled#ordinal()I": 1,
          "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier$MismatchType#ordinal()I": 4,
          "fi/dy/masa/litematica/util/DebugHudMode#ordinal()I": 2,
          "fi/dy/masa/litematica/util/PlacementDeletionMode#ordinal()I": 2,
          "fi/dy/masa/litematica/util/ReplaceBehavior#ordinal()I": 1,
          "fi/dy/masa/litematica/world/ChunkSchematic#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "fi/dy/masa/litematica/world/ChunkSchematic#getPos()Lnet/minecraft/world/level/ChunkPos;": 1,
          "fi/dy/masa/malilib/compat/sodium/SodiumCompat#hasSodium()Z": 2,
          "fi/dy/masa/malilib/config/options/ConfigBoolean#getBooleanValue()Z": 9,
          "fi/dy/masa/malilib/config/options/ConfigDouble#getDoubleValue()D": 1,
          "fi/dy/masa/malilib/config/options/ConfigInteger#getIntegerValue()I": 5,
          "fi/dy/masa/malilib/config/options/ConfigOptionList#getOptionListValue()Lfi/dy/masa/malilib/config/IConfigOptionListEntry;": 6,
          "fi/dy/masa/malilib/gui/GuiRenderLayerEditBase#<init>()V": 1,
          "fi/dy/masa/malilib/gui/GuiRenderLayerEditBase#initGui()V": 1,
          "fi/dy/masa/malilib/gui/GuiTextFieldGeneric#charTypedWrapper(Lnet/minecraft/client/input/CharacterEvent;)Z": 1,
          "fi/dy/masa/malilib/gui/GuiTextFieldGeneric#getTextWrapper()Ljava/lang/String;": 1,
          "fi/dy/masa/malilib/gui/GuiTextFieldGeneric#getValueWrapper()Ljava/lang/String;": 1,
          "fi/dy/masa/malilib/gui/GuiTextFieldGeneric#keyPressedWrapper(Lnet/minecraft/client/input/KeyEvent;)Z": 1,
          "fi/dy/masa/malilib/gui/GuiTextFieldGeneric#mouseClickedWrapper(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "fi/dy/masa/malilib/gui/GuiTextFieldGeneric#setTextWrapper(Ljava/lang/String;)V": 1,
          "fi/dy/masa/malilib/gui/Message$MessageType#ERROR": 1,
          "fi/dy/masa/malilib/gui/widgets/WidgetFileBrowserBase#getBrowserWidthForTotalWidth(I)I": 1,
          "fi/dy/masa/malilib/gui/widgets/WidgetFileBrowserBase$DirectoryEntry#getDirectory()Ljava/nio/file/Path;": 1,
          "fi/dy/masa/malilib/util/GuiUtils#getCurrentScreen()Lnet/minecraft/client/gui/screens/Screen;": 1,
          "fi/dy/masa/malilib/util/StringUtils#translate(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 7,
          "fi/dy/masa/malilib/util/data/ItemType#getStack()Lnet/minecraft/world/item/ItemStack;": 1,
          "fi/dy/masa/malilib/util/data/json/JsonUtils#hasString(Lcom/google/gson/JsonObject;Ljava/lang/String;)Z": 1,
          "fi/dy/masa/malilib/util/position/LayerRange#getAxis()Lnet/minecraft/core/Direction$Axis;": 3,
          "fi/dy/masa/malilib/util/position/PositionUtils$CoordinateType#ordinal()I": 2,
          "it/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap#get(I)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/Object2IntOpenHashMap#clear()V": 1,
          "it/unimi/dsi/fastutil/objects/Object2IntOpenHashMap#getInt(Ljava/lang/Object;)I": 1,
          "it/unimi/dsi/fastutil/objects/Object2IntOpenHashMap#keySet()Lit/unimi/dsi/fastutil/objects/ObjectSet;": 2,
          "it/unimi/dsi/fastutil/objects/Object2ObjectOpenHashMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/lang/Runnable#run()V": 1,
          "java/nio/file/Files#exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 3,
          "java/util/HashSet#clear()V": 1,
          "java/util/Queue#poll()Ljava/lang/Object;": 1,
          "java/util/Set#clear()V": 3,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 2,
          "java/util/concurrent/ConcurrentHashMap#clear()V": 3,
          "java/util/concurrent/ConcurrentHashMap#containsKey(Ljava/lang/Object;)Z": 4,
          "java/util/concurrent/ConcurrentHashMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "java/util/concurrent/ConcurrentHashMap#size()I": 4,
          "java/util/concurrent/ConcurrentHashMap#values()Ljava/util/Collection;": 1,
          "java/util/concurrent/PriorityBlockingQueue#isEmpty()Z": 4,
          "java/util/concurrent/PriorityBlockingQueue#take()Ljava/lang/Object;": 1,
          "net/minecraft/client/DeltaTracker#getGameTimeDeltaPartialTick(Z)F": 1,
          "net/minecraft/client/Minecraft#getBlockEntityRenderDispatcher()Lnet/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher;": 1,
          "net/minecraft/client/Minecraft#getEntityRenderDispatcher()Lnet/minecraft/client/renderer/entity/EntityRenderDispatcher;": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 9,
          "net/minecraft/client/color/block/BlockColors#createDefault()Lnet/minecraft/client/color/block/BlockColors;": 1,
          "net/minecraft/client/renderer/GameRenderer#useImprovedTransparency()Z": 3,
          "net/minecraft/client/renderer/block/BlockModelRenderState#clear()V": 1,
          "net/minecraft/client/renderer/block/dispatch/BlockStateModel#collectParts(Lnet/minecraft/util/RandomSource;Ljava/util/List;)V": 2,
          "net/minecraft/client/renderer/block/dispatch/BlockStateModelPart#getQuads(Lnet/minecraft/core/Direction;)Ljava/util/List;": 1,
          "net/minecraft/client/renderer/chunk/ChunkSectionLayer#SOLID": 1,
          "net/minecraft/client/renderer/chunk/ChunkSectionLayer#values()[Lnet/minecraft/client/renderer/chunk/ChunkSectionLayer;": 1,
          "net/minecraft/client/resources/model/BlockStateDefinitions#getItemFrameFakeState(ZZ)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/core/BlockPos#ZERO": 5,
          "net/minecraft/core/BlockPos#getX()I": 5,
          "net/minecraft/core/BlockPos#relative(Lnet/minecraft/core/Direction;)Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/Direction#UP": 1,
          "net/minecraft/core/Direction#getAxis()Lnet/minecraft/core/Direction$Axis;": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/nbt/TagParser#parseCompoundFully(Ljava/lang/String;)Lnet/minecraft/nbt/CompoundTag;": 1,
          "net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket#x()I": 1,
          "net/minecraft/network/protocol/game/ClientboundSystemChatPacket#content()Lnet/minecraft/network/chat/Component;": 1,
          "net/minecraft/util/profiling/Profiler#get()Lnet/minecraft/util/profiling/ProfilerFiller;": 2,
          "net/minecraft/world/level/ChunkPos#pack()J": 3,
          "net/minecraft/world/level/ChunkPos#x()I": 2,
          "net/minecraft/world/level/block/ChestBlock#FACING": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 8,
          "net/minecraft/world/level/block/state/BlockState#getFluidState()Lnet/minecraft/world/level/material/FluidState;": 1,
          "net/minecraft/world/level/block/state/BlockState#setValue(Lnet/minecraft/world/level/block/state/properties/Property;Ljava/lang/Comparable;)Ljava/lang/Object;": 1,
          "net/minecraft/world/level/block/state/properties/BlockStateProperties#SLAB_TYPE": 1,
          "net/minecraft/world/level/block/state/properties/BlockStateProperties#WATERLOGGED": 2,
          "net/minecraft/world/level/block/state/properties/Property#getValue(Ljava/lang/String;)Ljava/util/Optional;": 1,
          "net/minecraft/world/level/block/state/properties/WallSide#NONE": 1,
          "net/minecraft/world/level/entity/EntityAccess#getUUID()Ljava/util/UUID;": 1,
          "net/minecraft/world/phys/BlockHitResult#getBlockPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/phys/shapes/BooleanOp#ONLY_FIRST": 1,
          "new com/google/gson/JsonObject": 1,
          "new fi/dy/masa/malilib/gui/button/ButtonGeneric": 1,
          "new it/unimi/dsi/fastutil/objects/Object2IntOpenHashMap": 3,
          "new net/minecraft/world/phys/AABB": 3,
          "org/apache/commons/lang3/tuple/Pair#of(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/commons/lang3/tuple/Pair;": 1
        },
        "runs": [
          {
            "class": "fi/dy/masa/litematica/schematic/placement/PlacementManagerTask",
            "method": "cx",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/placement/PlacementManagerTask",
            "method": "cz",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/materials/MaterialListUtils",
            "method": "createMaterialListFromItems",
            "desc": "(Ljava/util/Map;Lnet/minecraft/world/entity/player/Player;)Ljava/util/List;",
            "value": "obj#8"
          },
          {
            "class": "fi/dy/masa/litematica/render/infohud/InfoHud",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fi/dy/masa/litematica/render/infohud/InfoHud",
            "method": "toggleEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/render/infohud/InfoHud",
            "method": "shouldRender",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fi/dy/masa/litematica/gui/GuiRenderLayer",
            "method": "useAllTab",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fi/dy/masa/litematica/util/SchematicPlacingUtils",
            "method": "shouldPasteBlock",
            "desc": "(Lnet/minecraft/core/BlockPos;Lfi/dy/masa/litematica/util/PasteLayerBehavior;)Z",
            "value": "1"
          },
          {
            "class": "fi/dy/masa/litematica/util/SchematicPlacingUtils",
            "method": "shouldPasteEntity",
            "desc": "(Lnet/minecraft/world/phys/Vec3;Lfi/dy/masa/litematica/util/PasteLayerBehavior;)Z",
            "value": "1"
          },
          {
            "class": "fi/dy/masa/litematica/world/FakeLightingProvider$FakeLightingView",
            "method": "hasLightWork",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/world/FakeLightingProvider$FakeLightingView",
            "method": "runLightUpdates",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/gui/widgets/WidgetAreaSelectionEntry$SelectionRenamer",
            "method": "copy",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/tool/ToolMode",
            "method": "getUsesSchematic",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/tool/ToolMode",
            "method": "getUsesAreaSelection",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fi/dy/masa/litematica/tool/ToolMode",
            "method": "getUsesBlockPrimary",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/tool/ToolMode",
            "method": "getUsesBlockSecondary",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/mixin/render/MixinLevelRenderer",
            "method": "useIndirect",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/render/LitematicaDebugHud",
            "method": "isLeft",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fi/dy/masa/litematica/render/LitematicaDebugHud",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "fi/dy/masa/litematica/gui/GuiMaterialListSaveBase",
            "method": "getSelectionListener",
            "desc": "()Lfi/dy/masa/malilib/gui/interfaces/ISelectionListener;",
            "value": "obj#222"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/conversion/SchematicConversionMaps$ConversionDynamic",
            "method": "idMeta",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/gui/GuiAreaSelectionEditorNormal",
            "method": "getSelectionListener",
            "desc": "()Lfi/dy/masa/malilib/gui/interfaces/ISelectionListener;",
            "value": "obj#356"
          },
          {
            "class": "fi/dy/masa/litematica/gui/widgets/WidgetMaterialListBrowser",
            "method": "displayHoverInfo",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/util/RayTraceUtils$RayTraceWrapper",
            "method": "getHitCorner",
            "desc": "()Lfi/dy/masa/litematica/util/PositionUtils$Corner;",
            "value": "obj#23"
          },
          {
            "class": "fi/dy/masa/litematica/data/SchematicHolder",
            "method": "getInstance",
            "desc": "()Lfi/dy/masa/litematica/data/SchematicHolder;",
            "value": "obj#379"
          },
          {
            "class": "fi/dy/masa/litematica/data/SchematicHolder",
            "method": "removeSchematic",
            "desc": "(Lfi/dy/masa/litematica/schematic/LitematicaSchematic;)Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/data/SchematicHolder",
            "method": "getAllSchematics",
            "desc": "()Ljava/util/Collection;",
            "value": "obj#392"
          },
          {
            "class": "fi/dy/masa/litematica/gui/Icons",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/gui/Icons",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/gui/Icons",
            "method": "getU",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/gui/Icons",
            "method": "getV",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/compat/jade/JadeCompat",
            "method": "getJadeShift",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/render/schematic/ChunkRenderDataSchematic$1",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fi/dy/masa/litematica/world/ChunkSchematic",
            "method": "getTimeCreated",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/world/ChunkSchematic",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier",
            "method": "getShouldRenderText",
            "desc": "(Lfi/dy/masa/litematica/render/infohud/RenderPhase;)Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier",
            "method": "isPaused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier",
            "method": "getTotalChunks",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier",
            "method": "getUnseenChunks",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier",
            "method": "getSchematicTotalBlocks",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier",
            "method": "getRealWorldTotalBlocks",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier",
            "method": "getCorrectStatesCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/verifier/SchematicVerifier",
            "method": "getSortInReverse",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/render/schematic/OverlayRenderType",
            "method": "translucent",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/projects/SchematicProjectsManager",
            "method": "hasProjectOpen",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/projects/SchematicProjectsManager",
            "method": "pasteCurrentVersionToWorld",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/projects/SchematicProjectsManager",
            "method": "deleteLastSeenArea",
            "desc": "(Lnet/minecraft/client/Minecraft;)Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/schematic/projects/SchematicProjectsManager",
            "method": "deleteBlocksByPlacement",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/gui/GuiMaterialListSave",
            "method": "createButtonListener",
            "desc": "(Lfi/dy/masa/litematica/gui/GuiMaterialListSaveBase$ButtonType;)Lfi/dy/masa/malilib/gui/button/IButtonActionListener;",
            "value": "obj#553"
          },
          {
            "class": "fi/dy/masa/litematica/materials/MaterialListEntry",
            "method": "getCountTotal",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/materials/MaterialListEntry",
            "method": "getCountMissing",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/materials/MaterialListEntry",
            "method": "getCountMismatched",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/materials/MaterialListEntry",
            "method": "getCountAvailable",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/materials/MaterialListEntry",
            "method": "hashCode",
            "desc": "()I",
            "value": "31"
          },
          {
            "class": "fi/dy/masa/litematica/materials/MaterialListEntry",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/gui/GuiAreaSelectionManager",
            "method": "getSelectionListener",
            "desc": "()Lfi/dy/masa/malilib/gui/interfaces/ISelectionListener;",
            "value": "obj#568"
          },
          {
            "class": "fi/dy/masa/litematica/render/OverlayRenderer",
            "method": "calculateCompatYShift",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/util/EasyPlaceUtils",
            "method": "isMatchingStatePlacementRestriction",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "fi/dy/masa/litematica/util/EasyPlaceUtils",
            "method": "easyPlaceIsPositionCached",
            "desc": "(Lnet/minecraft/core/BlockPos;)Z",
            "value": "0"
          }
        ],
        "insns": 4965
      },
      "verdict": "partly",
      "summary": "8 of 39 listening patch sites land on a Horizon hook (20%); of 50 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "lithium",
      "name": "Lithium",
      "version": "0.25.3+mc26.2",
      "license": "LGPL-3.0-only",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "net/caffeinemc/mods/lithium/fabric/LithiumFabricMod"
        }
      ],
      "mixin_configs": [
        "lithium.mixins.json",
        "lithium-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 701,
      "methods": 2493,
      "sites": [
        {
          "mixin": "net/caffeinemc/mods/lithium/fabric/mixin/block/hopper/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "updateHopperOnUpdateSuppression",
          "kind": "inject",
          "method": "setBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;updatePOIOnBlockStateChange(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": "block_changed",
          "why": "a block changes"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/fabric/mixin/compat/worldedit/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "updateHoppersIfWorldEditPresent",
          "kind": "inject",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;onPlace(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Z)V",
          "cancellable": false,
          "hook": "block_changed",
          "why": "a block changes"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/fabric/mixin/util/initialization/FuelValuesMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/FuelValues"
          ],
          "handler": "initializeBlockInfo",
          "kind": "inject",
          "method": "vanillaBurnTimes",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/FuelValues#vanillaBurnTimes RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/fabric/mixin/util/inventory_change_listening/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "emitRemovedOnSetCachedState",
          "kind": "inject",
          "method": "setBlockState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setBlockState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/non_poi_block_search/HoglinSpecificSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/HoglinSpecificSensor"
          ],
          "handler": "redirectFindNearestRepellent",
          "kind": "redirect",
          "method": "doTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/sensing/HoglinSpecificSensor;findNearestRepellent(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/monster/hoglin/Hoglin;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/non_poi_block_search/PiglinSpecificSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/PiglinSpecificSensor"
          ],
          "handler": "redirectFindNearestRepellent",
          "kind": "redirect",
          "method": "doTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/sensing/PiglinSpecificSensor;findNearestRepellent(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/non_poi_block_search/RemoveBlockGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/RemoveBlockGoal"
          ],
          "handler": "redirectFindNearestBlock",
          "kind": "redirect",
          "method": "canUse",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/goal/RemoveBlockGoal;findNearestBlock()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/FlyNodeEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/FlyNodeEvaluator"
          ],
          "handler": "getNodeTypeFromNeighbors",
          "kind": "redirect",
          "method": "getPathType",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/pathfinder/FlyNodeEvaluator;checkNeighbourBlocks(Lnet/minecraft/world/level/pathfinder/PathfindingContext;IIILnet/minecraft/world/level/pathfinder/PathType;)Lnet/minecraft/world/level/pathfinder/PathType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathNavigationRegionMixin",
          "targets": [
            "net/minecraft/world/level/PathNavigationRegion"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/PathNavigationRegion#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathNavigationRegionMixin",
          "targets": [
            "net/minecraft/world/level/PathNavigationRegion"
          ],
          "handler": "getBlockState",
          "kind": "overwrite",
          "method": "getBlockState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathNavigationRegionMixin",
          "targets": [
            "net/minecraft/world/level/PathNavigationRegion"
          ],
          "handler": "getFluidState",
          "kind": "overwrite",
          "method": "getFluidState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathfindingContextMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/PathfindingContext"
          ],
          "handler": "getWorldIfNonNull",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;level()Lnet/minecraft/world/level/Level;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathfindingContextMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/PathfindingContext"
          ],
          "handler": "getBlockPosIfNonNull",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;blockPosition()Lnet/minecraft/core/BlockPos;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/WalkNodeEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/WalkNodeEvaluator"
          ],
          "handler": "getLithiumCachedCommonNodeType",
          "kind": "inject",
          "method": "getPathTypeFromState",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/level/BlockGetter;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/pathfinder/WalkNodeEvaluator#getPathTypeFromState INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/WalkNodeEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/WalkNodeEvaluator"
          ],
          "handler": "doNotIteratePositionsIfLithiumSinglePosCall",
          "kind": "inject",
          "method": "checkNeighbourBlocks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/pathfinder/PathfindingContext;getPathTypeFromState(III)Lnet/minecraft/world/level/pathfinder/PathType;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/pathfinder/WalkNodeEvaluator#checkNeighbourBlocks INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/WalkNodeEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/WalkNodeEvaluator"
          ],
          "handler": "getNodeTypeFromNeighbors",
          "kind": "redirect",
          "method": "getPathTypeStatic",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/pathfinder/WalkNodeEvaluator;checkNeighbourBlocks(Lnet/minecraft/world/level/pathfinder/PathfindingContext;IIILnet/minecraft/world/level/pathfinder/PathType;)Lnet/minecraft/world/level/pathfinder/PathType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "getRandom",
          "kind": "overwrite",
          "method": "getRandom",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "find",
          "kind": "overwrite",
          "method": "find",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "findClosestWithType",
          "kind": "overwrite",
          "method": "findClosestWithType",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "findClosest",
          "kind": "overwrite",
          "method": "findClosest",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "findClosest",
          "kind": "overwrite",
          "method": "findClosest",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "getCountInRange",
          "kind": "overwrite",
          "method": "getCountInRange",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "getInRange",
          "kind": "overwrite",
          "method": "getInRange",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/SectionStorageMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SectionStorage"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/storage/SectionStorage#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/fast_portals/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "ensureLoadedAndValid",
          "kind": "overwrite",
          "method": "ensureLoadedAndValid",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/fast_portals/PortalForcerMixin",
          "targets": [
            "net/minecraft/world/level/portal/PortalForcer"
          ],
          "handler": "findClosestPortalPosition",
          "kind": "overwrite",
          "method": "findClosestPortalPosition",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/AcquirePoiMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/AcquirePoi"
          ],
          "handler": "takeOptimized",
          "kind": "redirect",
          "method": "lambda$create$7",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;take(Ljava/util/function/Predicate;Ljava/util/function/BiPredicate;Lnet/minecraft/core/BlockPos;I)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/AcquirePoiMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/AcquirePoi"
          ],
          "handler": "getNull",
          "kind": "redirect",
          "method": "lambda$create$3",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;findAllClosestFirstWithType(Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lnet/minecraft/core/BlockPos;ILnet/minecraft/world/entity/ai/village/poi/PoiManager$Occupancy;)Ljava/util/stream/Stream;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/AcquirePoiMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/AcquirePoi"
          ],
          "handler": "getNClosestFirstWithType",
          "kind": "redirect",
          "method": "lambda$create$3",
          "at": "INVOKE",
          "at_target": "Ljava/util/stream/Stream;limit(J)Ljava/util/stream/Stream;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/LocateHidingPlaceMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LocateHidingPlace"
          ],
          "handler": "useFasterPOILookup",
          "kind": "redirect",
          "method": "lambda$create$6",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;getRandom(Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lnet/minecraft/world/entity/ai/village/poi/PoiManager$Occupancy;Lnet/minecraft/core/BlockPos;ILnet/minecraft/util/RandomSource;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/LocateHidingPlaceMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LocateHidingPlace"
          ],
          "handler": "useFasterPOILookup",
          "kind": "redirect",
          "method": "lambda$create$2",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;find(Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lnet/minecraft/core/BlockPos;ILnet/minecraft/world/entity/ai/village/poi/PoiManager$Occupancy;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/RaiderEntityAttackHomeGoalMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raider$RaiderMoveThroughVillageGoal"
          ],
          "handler": "redirect",
          "kind": "redirect",
          "method": "hasSuitablePoi",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;getRandom(Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lnet/minecraft/world/entity/ai/village/poi/PoiManager$Occupancy;Lnet/minecraft/core/BlockPos;ILnet/minecraft/util/RandomSource;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/RaidMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raid"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/raid/Raid#tick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/RaidMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raid"
          ],
          "handler": "updateBossbar",
          "kind": "overwrite",
          "method": "updateBossbar",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/Raider$ObtainRaidLeaderBannerGoalMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raider$ObtainRaidLeaderBannerGoal"
          ],
          "handler": "getOminousBanner",
          "kind": "redirect",
          "method": "cannotPickUpBanner",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/raid/Raid;getOminousBannerInstance(Lnet/minecraft/core/HolderGetter;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/RaiderMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raider"
          ],
          "handler": "getOminousBanner",
          "kind": "redirect",
          "method": "pickUpItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/raid/Raid;getOminousBannerInstance(Lnet/minecraft/core/HolderGetter;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/RaiderMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raider"
          ],
          "handler": "getOminousBanner",
          "kind": "redirect",
          "method": "isCaptain",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/raid/Raid;getOminousBannerInstance(Lnet/minecraft/core/HolderGetter;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/sensor/replace_streams/tempting/TemptingSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/TemptingSensor"
          ],
          "handler": "doTick",
          "kind": "overwrite",
          "method": "doTick",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/sensor/secondary_poi/SecondaryPoiSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor"
          ],
          "handler": "skipUselessSense",
          "kind": "inject",
          "method": "doTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor#doTick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "startEachNonRunningBehavior",
          "kind": "overwrite",
          "method": "startEachNonRunningBehavior",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "reinitializeBrainCollections",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "reinitializeTasksSorted",
          "kind": "inject",
          "method": "addActivity",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#addActivity RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "reinitializeTasksSorted",
          "kind": "inject",
          "method": "removeAllBehaviors",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#removeAllBehaviors RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "onPossibleActivitiesChanged",
          "kind": "inject",
          "method": "setActiveActivity",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#setActiveActivity INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "removeStoppedTask",
          "kind": "inject",
          "method": "stopAll",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/BehaviorControl;doStop(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#stopAll INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "removeTaskIfStopped",
          "kind": "inject",
          "method": "tickEachRunningBehavior",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/BehaviorControl;tickOrStop(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#tickEachRunningBehavior INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "addStartedTasks",
          "kind": "modify-variable",
          "method": "startEachNonRunningBehavior",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/BehaviorControl;tryStart(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/Behavior"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/behavior/Behavior#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/Behavior"
          ],
          "handler": "hasRequiredMemories",
          "kind": "overwrite",
          "method": "hasRequiredMemories",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "increaseMemoryModCount",
          "kind": "inject",
          "method": "registerMemory",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#registerMemory RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "increaseMemoryModCount",
          "kind": "inject",
          "method": "clearMemories",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#clearMemories RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "increaseMemoryModCount",
          "kind": "inject",
          "method": "eraseMemory",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#eraseMemory INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "tickExpiringSlotsTrackingChanges",
          "kind": "modify-arg",
          "method": "forgetOutdatedMemories",
          "at": "INVOKE",
          "at_target": "Ljava/util/Collection;forEach(Ljava/util/function/Consumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "clearTrackingChanges",
          "kind": "wrap-operation",
          "method": "setMemoryInternal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "clearTrackingChanges",
          "kind": "wrap-operation",
          "method": "setMemoryInternal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "setTrackingChanges",
          "kind": "wrap-operation",
          "method": "setMemoryInternal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;set(Ljava/lang/Object;J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "setTrackingChanges",
          "kind": "wrap-operation",
          "method": "setMemoryInternal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;set(Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/MemorySlotMixin",
          "targets": [
            "net/minecraft/world/entity/ai/memory/MemorySlot"
          ],
          "handler": "ensureConsistency",
          "kind": "inject",
          "method": "set",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/memory/MemorySlot#set RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/replace_streams/GateBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/GateBehavior"
          ],
          "handler": "tickOrStop",
          "kind": "overwrite",
          "method": "tickOrStop",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/replace_streams/GateBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/GateBehavior"
          ],
          "handler": "doStop",
          "kind": "overwrite",
          "method": "doStop",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/replace_streams/GateBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/GateBehavior"
          ],
          "handler": "tryStart",
          "kind": "wrap-operation",
          "method": "tryStart",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/GateBehavior$RunningPolicy;apply(Ljava/util/stream/Stream;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/run/long_jump_weighted_choice/LongJumpToRandomPosMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos"
          ],
          "handler": "setTargets",
          "kind": "inject",
          "method": "start",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos;betweenClosedStream(IIIIII)Ljava/util/stream/Stream;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos#start INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/run/long_jump_weighted_choice/LongJumpToRandomPosMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos"
          ],
          "handler": "getRandomFast",
          "kind": "wrap-operation",
          "method": "getJumpCandidate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/random/WeightedRandom;getRandomItem(Lnet/minecraft/util/RandomSource;Ljava/util/List;Ljava/util/function/ToIntFunction;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/run/long_jump_weighted_choice/LongJumpToRandomPosMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos"
          ],
          "handler": "skipRemoveIfAlreadyRemoved",
          "kind": "redirect",
          "method": "getJumpCandidate",
          "at": "INVOKE",
          "at_target": "Ljava/util/Optional;ifPresent(Ljava/util/function/Consumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_behaviors/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "filterSentinels",
          "kind": "wrap-operation",
          "method": "addActivity",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/ImmutableList;iterator()Lcom/google/common/collect/UnmodifiableIterator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_behaviors/nitwit_job_search/VillagerGoalPackagesMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/VillagerGoalPackages"
          ],
          "handler": "returnNullIfAcquirePoiIsUseless",
          "kind": "redirect",
          "method": "getCorePackage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/AcquirePoi;create(Ljava/util/function/Predicate;Lnet/minecraft/world/entity/ai/memory/MemoryModuleType;Lnet/minecraft/world/entity/ai/memory/MemoryModuleType;ZLjava/util/Optional;Ljava/util/function/BiPredicate;)Lnet/minecraft/world/entity/ai/behavior/BehaviorControl;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_sensors/baby_specific_sensors/AgeableMobMixin",
          "targets": [
            "net/minecraft/world/entity/AgeableMob"
          ],
          "handler": "disableItemSensor",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/AgeableMob#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_sensors/baby_specific_sensors/AgeableMobMixin",
          "targets": [
            "net/minecraft/world/entity/AgeableMob"
          ],
          "handler": "handleParentSensor",
          "kind": "inject",
          "method": "onSyncedDataUpdated",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/AgeableMob;refreshDimensions()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/AgeableMob#onSyncedDataUpdated INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_sensors/goat_item_sensor/GoatMixin",
          "targets": [
            "net/minecraft/world/entity/animal/goat/Goat"
          ],
          "handler": "disableItemSensor",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/goat/Goat#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/chunk_random/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "redirectTickGetRandomPosInChunk",
          "kind": "redirect",
          "method": "tickChunk",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getBlockRandomPos(IIII)Lnet/minecraft/core/BlockPos;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/chunk_random/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "immutablePos",
          "kind": "modify-arg",
          "method": "tickChunk",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;randomTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/chunk_random/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "immutablePos2",
          "kind": "modify-arg",
          "method": "tickChunk",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/material/FluidState;randomTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/composter/ComposterMixin$ComposterBlockComposterInventoryMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock$InputContainer"
          ],
          "handler": "getSlotsForFace",
          "kind": "overwrite",
          "method": "getSlotsForFace",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/composter/ComposterMixin$ComposterBlockDummyInventoryMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock$EmptyContainer"
          ],
          "handler": "getSlotsForFace",
          "kind": "overwrite",
          "method": "getSlotsForFace",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/composter/ComposterMixin$ComposterBlockFullComposterInventoryMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock$OutputContainer"
          ],
          "handler": "getSlotsForFace",
          "kind": "overwrite",
          "method": "getSlotsForFace",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/deep_passengers/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "getIndirectPassengers",
          "kind": "overwrite",
          "method": "getIndirectPassengers",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/deep_passengers/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "getIndirectPassengersStream",
          "kind": "overwrite",
          "method": "getIndirectPassengersStream",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/deep_passengers/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "getSelfAndPassengers",
          "kind": "overwrite",
          "method": "getSelfAndPassengers",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/deep_passengers/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "getPassengersAndSelf",
          "kind": "overwrite",
          "method": "getPassengersAndSelf",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/entity_iteration/EntitySectionMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySection"
          ],
          "handler": "directIterator",
          "kind": "redirect",
          "method": "getEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/ClassInstanceMultiMap;iterator()Ljava/util/Iterator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/entity_tracker/ChunkMap$TrackedEntityMixin",
          "targets": [
            "net/minecraft/server/level/ChunkMap$TrackedEntity"
          ],
          "handler": "useFasterCollection",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/Sets;newIdentityHashSet()Ljava/util/Set;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/enum_values/piston_block/PistonBaseBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/piston/PistonBaseBlock"
          ],
          "handler": "removeAllocation",
          "kind": "redirect",
          "method": "getNeighborSignal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;values()[Lnet/minecraft/core/Direction;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/enum_values/piston_handler/PistonStructureResolverMixin",
          "targets": [
            "net/minecraft/world/level/block/piston/PistonStructureResolver"
          ],
          "handler": "removeAllocation",
          "kind": "redirect",
          "method": "addBranchingBlocks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;values()[Lnet/minecraft/core/Direction;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/enum_values/redstone_wire/RedStoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedStoneWireBlock"
          ],
          "handler": "removeAllocation1",
          "kind": "redirect",
          "method": "affectNeighborsAfterRemoval",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;values()[Lnet/minecraft/core/Direction;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/enum_values/redstone_wire/RedStoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedStoneWireBlock"
          ],
          "handler": "removeAllocation2",
          "kind": "redirect",
          "method": "checkCornerChangeAt",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;values()[Lnet/minecraft/core/Direction;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/explosion_behavior/EntityBasedExplosionDamageCalculatorMixin",
          "targets": [
            "net/minecraft/world/level/EntityBasedExplosionDamageCalculator"
          ],
          "handler": "getBlockExplosionResistance",
          "kind": "overwrite",
          "method": "getBlockExplosionResistance",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin$Type",
          "targets": [
            "net/minecraft/nbt/CompoundTag$1"
          ],
          "handler": "useFasterCollection",
          "kind": "modify-variable",
          "method": "loadCompound",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lcom/google/common/collect/Maps;newHashMap()Ljava/util/HashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin$Type",
          "targets": [
            "net/minecraft/nbt/CompoundTag$1"
          ],
          "handler": "removeOldMapAlloc",
          "kind": "redirect",
          "method": "loadCompound",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/Maps;newHashMap()Ljava/util/HashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin",
          "targets": [
            "net/minecraft/nbt/CompoundTag"
          ],
          "handler": "useFasterCollection",
          "kind": "modify-arg",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/nbt/CompoundTag;<init>(Ljava/util/Map;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin",
          "targets": [
            "net/minecraft/nbt/CompoundTag"
          ],
          "handler": "removeOldMapAlloc",
          "kind": "redirect",
          "method": "<init>",
          "at": "NEW",
          "at_target": "()Ljava/util/HashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin",
          "targets": [
            "net/minecraft/nbt/CompoundTag"
          ],
          "handler": "copy",
          "kind": "overwrite",
          "method": "copy",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/flatten_states/FluidStateMixin",
          "targets": [
            "net/minecraft/world/level/material/FluidState"
          ],
          "handler": "initFluidCache",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/material/FluidState#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/flatten_states/FluidStateMixin",
          "targets": [
            "net/minecraft/world/level/material/FluidState"
          ],
          "handler": "isEmpty",
          "kind": "overwrite",
          "method": "isEmpty",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/fluid/flow/FlowingFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid"
          ],
          "handler": "isSign",
          "kind": "redirect",
          "method": "canHoldAnyFluid",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;is(Lnet/minecraft/tags/TagKey;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/fluid/flow/FlowingFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid"
          ],
          "handler": "getSpread",
          "kind": "inject",
          "method": "getSpread",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/material/FlowingFluid#getSpread HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/fluid/flow/FlowingFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid"
          ],
          "handler": "canPassThrough",
          "kind": "overwrite",
          "method": "canPassThrough",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/fluid/flow/FlowingFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid"
          ],
          "handler": "isWaterHole",
          "kind": "overwrite",
          "method": "isWaterHole",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/AbstractContainerMenuMixin",
          "targets": [
            "net/minecraft/world/inventory/AbstractContainerMenu"
          ],
          "handler": "getFastOutputStrength",
          "kind": "inject",
          "method": "getRedstoneSignalFromContainer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/Container;getContainerSize()I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/AbstractContainerMenu#getRedstoneSignalFromContainer INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/BlockBehaviourMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour"
          ],
          "handler": "notifyOnShapeUpdate",
          "kind": "inject",
          "method": "updateShape",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour#updateShape HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "isAlwaysAssignable",
          "kind": "redirect",
          "method": "find",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Class;isAssignableFrom(Ljava/lang/Class;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/ComposterMixin$ComposterBlockComposterInventoryMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock$InputContainer"
          ],
          "handler": "resetDirty",
          "kind": "inject",
          "method": "setChanged",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/ComposterBlock$InputContainer;removeItemNoUpdate(I)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/ComposterBlock$InputContainer#setChanged INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/EntityDataAccessorMixin",
          "targets": [
            "net/minecraft/server/commands/data/EntityDataAccessor"
          ],
          "handler": "updateEntityTrackerEngine",
          "kind": "inject",
          "method": "setData",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;setUUID(Ljava/util/UUID;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/commands/data/EntityDataAccessor#setData INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "getExtractInventory",
          "kind": "redirect",
          "method": "suckInItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getSourceContainer(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/block/entity/Hopper;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/Container;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumInsert",
          "kind": "inject",
          "method": "ejectItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;isFullContainer(Lnet/minecraft/world/Container;Lnet/minecraft/core/Direction;)Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#ejectItems INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "getLithiumOutputInventory",
          "kind": "redirect",
          "method": "ejectItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getAttachedContainer(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/HopperBlockEntity;)Lnet/minecraft/world/Container;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumExtract",
          "kind": "inject",
          "method": "suckInItems",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/Direction;DOWN:Lnet/minecraft/core/Direction;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#suckInItems FIELD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumHopperIsFull",
          "kind": "redirect",
          "method": "tryMoveItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;inventoryFull()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumHopperIsEmpty",
          "kind": "redirect",
          "method": "tryMoveItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;isEmpty()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumGetInputItemEntities",
          "kind": "redirect",
          "method": "suckInItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getItemsAtAndAbove(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/block/entity/Hopper;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "invalidateOnSetCachedState",
          "kind": "inject",
          "method": "setBlockState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#setBlockState HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "checkSleepingConditions",
          "kind": "inject",
          "method": "pushItemsTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;tryMoveItems(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/entity/HopperBlockEntity;Ljava/util/function/BooleanSupplier;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#pushItemsTick INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/HopperBlock"
          ],
          "handler": "updateBlockEntity",
          "kind": "inject",
          "method": "neighborChanged",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/HopperBlock#neighborChanged HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/HopperBlock"
          ],
          "handler": "workAroundVanillaUpdateSuppression",
          "kind": "inject",
          "method": "onPlace",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/HopperBlock;checkPoweredState(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/HopperBlock#onPlace INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/OldMinecartBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior"
          ],
          "handler": "avoidNotifyingMovementListeners",
          "kind": "inject",
          "method": "moveAlongTrack",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/OldMinecartBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior"
          ],
          "handler": "notifyMovementListeners",
          "kind": "inject",
          "method": "moveAlongTrack",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/moving_block_shapes/PistonMovingBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/piston/PistonMovingBlockEntity"
          ],
          "handler": "skipVoxelShapeUnion",
          "kind": "inject",
          "method": "getCollisionShape",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;getStepX()I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/piston/PistonMovingBlockEntity#getCollisionShape INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/redstone_wire/DefaultRedstoneWireEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/redstone/DefaultRedstoneWireEvaluator"
          ],
          "handler": "calculateTargetStrengthFaster",
          "kind": "inject",
          "method": "calculateTargetStrength",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/redstone/DefaultRedstoneWireEvaluator#calculateTargetStrength HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/redstone_wire/RedStoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedStoneWireBlock"
          ],
          "handler": "getBlockSignalFaster",
          "kind": "inject",
          "method": "getBlockSignal",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RedStoneWireBlock#getBlockSignal HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/redstone_wire/RedstoneWireEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/redstone/RedstoneWireEvaluator"
          ],
          "handler": "getIncomingWireSignalFaster",
          "kind": "inject",
          "method": "getIncomingWireSignal",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/redstone/RedstoneWireEvaluator#getIncomingWireSignal HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block_pattern_matching/BlockPatternMixin",
          "targets": [
            "net/minecraft/world/level/block/state/pattern/BlockPattern"
          ],
          "handler": "countRequiredBlocksBeforeExpensiveSearch",
          "kind": "inject",
          "method": "find",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos;offset(III)Lnet/minecraft/core/BlockPos;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/pattern/BlockPattern#find INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block_pattern_matching/EnderDragonFightMixin",
          "targets": [
            "net/minecraft/world/level/dimension/end/EnderDragonFight"
          ],
          "handler": "setPatternToDragonPattern",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/dimension/end/EnderDragonFight#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/cached_hashcode/FlowingFluid$BlockStatePairKeyMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey"
          ],
          "handler": "generateHash",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/cached_hashcode/FlowingFluid$BlockStatePairKeyMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey"
          ],
          "handler": "hashCode",
          "kind": "overwrite",
          "method": "hashCode",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/entity_class_groups/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "add",
          "kind": "modify-variable",
          "method": "add",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/entity_class_groups/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "remove",
          "kind": "modify-variable",
          "method": "remove",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "setBlockStateNoLocking",
          "kind": "redirect",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunkSection;setBlockState(IIILnet/minecraft/world/level/block/state/BlockState;Z)Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "removeLockHelper",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "removeLockHelper",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "removeLockHelper",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "acquire",
          "kind": "overwrite",
          "method": "acquire",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "release",
          "kind": "overwrite",
          "method": "release",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/SimpleBitStorageMixin",
          "targets": [
            "net/minecraft/util/SimpleBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "getAndSet",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/SimpleBitStorageMixin",
          "targets": [
            "net/minecraft/util/SimpleBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "set",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/SimpleBitStorageMixin",
          "targets": [
            "net/minecraft/util/SimpleBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "get",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/ZeroBitStorageMixin",
          "targets": [
            "net/minecraft/util/ZeroBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "getAndSet",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/ZeroBitStorageMixin",
          "targets": [
            "net/minecraft/util/ZeroBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "set",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/ZeroBitStorageMixin",
          "targets": [
            "net/minecraft/util/ZeroBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "get",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/serialization/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "pack",
          "kind": "overwrite",
          "method": "pack",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/serialization/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "returnDummyInstance",
          "kind": "wrap-operation",
          "method": "count",
          "at": "NEW",
          "at_target": "()Lit/unimi/dsi/fastutil/ints/Int2IntOpenHashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/serialization/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "getFastCountingLambda",
          "kind": "modify-arg",
          "method": "count",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/BitStorage;getAll(Ljava/util/function/IntConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/serialization/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "fastForEachAndCancelMethod",
          "kind": "inject",
          "method": "count",
          "at": "INVOKE",
          "at_target": "Lit/unimi/dsi/fastutil/ints/Int2IntOpenHashMap;int2IntEntrySet()Lit/unimi/dsi/fastutil/ints/Int2IntMap$FastEntrySet;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#count INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/base_tick/unused_water_supply/AgeableWaterCreatureMixin",
          "targets": [
            "net/minecraft/world/entity/animal/AgeableWaterCreature"
          ],
          "handler": "isServerSide",
          "kind": "wrap-with-condition",
          "method": "baseTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/AgeableWaterCreature;handleAirSupply(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/AllayMixin",
          "targets": [
            "net/minecraft/world/entity/animal/allay/Allay"
          ],
          "handler": "isServerSide",
          "kind": "wrap-with-condition",
          "method": "mobInteract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/Brain;setMemory(Lnet/minecraft/world/entity/ai/memory/MemoryModuleType;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/CopperGolemMixin",
          "targets": [
            "net/minecraft/world/entity/animal/golem/CopperGolem"
          ],
          "handler": "isServerSide",
          "kind": "wrap-with-condition",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/Brain;setMemory(Lnet/minecraft/world/entity/ai/memory/MemoryModuleType;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "doNotCreateClientBrain",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;makeBrain(Lnet/minecraft/world/entity/ai/Brain$Packed;)Lnet/minecraft/world/entity/ai/Brain;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/MemorySlotMixin",
          "targets": [
            "net/minecraft/world/entity/ai/memory/MemorySlot"
          ],
          "handler": "cancelIfDummyMemorySlot",
          "kind": "inject",
          "method": "set",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/memory/MemorySlot#set HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/particle/biome_particles/AmbientParticleSettingsMixin",
          "targets": [
            "net/minecraft/world/attribute/AmbientParticle"
          ],
          "handler": "findMaximumChance",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/attribute/AmbientParticle#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/particle/biome_particles/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "evaluateChanceEarly",
          "kind": "redirect",
          "method": "doAnimateTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;isCollisionShapeFullBlock(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/attributes/AttributeMapMixin",
          "targets": [
            "net/minecraft/world/entity/ai/attributes/AttributeMap"
          ],
          "handler": "initCollections",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/attributes/AttributeMap#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/brain/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "reinitializeBrainCollections",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/entity_by_type/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/ClassInstanceMultiMap#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/entity_filtering/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "find",
          "kind": "overwrite",
          "method": "find",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/entity_ticking/EntityTickListMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntityTickList"
          ],
          "handler": "ensureActiveIsNotIterated",
          "kind": "overwrite",
          "method": "ensureActiveIsNotIterated",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/mob_spawning/MobSpawnSettingsMixin",
          "targets": [
            "net/minecraft/world/level/biome/MobSpawnSettings"
          ],
          "handler": "reinit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/biome/MobSpawnSettings#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/mob_spawning/WeightedListMixin",
          "targets": [
            "net/minecraft/util/random/WeightedList"
          ],
          "handler": "init",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;copyOf(Ljava/util/Collection;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/debug/palette/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "checkConsistency",
          "kind": "inject",
          "method": "read",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#read RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "trySkip",
          "kind": "inject",
          "method": "flushStep",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#flushStep HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "avoidAlloc",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;makeEnumMap(Ljava/lang/Class;Ljava/util/function/Function;)Ljava/util/Map;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "avoidAlloc",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Ljava/util/EnumSet;noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "avoidAlloc",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "NEW",
          "at_target": "()Ljava/util/ArrayList;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "isNotNull",
          "kind": "wrap-with-condition",
          "method": "applyAndClear",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "isNotNull2",
          "kind": "wrap-with-condition",
          "method": "flushStep",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "getOrNull",
          "kind": "wrap-operation",
          "method": "flushStep",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "removeOrFalse",
          "kind": "wrap-operation",
          "method": "flushStep",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;remove(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "addAllNonNull",
          "kind": "wrap-operation",
          "method": "flushStep",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;addAll(Ljava/util/Collection;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "apply",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#apply HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "initBeforeAndGet",
          "kind": "wrap-operation",
          "method": "runBefore",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "initAfterAndGet",
          "kind": "wrap-operation",
          "method": "runAfter",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/intersection/EntityGetterMixin",
          "targets": [
            "net/minecraft/world/level/EntityGetter"
          ],
          "handler": "getCollisionEntities",
          "kind": "redirect",
          "method": "getEntityCollisions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/EntityGetter;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/movement/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "postponeGetEntities",
          "kind": "redirect",
          "method": "collide",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntityCollisions(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/movement/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "collideMovementWithPostponedGetEntities",
          "kind": "redirect",
          "method": "collide",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;collideBoundingBox(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/AABB;Lnet/minecraft/world/level/Level;Ljava/util/List;)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/movement/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "collectEntities",
          "kind": "modify-variable",
          "method": "collide",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;collectCollidersIgnoringWorldBorder(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/level/Level;Ljava/util/List;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/movement/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "collideBoundingBox",
          "kind": "overwrite",
          "method": "collideBoundingBox",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/AbstractBoatMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/boat/AbstractBoat"
          ],
          "handler": "getOtherPushableEntities",
          "kind": "redirect",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onPositionChanged",
          "kind": "inject",
          "method": "setPosRaw",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/SectionPos;blockToSectionCoord(I)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#setPosRaw INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onBaseTick",
          "kind": "inject",
          "method": "baseTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;isPassenger()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#baseTick INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onBlockCached",
          "kind": "inject",
          "method": "getInBlockState",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/level/Level;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#getInBlockState INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntitySectionMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySection"
          ],
          "handler": "onEntityAdded",
          "kind": "inject",
          "method": "add",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/EntitySection#add RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntitySectionMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySection"
          ],
          "handler": "onEntityRemoved",
          "kind": "inject",
          "method": "remove",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/EntitySection#remove RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntitySelectorMixin",
          "targets": [
            "net/minecraft/world/entity/EntitySelector"
          ],
          "handler": "getEntityPushablePredicate",
          "kind": "redirect",
          "method": "pushableBy",
          "at": "INVOKE",
          "at_target": "Ljava/util/function/Predicate;and(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getOtherPushableEntities",
          "kind": "redirect",
          "method": "getPushableEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/OldMinecartBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior"
          ],
          "handler": "getOtherPushableEntities",
          "kind": "redirect",
          "method": "pushAndPickupEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/EntityEquipmentMixin",
          "targets": [
            "net/minecraft/world/entity/EntityEquipment"
          ],
          "handler": "updateBeforeSetAll",
          "kind": "inject",
          "method": "setAll",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/EntityEquipment#setAll HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/EntityEquipmentMixin",
          "targets": [
            "net/minecraft/world/entity/EntityEquipment"
          ],
          "handler": "updateAfterSetAll",
          "kind": "inject",
          "method": "setAll",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/EntityEquipment#setAll RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/EntityEquipmentMixin",
          "targets": [
            "net/minecraft/world/entity/EntityEquipment"
          ],
          "handler": "updateOnClear",
          "kind": "inject",
          "method": "clear",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/EntityEquipment#clear RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/enchantment_ticking/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "maybeHasAnyTickableEnchantments",
          "kind": "wrap-with-condition",
          "method": "baseTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/enchantment/EnchantmentHelper;tickEffects(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/equipment_changes/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "skipSentEquipmentComparison",
          "kind": "inject",
          "method": "collectEquipmentChanges",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#collectEquipmentChanges HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/equipment_changes/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "resetEquipmentChanged",
          "kind": "inject",
          "method": "detectEquipmentUpdates",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;handleHandSwap(Ljava/util/Map;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#detectEquipmentUpdates INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_elytra_check/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "skipStopFlying",
          "kind": "inject",
          "method": "updateFallFlying",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;canGlide()Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#updateFallFlying INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_hand_swing/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "skipGetDuration",
          "kind": "inject",
          "method": "updateSwingTime",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#updateSwingTime HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_powder_snow_check/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "delayGetBlockState",
          "kind": "redirect",
          "method": "tryAddFrost",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;getBlockStateOnLegacy()Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_powder_snow_check/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "delayAirTest",
          "kind": "redirect",
          "method": "tryAddFrost",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;isAir()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_powder_snow_check/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "doDelayedBlockStateAirTest",
          "kind": "redirect",
          "method": "tryAddFrost",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;getAttribute(Lnet/minecraft/core/Holder;)Lnet/minecraft/world/entity/ai/attributes/AttributeInstance;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_retrieval/EntitySectionStorageMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySectionStorage"
          ],
          "handler": "forEachInBox",
          "kind": "inject",
          "method": "forEachAccessibleNonEmptySection",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/core/SectionPos;posToSectionCoord(D)I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/EntitySectionStorage#forEachAccessibleNonEmptySection INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/framed_maps/MapItemSavedDataMixin",
          "targets": [
            "net/minecraft/world/level/saveddata/maps/MapItemSavedData"
          ],
          "handler": "sizeOrOne",
          "kind": "wrap-operation",
          "method": "tickCarriedBy",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;size()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/framed_maps/MapItemSavedDataMixin",
          "targets": [
            "net/minecraft/world/level/saveddata/maps/MapItemSavedData"
          ],
          "handler": "getOrGetThePlayer",
          "kind": "wrap-operation",
          "method": "tickCarriedBy",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;get(I)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/HappyGhastMixin",
          "targets": [
            "net/minecraft/world/entity/animal/happyghast/HappyGhast"
          ],
          "handler": "updateRegisteredNavigation",
          "kind": "inject",
          "method": "adultGhastSetup",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/happyghast/HappyGhast#adultGhastSetup RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/HappyGhastMixin",
          "targets": [
            "net/minecraft/world/entity/animal/happyghast/HappyGhast"
          ],
          "handler": "updateRegisteredNavigation1",
          "kind": "inject",
          "method": "babyGhastSetup",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/happyghast/HappyGhast#babyGhastSetup RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "handleStopRiding",
          "kind": "inject",
          "method": "stopRiding",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#stopRiding RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "onNavigationReplacement",
          "kind": "inject",
          "method": "startRiding",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#startRiding RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/PathNavigationMixin",
          "targets": [
            "net/minecraft/world/entity/ai/navigation/PathNavigation"
          ],
          "handler": "updateListeningState",
          "kind": "inject",
          "method": "recomputePath",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/entity/ai/navigation/PathNavigation;createPath(Lnet/minecraft/core/BlockPos;I)Lnet/minecraft/world/level/pathfinder/Path;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/navigation/PathNavigation#recomputePath INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/PathNavigationMixin",
          "targets": [
            "net/minecraft/world/entity/ai/navigation/PathNavigation"
          ],
          "handler": "updateListeningState2",
          "kind": "inject",
          "method": "moveTo",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/navigation/PathNavigation#moveTo RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/PathNavigationMixin",
          "targets": [
            "net/minecraft/world/entity/ai/navigation/PathNavigation"
          ],
          "handler": "stopListening",
          "kind": "inject",
          "method": "stop",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/navigation/PathNavigation#stop RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevel$EntityCallbacksMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel$EntityCallbacks"
          ],
          "handler": "inj",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel$EntityCallbacks#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevel$EntityCallbacksMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel$EntityCallbacks"
          ],
          "handler": "startListeningOnEntityLoad",
          "kind": "redirect",
          "method": "onTrackingStart",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevel$EntityCallbacksMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel$EntityCallbacks"
          ],
          "handler": "stopListeningOnEntityUnload",
          "kind": "redirect",
          "method": "onTrackingEnd",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;remove(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "getActiveListeners",
          "kind": "redirect",
          "method": "sendBlockUpdated",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;iterator()Ljava/util/Iterator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "updateActiveListeners",
          "kind": "inject",
          "method": "sendBlockUpdated",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;iterator()Ljava/util/Iterator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#sendBlockUpdated INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/projectile_projectile_collisions/ProjectileUtilMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/ProjectileUtil"
          ],
          "handler": "getEntitiesForCollision",
          "kind": "wrap-operation",
          "method": "getEntityHitResult",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/replace_entitytype_predicates/ArmorStandMixin",
          "targets": [
            "net/minecraft/world/entity/decoration/ArmorStand"
          ],
          "handler": "getMinecartsDirectly",
          "kind": "redirect",
          "method": "pushEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/replace_entitytype_predicates/GolemRandomStrollInVillageGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/GolemRandomStrollInVillageGoal"
          ],
          "handler": "getEntities",
          "kind": "redirect",
          "method": "getPositionTowardsVillagerWhoWantsGolem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getEntities(Lnet/minecraft/world/level/entity/EntityTypeTest;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/replace_entitytype_predicates/LlamaFollowCaravanGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal"
          ],
          "handler": "getLlamasForCaravan",
          "kind": "redirect",
          "method": "canUse",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/replace_entitytype_predicates/OldMinecartBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior"
          ],
          "handler": "getOtherAbstractMinecarts",
          "kind": "redirect",
          "method": "pushAndPickupEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/sprinting_particles/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "skipParticlesOnServerSide",
          "kind": "redirect",
          "method": "baseTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;canSpawnSprintParticle()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "removeVicinityCache",
          "kind": "inject",
          "method": "remove",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#remove HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "cancelIfSkippable",
          "kind": "inject",
          "method": "checkSupportingBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;getBoundingBox()Lnet/minecraft/world/phys/AABB;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#checkSupportingBlock INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "cacheSupportingBlockSearch",
          "kind": "inject",
          "method": "checkSupportingBlock",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/level/Level;findSupportingBlock(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#checkSupportingBlock INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "uncacheSupportingBlockSearch",
          "kind": "inject",
          "method": "checkSupportingBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;findSupportingBlock(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#checkSupportingBlock INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "uncacheSupportingBlockSearch1",
          "kind": "inject",
          "method": "checkSupportingBlock",
          "at": "INVOKE",
          "at_target": "Ljava/util/Optional;empty()Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#checkSupportingBlock INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/suffocation/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "isInsideWall",
          "kind": "inject",
          "method": "isInWall",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos;betweenClosedStream(Lnet/minecraft/world/phys/AABB;)Ljava/util/stream/Stream;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#isInWall INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/item_entity_merging/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "getItems",
          "kind": "redirect",
          "method": "mergeWithNeighbours",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/gen/cached_generator_settings/NoiseBasedChunkGeneratorMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator"
          ],
          "handler": "getSeaLevel",
          "kind": "overwrite",
          "method": "getSeaLevel",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "above",
          "kind": "overwrite",
          "method": "above",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "above",
          "kind": "overwrite",
          "method": "above",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "below",
          "kind": "overwrite",
          "method": "below",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "below",
          "kind": "overwrite",
          "method": "below",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "north",
          "kind": "overwrite",
          "method": "north",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "north",
          "kind": "overwrite",
          "method": "north",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "south",
          "kind": "overwrite",
          "method": "south",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "south",
          "kind": "overwrite",
          "method": "south",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "west",
          "kind": "overwrite",
          "method": "west",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "west",
          "kind": "overwrite",
          "method": "west",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "east",
          "kind": "overwrite",
          "method": "east",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "east",
          "kind": "overwrite",
          "method": "east",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "east",
          "kind": "overwrite",
          "method": "east",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "east",
          "kind": "overwrite",
          "method": "east",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "west",
          "kind": "overwrite",
          "method": "west",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "west",
          "kind": "overwrite",
          "method": "west",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "south",
          "kind": "overwrite",
          "method": "south",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "south",
          "kind": "overwrite",
          "method": "south",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "north",
          "kind": "overwrite",
          "method": "north",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "north",
          "kind": "overwrite",
          "method": "north",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "below",
          "kind": "overwrite",
          "method": "below",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "below",
          "kind": "overwrite",
          "method": "below",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "above",
          "kind": "overwrite",
          "method": "above",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "above",
          "kind": "overwrite",
          "method": "above",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "reinit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/Direction#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getStepX",
          "kind": "overwrite",
          "method": "getStepX",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getStepY",
          "kind": "overwrite",
          "method": "getStepY",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getStepZ",
          "kind": "overwrite",
          "method": "getStepZ",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/AABBMixin",
          "targets": [
            "net/minecraft/world/phys/AABB"
          ],
          "handler": "min",
          "kind": "overwrite",
          "method": "min",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/AABBMixin",
          "targets": [
            "net/minecraft/world/phys/AABB"
          ],
          "handler": "max",
          "kind": "overwrite",
          "method": "max",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/AxisCycleDirectionMixin$BackwardMixin",
          "targets": [
            "net/minecraft/core/AxisCycle$3"
          ],
          "handler": "cycle",
          "kind": "overwrite",
          "method": "cycle",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/AxisCycleDirectionMixin$ForwardMixin",
          "targets": [
            "net/minecraft/core/AxisCycle$2"
          ],
          "handler": "cycle",
          "kind": "overwrite",
          "method": "cycle",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getOpposite",
          "kind": "overwrite",
          "method": "getOpposite",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getRandom",
          "kind": "overwrite",
          "method": "getRandom",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/sine_lut/MthMixin",
          "targets": [
            "net/minecraft/util/Mth"
          ],
          "handler": "onClassInit",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/Mth#<clinit> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/sine_lut/MthMixin",
          "targets": [
            "net/minecraft/util/Mth"
          ],
          "handler": "sin",
          "kind": "overwrite",
          "method": "sin",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/sine_lut/MthMixin",
          "targets": [
            "net/minecraft/util/Mth"
          ],
          "handler": "cos",
          "kind": "overwrite",
          "method": "cos",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/ai/sensor/frog_attackables/FrogAttackablesSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/FrogAttackablesSensor"
          ],
          "handler": "checkTypeAndPredicate",
          "kind": "redirect",
          "method": "isMatchingEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/sensing/Sensor;isEntityAttackable(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/ai/sensor/frog_attackables/FrogAttackablesSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/FrogAttackablesSensor"
          ],
          "handler": "skipCheckTypeAgain",
          "kind": "redirect",
          "method": "isMatchingEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/frog/Frog;canEat(Lnet/minecraft/world/entity/LivingEntity;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/spawning/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "iterateEntitiesChunkAware",
          "kind": "redirect",
          "method": "tickChunks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getAllEntities()Ljava/lang/Iterable;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "initSupportCache",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "updateSupportCache",
          "kind": "inject",
          "method": "setBlockState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setBlockState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/DirectBlockEntityTickInvokerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk$BoundTickingBlockEntity"
          ],
          "handler": "getCachedState",
          "kind": "redirect",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/DirectBlockEntityTickInvokerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk$BoundTickingBlockEntity"
          ],
          "handler": "cachedIsSupported",
          "kind": "redirect",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/BlockEntityType;isValid(Lnet/minecraft/world/level/block/state/BlockState;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "createBlockEntityWithCachedStateFix",
          "kind": "redirect",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/EntityBlock;newBlockEntity(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/level/block/entity/BlockEntity;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "fixCachedState",
          "kind": "inject",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/BlockEntity;setBlockState(Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": "block_changed",
          "why": "a block changes"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/expiring_chunk_tickets/TicketStorageMixin",
          "targets": [
            "net/minecraft/world/level/TicketStorage"
          ],
          "handler": "registerExpiringTicket",
          "kind": "inject",
          "method": "addTicket",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/TicketStorage#addTicket INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/expiring_chunk_tickets/TicketStorageMixin",
          "targets": [
            "net/minecraft/world/level/TicketStorage"
          ],
          "handler": "unregisterExpiringTicket",
          "kind": "inject",
          "method": "removeTicket",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;isEmpty()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/TicketStorage#removeTicket INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/expiring_chunk_tickets/TicketStorageMixin",
          "targets": [
            "net/minecraft/world/level/TicketStorage"
          ],
          "handler": "fixOtherCollection",
          "kind": "inject",
          "method": "removeTicketIf",
          "at": "INVOKE",
          "at_target": "Lit/unimi/dsi/fastutil/objects/ObjectIterator;remove()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/TicketStorage#removeTicketIf INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/profiler/ProfilerMixin",
          "targets": [
            "net/minecraft/util/profiling/Profiler"
          ],
          "handler": "placeProfilerInStaticFields",
          "kind": "inject",
          "method": "use",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/profiling/Profiler#use RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/profiler/ProfilerMixin",
          "targets": [
            "net/minecraft/util/profiling/Profiler"
          ],
          "handler": "removeProfilerFromStaticFields",
          "kind": "inject",
          "method": "stopUsing",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/profiling/Profiler#stopUsing RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/blockstate_cache/BlockMixin",
          "targets": [
            "net/minecraft/world/level/block/Block"
          ],
          "handler": "isShapeFullBlock",
          "kind": "overwrite",
          "method": "isShapeFullBlock",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "redirectInstanceOf",
          "kind": "modify-constant",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "initFields",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/shapes/EntityCollisionContext;<init>(ZZDLnet/minecraft/world/item/ItemStack;ZLnet/minecraft/world/entity/Entity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#<init> INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "isHolding",
          "kind": "inject",
          "method": "isHoldingItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#isHoldingItem HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "initHeldItem",
          "kind": "inject",
          "method": "getHeldItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#getHeldItem HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "skipIsDescending",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;isDescending()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "initVars",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "initIsDescending",
          "kind": "inject",
          "method": "isDescending",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#isDescending HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/optimized_matching/ShapesMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/Shapes"
          ],
          "handler": "cuboidMatchesAnywhere",
          "kind": "inject",
          "method": "joinIsNotEmpty",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/shapes/VoxelShape;getCoords(Lnet/minecraft/core/Direction$Axis;)Lit/unimi/dsi/fastutil/doubles/DoubleList;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/Shapes#joinIsNotEmpty INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/precompute_shape_arrays/CubePointRangeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/CubePointRange"
          ],
          "handler": "initScale",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/CubePointRange#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/precompute_shape_arrays/CubePointRangeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/CubePointRange"
          ],
          "handler": "getDouble",
          "kind": "overwrite",
          "method": "getDouble",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/precompute_shape_arrays/CubeVoxelShapeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/CubeVoxelShape"
          ],
          "handler": "onConstructed",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/CubeVoxelShape#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/precompute_shape_arrays/CubeVoxelShapeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/CubeVoxelShape"
          ],
          "handler": "getCoords",
          "kind": "overwrite",
          "method": "getCoords",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/shape_merging/ShapesMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/Shapes"
          ],
          "handler": "injectCustomListPair",
          "kind": "inject",
          "method": "createIndexMerger",
          "at": "NEW",
          "at_target": "(Lit/unimi/dsi/fastutil/doubles/DoubleList;Lit/unimi/dsi/fastutil/doubles/DoubleList;ZZ)Lnet/minecraft/world/phys/shapes/IndirectMerger;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/Shapes#createIndexMerger NEW"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/specialized_shapes/ShapesMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/Shapes"
          ],
          "handler": "create",
          "kind": "overwrite",
          "method": "create",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/specialized_shapes/VoxelShapeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/VoxelShape"
          ],
          "handler": "collideX",
          "kind": "overwrite",
          "method": "collideX",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/specialized_shapes/VoxelShapeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/VoxelShape"
          ],
          "handler": "findIndex",
          "kind": "overwrite",
          "method": "findIndex",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSection$BlockCounterMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection$1BlockCounter"
          ],
          "handler": "acceptLithium",
          "kind": "inject",
          "method": "accept",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection$1BlockCounter#accept HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "initAirSection",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "initLithiumBlockCounter",
          "kind": "modify-arg",
          "method": "recalcBlockCounts",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/PalettedContainer;count(Lnet/minecraft/world/level/chunk/PalettedContainer$CountConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "createFlagCounters",
          "kind": "inject",
          "method": "recalcBlockCounts",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#recalcBlockCounts HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "resetData",
          "kind": "inject",
          "method": "read",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#read HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "updateFlagCounters",
          "kind": "inject",
          "method": "setBlockState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#setBlockState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/chunk_status_tracking/ChunkHolderMixin",
          "targets": [
            "net/minecraft/server/level/ChunkHolder"
          ],
          "handler": "trackUpdate",
          "kind": "inject",
          "method": "updateFutures",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/FullChunkStatus;isOrAfter(Lnet/minecraft/server/level/FullChunkStatus;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkHolder#updateFutures INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/chunk_status_tracking/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "onChunkFull",
          "kind": "inject",
          "method": "setFullStatus",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#setFullStatus RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/data_storage/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "initLithiumData",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/Level#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/EntitySectionMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySection"
          ],
          "handler": "swapStatus",
          "kind": "modify-variable",
          "method": "updateChunkStatus",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/ServerEntityManagerListenerMixin",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/ServerEntityManagerListenerMixin",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback"
          ],
          "handler": "updateEntityTrackerEngine",
          "kind": "inject",
          "method": "onMove",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/ServerEntityManagerListenerMixin",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback"
          ],
          "handler": "onAddEntity",
          "kind": "inject",
          "method": "onMove",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/entity/EntitySection;add(Lnet/minecraft/world/level/entity/EntityAccess;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/ServerEntityManagerListenerMixin",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback"
          ],
          "handler": "onRemoveEntity",
          "kind": "inject",
          "method": "onRemove",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onRemove HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_section_position/EntitySectionStorageMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySectionStorage"
          ],
          "handler": "rememberPos",
          "kind": "inject",
          "method": "createSection",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/EntitySectionStorage#createSection RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/in_world_tracking/entity/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "emitMaybeInLevelEvents",
          "kind": "inject",
          "method": "setLevelCallback",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#setLevelCallback RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "updateStackListTracking",
          "kind": "inject",
          "method": "setRemoved",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setRemoved RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$BarrelBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BarrelBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BarrelBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$BaseContainerBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BaseContainerBlockEntity"
          ],
          "handler": "readNbtStackListReplacement",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BaseContainerBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$ChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ChestBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ChestBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$DispenserBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/DispenserBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/DispenserBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$ShulkerBoxBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_comparator_tracking/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_comparator_tracking/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "forgetNearbyComparators",
          "kind": "inject",
          "method": "setRemoved",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setRemoved HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_comparator_tracking/DiodeBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/DiodeBlock"
          ],
          "handler": "notifyOnBlockAdded",
          "kind": "inject",
          "method": "onPlace",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/DiodeBlock#onPlace RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/item_component_and_count_tracking/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "beforeSetStack",
          "kind": "inject",
          "method": "setItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/ItemEntity#setItem HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/item_component_and_count_tracking/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "beforeChangeCount",
          "kind": "inject",
          "method": "setCount",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#setCount HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/item_component_and_count_tracking/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "onSetComponent",
          "kind": "inject",
          "method": "set",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#set RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/item_component_and_count_tracking/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "trackBeforeChange",
          "kind": "inject",
          "method": "ensureMapOwnership",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#ensureMapOwnership HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/world_border_listener/WorldBorderMixin",
          "targets": [
            "net/minecraft/world/level/border/WorldBorder"
          ],
          "handler": "registerSimpleWorldBorderListenerMulti",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/border/WorldBorder#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/world_border_listener/WorldBorderMixin",
          "targets": [
            "net/minecraft/world/level/border/WorldBorder"
          ],
          "handler": "addSimpleListenerOnce",
          "kind": "inject",
          "method": "addListener",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/border/WorldBorder#addListener HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/world_border_listener/WorldBorderMixin",
          "targets": [
            "net/minecraft/world/level/border/WorldBorder"
          ],
          "handler": "getUpdatedArea",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/border/WorldBorder$BorderExtent;update()Lnet/minecraft/world/level/border/WorldBorder$BorderExtent;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/chunk_tickable/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "initPos",
          "kind": "inject",
          "method": "tickBlockEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/Level#tickBlockEntities HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/chunk_tickable/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "optimizedShouldTick",
          "kind": "redirect",
          "method": "tickBlockEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;shouldTickBlocksAt(Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "handleSetChanged",
          "kind": "inject",
          "method": "setChanged",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setChanged RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "setBlockEntityTickingOrder",
          "kind": "inject",
          "method": "lambda$updateBlockEntityTicker$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addBlockEntityTicker(Lnet/minecraft/world/level/block/entity/TickingBlockEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#lambda$updateBlockEntityTicker$0 INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "setBlockEntityTickingOrder",
          "kind": "inject",
          "method": "lambda$updateBlockEntityTicker$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk$RebindableTickingBlockEntityWrapper;rebind(Lnet/minecraft/world/level/block/entity/TickingBlockEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#lambda$updateBlockEntityTicker$0 INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "shouldTickBlockPosFilterNull",
          "kind": "wrap-operation",
          "method": "tickBlockEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;shouldTickBlocksAt(Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "getPosOrOrigin",
          "kind": "redirect",
          "method": "dumpBlockEntityTickers",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/TickingBlockEntity;getPos()Lnet/minecraft/core/BlockPos;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/brewing_stand/BrewingStandBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BrewingStandBlockEntity"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "serverTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/brewing_stand/BrewingStandBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BrewingStandBlockEntity"
          ],
          "handler": "wakeUpOnMarkDirty",
          "kind": "inject",
          "method": "serverTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/BrewingStandBlockEntity;setChanged(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/brewing_stand/BrewingStandBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BrewingStandBlockEntity"
          ],
          "handler": "wakeUpAfterFromTag",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BrewingStandBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/CampfireBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CampfireBlockEntity"
          ],
          "handler": "wakeUpOnAddItem",
          "kind": "inject",
          "method": "placeFood",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/NonNullList;set(ILjava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CampfireBlockEntity#placeFood INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/CampfireBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CampfireBlockEntity"
          ],
          "handler": "wakeUpOnReadNbt",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CampfireBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/lit/CampfireBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CampfireBlockEntity"
          ],
          "handler": "trySleepLit",
          "kind": "inject",
          "method": "cookTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CampfireBlockEntity#cookTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/unlit/CampfireBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CampfireBlockEntity"
          ],
          "handler": "trySleepUnlit",
          "kind": "inject",
          "method": "cooldownTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CampfireBlockEntity#cooldownTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/chest_animation/ChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ChestBlockEntity"
          ],
          "handler": "wakeUpOnSyncedBlockEvent",
          "kind": "inject",
          "method": "triggerEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/ChestLidController;shouldBeOpen(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ChestBlockEntity#triggerEvent INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/chest_animation/ChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ChestBlockEntity"
          ],
          "handler": "sleepOnAnimationEnd",
          "kind": "inject",
          "method": "lidAnimateTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ChestBlockEntity#lidAnimateTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/chest_animation/EnderChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/EnderChestBlockEntity"
          ],
          "handler": "wakeUpOnSyncedBlockEvent",
          "kind": "inject",
          "method": "triggerEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/ChestLidController;shouldBeOpen(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/EnderChestBlockEntity#triggerEvent INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/chest_animation/EnderChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/EnderChestBlockEntity"
          ],
          "handler": "sleepOnAnimationEnd",
          "kind": "inject",
          "method": "lidAnimateTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/EnderChestBlockEntity#lidAnimateTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/crafter/CrafterBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CrafterBlockEntity"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "serverTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CrafterBlockEntity#serverTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/crafter/CrafterBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CrafterBlockEntity"
          ],
          "handler": "wakeUpAfterRemainingTicksChanged",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CrafterBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/crafter/CrafterBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CrafterBlockEntity"
          ],
          "handler": "wakeUpAfterRemainingTicksChanged",
          "kind": "inject",
          "method": "setCraftingTicksRemaining",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CrafterBlockEntity#setCraftingTicksRemaining RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/furnace/AbstractFurnaceBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "serverTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#serverTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/furnace/AbstractFurnaceBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity"
          ],
          "handler": "wakeUpAfterFromTag",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/furnace/AbstractFurnaceBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity"
          ],
          "handler": "handleSetChanged",
          "kind": "inject",
          "method": "setItem",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#setItem RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "sleepIfNoCooldownAndLocked",
          "kind": "inject",
          "method": "tryMoveItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#tryMoveItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "wakeUpOnCooldownSet",
          "kind": "inject",
          "method": "setCooldown",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#setCooldown HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_catalyst/SculkCatalystBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity"
          ],
          "handler": "addCatalystListenerCallback",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_catalyst/SculkCatalystBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity"
          ],
          "handler": "sleepIfNoCursors",
          "kind": "inject",
          "method": "serverTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#serverTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_catalyst/SculkCatalystBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity"
          ],
          "handler": "wakeupIfLoadedWithData",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_catalyst/SculkSpreaderMixin",
          "targets": [
            "net/minecraft/world/level/block/SculkSpreader"
          ],
          "handler": "listenToCursorAddition",
          "kind": "inject",
          "method": "addCursors",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/SculkSpreader#addCursors RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/CalibratedSculkSensorBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/CalibratedSculkSensorBlock"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "lambda$getTicker$0",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/CalibratedSculkSensorBlock#lambda$getTicker$0 RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkSensorBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkSensorBlockEntity"
          ],
          "handler": "setVibrationListenerListener",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkSensorBlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkSensorBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkSensorBlockEntity"
          ],
          "handler": "wakeupIfLoadedWithData",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkSensorBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkSensorBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/SculkSensorBlock"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "lambda$getTicker$0",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/SculkSensorBlock#lambda$getTicker$0 RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkShriekerBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity"
          ],
          "handler": "setVibrationListenerListener",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkShriekerBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity"
          ],
          "handler": "wakeupIfLoadedWithData",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkShriekerBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/SculkShriekerBlock"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "lambda$getTicker$0",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/SculkShriekerBlock#lambda$getTicker$0 RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/VibrationSystemListenerMixin",
          "targets": [
            "net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Listener"
          ],
          "handler": "onCurrentVibrationUpdate",
          "kind": "inject",
          "method": "scheduleVibration",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Listener#scheduleVibration HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/shulker_box/ShulkerBoxBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity"
          ],
          "handler": "wakeUpOnSyncedBlockEvent",
          "kind": "inject",
          "method": "triggerEvent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#triggerEvent HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/shulker_box/ShulkerBoxBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity"
          ],
          "handler": "sleepOnAnimationEnd",
          "kind": "inject",
          "method": "updateAnimation",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#updateAnimation RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/world_border/DirectBlockEntityTickInvokerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk$BoundTickingBlockEntity"
          ],
          "handler": "cachedCanTickBlockEntity",
          "kind": "redirect",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk;isTicking(Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getChunkAt",
          "kind": "overwrite",
          "method": "getChunkAt",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getChunk",
          "kind": "overwrite",
          "method": "getChunk",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getChunk",
          "kind": "overwrite",
          "method": "getChunk",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "preTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerChunkCache#tick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "getChunk",
          "kind": "overwrite",
          "method": "getChunk",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "onCachesCleared",
          "kind": "inject",
          "method": "clearCache",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerChunkCache#clearCache HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/precipitation/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "skipIfAllBiomesDoNotCreateIceOrSnowAtPos",
          "kind": "inject",
          "method": "tickPrecipitation",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getBiome(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/core/Holder;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#tickPrecipitation INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "initAirSection",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "createFlagCounters",
          "kind": "inject",
          "method": "recalcBlockCounts",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#recalcBlockCounts HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "initFlagCountersAndRecalcBlockCounts",
          "kind": "wrap-operation",
          "method": "recalcBlockCounts",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/PalettedContainer;count(Lnet/minecraft/world/level/chunk/PalettedContainer$CountConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "updateRandomTickableBlockCounts",
          "kind": "inject",
          "method": "setBlockState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#setBlockState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "initializeRandomTickExtraData",
          "kind": "modify-arg",
          "method": "count",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/BitStorage;getAll(Ljava/util/function/IntConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "handleWholeSectionSingleBlock",
          "kind": "wrap-operation",
          "method": "count",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/PalettedContainer$CountConsumer;accept(Ljava/lang/Object;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/spread_ice/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "getNull",
          "kind": "redirect",
          "method": "shouldFreeze",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/LevelReader;getFluidState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/material/FluidState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/spread_ice/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "skipFluidCheck",
          "kind": "redirect",
          "method": "shouldFreeze",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/material/FluidState;is(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/spread_ice/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "fluidCheckAndGetBlock",
          "kind": "redirect",
          "method": "shouldFreeze",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;getBlock()Lnet/minecraft/world/level/block/Block;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/combined_heightmap_update/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "skipGetHeightmap",
          "kind": "redirect",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/combined_heightmap_update/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "skipHeightmapUpdate",
          "kind": "redirect",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/Heightmap;update(IIILnet/minecraft/world/level/block/state/BlockState;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/combined_heightmap_update/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "updateHeightmapsCombined",
          "kind": "inject",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/Heightmap;update(IIILnet/minecraft/world/level/block/state/BlockState;)Z",
          "cancellable": false,
          "hook": "block_changed",
          "why": "a block changes"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/ServerExplosion#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "skipNewHashSet",
          "kind": "redirect",
          "method": "calculateExplodedPositions",
          "at": "NEW",
          "at_target": "()Ljava/util/HashSet;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "skipLoop",
          "kind": "modify-constant",
          "method": "calculateExplodedPositions",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "getExplodedPositionCount",
          "kind": "redirect",
          "method": "explode",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;size()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "collectBlocks",
          "kind": "inject",
          "method": "calculateExplodedPositions",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/ServerExplosion#calculateExplodedPositions RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/skip_air/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/ServerExplosion#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/skip_air/no_air_counting/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "delayExploding",
          "kind": "wrap-operation",
          "method": "explode",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/ServerExplosion;explode()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/skip_air/no_air_counting/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "runDelayedExplosion",
          "kind": "modify-variable",
          "method": "explode",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/ServerExplosion;getHitPlayers()Ljava/util/Map;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/skip_air/no_air_counting/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "runDelayedExplosionWithoutCountingBlocks",
          "kind": "inject",
          "method": "explode",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#explode RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/entity_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "createMutableContext",
          "kind": "inject",
          "method": "getSeenPercent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/ServerExplosion#getSeenPercent HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/entity_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "reuseClipContext",
          "kind": "redirect",
          "method": "getSeenPercent",
          "at": "NEW",
          "at_target": "net/minecraft/world/level/ClipContext",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/entity_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "simplifyRaycast",
          "kind": "redirect",
          "method": "getSeenPercent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;clip(Lnet/minecraft/world/level/ClipContext;)Lnet/minecraft/world/phys/BlockHitResult;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/GameEventDispatcherMixin",
          "targets": [
            "net/minecraft/world/level/gameevent/GameEventDispatcher"
          ],
          "handler": "doNotGetChunk",
          "kind": "redirect",
          "method": "post",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerChunkCache;getChunkNow(II)Lnet/minecraft/world/level/chunk/LevelChunk;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/GameEventDispatcherMixin",
          "targets": [
            "net/minecraft/world/level/gameevent/GameEventDispatcher"
          ],
          "handler": "getNull",
          "kind": "redirect",
          "method": "post",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/ChunkAccess;getListenerRegistry(I)Lnet/minecraft/world/level/gameevent/GameEventListenerRegistry;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/GameEventDispatcherMixin",
          "targets": [
            "net/minecraft/world/level/gameevent/GameEventDispatcher"
          ],
          "handler": "handleNullDispatcher",
          "kind": "redirect",
          "method": "post",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/gameevent/GameEventListenerRegistry;visitInRangeListeners(Lnet/minecraft/core/Holder;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/level/gameevent/GameEvent$Context;Lnet/minecraft/world/level/gameevent/GameEventListenerRegistry$ListenerVisitor;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "initGameEventDispatchers",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/Heightmap$Types;values()[Lnet/minecraft/world/level/levelgen/Heightmap$Types;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#<init> INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "removeGameEventDispatcher",
          "kind": "inject",
          "method": "removeGameEventListenerRegistry",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#removeGameEventListenerRegistry RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "initializeCollection",
          "kind": "inject",
          "method": "getListenerRegistry",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk;gameEventListenerRegistrySections:Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#getListenerRegistry FIELD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/inline_block_access/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "getBlockState",
          "kind": "overwrite",
          "method": "getBlockState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/inline_block_access/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "getFluidState",
          "kind": "overwrite",
          "method": "getFluidState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/inline_block_access/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getBlockState",
          "kind": "overwrite",
          "method": "getBlockState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "initHeightCache",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/Level#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/raycast/BlockGetterMixin",
          "targets": [
            "net/minecraft/world/level/BlockGetter"
          ],
          "handler": "clip",
          "kind": "overwrite",
          "method": "clip",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/temperature_cache/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "getTemperature",
          "kind": "overwrite",
          "method": "getTemperature",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "reinit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/ticks/LevelChunkTicks#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "reinit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/ticks/LevelChunkTicks#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "schedule",
          "kind": "overwrite",
          "method": "schedule",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "hasScheduledTick",
          "kind": "overwrite",
          "method": "hasScheduledTick",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "removeIf",
          "kind": "overwrite",
          "method": "removeIf",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "getAll",
          "kind": "overwrite",
          "method": "getAll",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "count",
          "kind": "overwrite",
          "method": "count",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "pack",
          "kind": "overwrite",
          "method": "pack",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "unpack",
          "kind": "overwrite",
          "method": "unpack",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        }
      ],
      "listening": 140,
      "accessors": 49,
      "hooks": {
        "block_changed": 4
      },
      "wanted": {
        "net/minecraft/core/Direction#<init> @RETURN": 1,
        "net/minecraft/core/component/PatchedDataComponentMap#ensureMapOwnership @HEAD": 1,
        "net/minecraft/server/level/ServerChunkCache#clearCache @HEAD": 1,
        "net/minecraft/server/level/ServerChunkCache#tick @HEAD": 1,
        "net/minecraft/server/level/ServerLevel#<init> @RETURN": 1,
        "net/minecraft/server/level/ServerLevel#explode @RETURN": 1,
        "net/minecraft/server/level/ServerLevel$EntityCallbacks#<init> @RETURN": 1,
        "net/minecraft/util/ClassInstanceMultiMap#<init> @RETURN": 1,
        "net/minecraft/util/Mth#<clinit> @RETURN": 1,
        "net/minecraft/util/profiling/Profiler#stopUsing @RETURN": 1,
        "net/minecraft/util/profiling/Profiler#use @RETURN": 1,
        "net/minecraft/world/attribute/AmbientParticle#<init> @RETURN": 1,
        "net/minecraft/world/entity/AgeableMob#<init> @RETURN": 1,
        "net/minecraft/world/entity/Entity#remove @HEAD": 1,
        "net/minecraft/world/entity/Entity#setLevelCallback @RETURN": 1,
        "net/minecraft/world/entity/EntityEquipment#clear @RETURN": 1,
        "net/minecraft/world/entity/EntityEquipment#setAll @HEAD": 1,
        "net/minecraft/world/entity/EntityEquipment#setAll @RETURN": 1,
        "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#apply @HEAD": 1,
        "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#flushStep @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#collectEquipmentChanges @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#stopRiding @RETURN": 1,
        "net/minecraft/world/entity/LivingEntity#updateSwingTime @HEAD": 1,
        "net/minecraft/world/entity/Mob#startRiding @RETURN": 1,
        "net/minecraft/world/entity/ai/Brain#<init> @RETURN": 2,
        "net/minecraft/world/entity/ai/Brain#addActivity @RETURN": 1,
        "net/minecraft/world/entity/ai/Brain#clearMemories @RETURN": 1,
        "net/minecraft/world/entity/ai/Brain#registerMemory @RETURN": 1,
        "net/minecraft/world/entity/ai/Brain#removeAllBehaviors @RETURN": 1,
        "net/minecraft/world/entity/ai/attributes/AttributeMap#<init> @RETURN": 1,
        "net/minecraft/world/entity/ai/behavior/Behavior#<init> @RETURN": 1,
        "net/minecraft/world/entity/ai/memory/MemorySlot#set @HEAD": 1,
        "net/minecraft/world/entity/ai/memory/MemorySlot#set @RETURN": 1,
        "net/minecraft/world/entity/ai/navigation/PathNavigation#moveTo @RETURN": 1,
        "net/minecraft/world/entity/ai/navigation/PathNavigation#stop @RETURN": 1,
        "net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor#doTick @HEAD": 1,
        "net/minecraft/world/entity/animal/goat/Goat#<init> @RETURN": 1,
        "net/minecraft/world/entity/animal/happyghast/HappyGhast#adultGhastSetup @RETURN": 1,
        "net/minecraft/world/entity/animal/happyghast/HappyGhast#babyGhastSetup @RETURN": 1,
        "net/minecraft/world/entity/item/ItemEntity#setItem @HEAD": 1,
        "net/minecraft/world/entity/raid/Raid#tick @HEAD": 1,
        "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack @HEAD": 1,
        "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack @RETURN": 1,
        "net/minecraft/world/item/ItemStack#set @RETURN": 1,
        "net/minecraft/world/item/ItemStack#setCount @HEAD": 1,
        "net/minecraft/world/level/Level#<init> @RETURN": 2,
        "net/minecraft/world/level/Level#tickBlockEntities @HEAD": 1,
        "net/minecraft/world/level/PathNavigationRegion#<init> @RETURN": 1,
        "net/minecraft/world/level/ServerExplosion#<init> @RETURN": 2,
        "net/minecraft/world/level/ServerExplosion#calculateExplodedPositions @RETURN": 1,
        "net/minecraft/world/level/ServerExplosion#getSeenPercent @HEAD": 1,
        "net/minecraft/world/level/biome/MobSpawnSettings#<init> @RETURN": 1,
        "net/minecraft/world/level/block/CalibratedSculkSensorBlock#lambda$getTicker$0 @RETURN": 1,
        "net/minecraft/world/level/block/DiodeBlock#onPlace @RETURN": 1,
        "net/minecraft/world/level/block/HopperBlock#neighborChanged @HEAD": 1,
        "net/minecraft/world/level/block/RedStoneWireBlock#getBlockSignal @HEAD": 1,
        "net/minecraft/world/level/block/SculkSensorBlock#lambda$getTicker$0 @RETURN": 1,
        "net/minecraft/world/level/block/SculkShriekerBlock#lambda$getTicker$0 @RETURN": 1,
        "net/minecraft/world/level/block/SculkSpreader#addCursors @RETURN": 1,
        "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#serverTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#setItem @RETURN": 1,
        "net/minecraft/world/level/block/entity/BarrelBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/BaseContainerBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/BlockEntity#<init> @RETURN": 2,
        "net/minecraft/world/level/block/entity/BlockEntity#setBlockState @RETURN": 2,
        "net/minecraft/world/level/block/entity/BlockEntity#setChanged @RETURN": 1,
        "net/minecraft/world/level/block/entity/BlockEntity#setRemoved @HEAD": 1,
        "net/minecraft/world/level/block/entity/BlockEntity#setRemoved @RETURN": 1,
        "net/minecraft/world/level/block/entity/BrewingStandBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick @HEAD": 1,
        "net/minecraft/world/level/block/entity/CampfireBlockEntity#cookTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/CampfireBlockEntity#cooldownTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/CampfireBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/ChestBlockEntity#lidAnimateTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/ChestBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/CrafterBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/CrafterBlockEntity#serverTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/CrafterBlockEntity#setCraftingTicksRemaining @RETURN": 1,
        "net/minecraft/world/level/block/entity/DispenserBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/EnderChestBlockEntity#lidAnimateTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/FuelValues#vanillaBurnTimes @RETURN": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#setBlockState @HEAD": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#setCooldown @HEAD": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#tryMoveItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#<init> @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#serverTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkSensorBlockEntity#<init> @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkSensorBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#<init> @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#triggerEvent @HEAD": 1,
        "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#updateAnimation @RETURN": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour#updateShape @HEAD": 1,
        "net/minecraft/world/level/border/WorldBorder#<init> @RETURN": 1,
        "net/minecraft/world/level/border/WorldBorder#addListener @HEAD": 1,
        "net/minecraft/world/level/chunk/LevelChunk#removeGameEventListenerRegistry @RETURN": 1,
        "net/minecraft/world/level/chunk/LevelChunk#setFullStatus @RETURN": 1,
        "net/minecraft/world/level/chunk/LevelChunkSection#<init> @RETURN": 2,
        "net/minecraft/world/level/chunk/LevelChunkSection#read @HEAD": 1,
        "net/minecraft/world/level/chunk/LevelChunkSection#recalcBlockCounts @HEAD": 2,
        "net/minecraft/world/level/chunk/LevelChunkSection#setBlockState @RETURN": 2,
        "net/minecraft/world/level/chunk/LevelChunkSection$1BlockCounter#accept @HEAD": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#<init> @RETURN": 3,
        "net/minecraft/world/level/chunk/PalettedContainer#read @RETURN": 1,
        "net/minecraft/world/level/chunk/storage/SectionStorage#<init> @RETURN": 1,
        "net/minecraft/world/level/dimension/end/EnderDragonFight#<init> @RETURN": 1,
        "net/minecraft/world/level/entity/EntitySection#add @RETURN": 1,
        "net/minecraft/world/level/entity/EntitySection#remove @RETURN": 1,
        "net/minecraft/world/level/entity/EntitySectionStorage#createSection @RETURN": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#<init> @RETURN": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove @RETURN": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onRemove @HEAD": 1,
        "net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Listener#scheduleVibration @HEAD": 1,
        "net/minecraft/world/level/material/FlowingFluid#getSpread @HEAD": 1,
        "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey#<init> @RETURN": 1,
        "net/minecraft/world/level/material/FluidState#<init> @RETURN": 1,
        "net/minecraft/world/level/redstone/DefaultRedstoneWireEvaluator#calculateTargetStrength @HEAD": 1,
        "net/minecraft/world/level/redstone/RedstoneWireEvaluator#getIncomingWireSignal @HEAD": 1,
        "net/minecraft/world/phys/shapes/CubePointRange#<init> @RETURN": 1,
        "net/minecraft/world/phys/shapes/CubeVoxelShape#<init> @RETURN": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#<init> @RETURN": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#getHeldItem @HEAD": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#isDescending @HEAD": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#isHoldingItem @HEAD": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#<init> @RETURN": 2
      },
      "wanted_calls": {
        "com/google/common/collect/ImmutableList#iterator @INVOKE (wrap-operation)": 1,
        "com/google/common/collect/Maps#newHashMap @INVOKE (redirect)": 1,
        "com/google/common/collect/Maps#newHashMap @INVOKE_ASSIGN (modify-variable)": 1,
        "com/google/common/collect/Sets#newIdentityHashSet @INVOKE (redirect)": 1,
        "java/lang/Class#isAssignableFrom @INVOKE (redirect)": 1,
        "java/util/Collection#forEach @INVOKE (modify-arg)": 1,
        "java/util/EnumSet#noneOf @INVOKE (wrap-operation)": 1,
        "java/util/List#addAll @INVOKE (wrap-operation)": 1,
        "java/util/List#clear @INVOKE (wrap-with-condition)": 2,
        "java/util/List#copyOf @INVOKE (redirect)": 1,
        "java/util/List#get @INVOKE (wrap-operation)": 1,
        "java/util/List#size @INVOKE (redirect)": 1,
        "java/util/List#size @INVOKE (wrap-operation)": 1,
        "java/util/Map#get @INVOKE (redirect)": 1,
        "java/util/Map#get @INVOKE (wrap-operation)": 3,
        "java/util/Optional#ifPresent @INVOKE (redirect)": 1,
        "java/util/Set#add @INVOKE (redirect)": 1,
        "java/util/Set#iterator @INVOKE (redirect)": 1,
        "java/util/Set#remove @INVOKE (redirect)": 1,
        "java/util/Set#remove @INVOKE (wrap-operation)": 1,
        "java/util/function/Predicate#and @INVOKE (redirect)": 1,
        "java/util/stream/Stream#limit @INVOKE (redirect)": 1,
        "net/minecraft/core/AxisCycle$2#cycle @OVERWRITE": 1,
        "net/minecraft/core/AxisCycle$3#cycle @OVERWRITE": 1,
        "net/minecraft/core/BlockPos#above @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#below @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#east @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#north @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#south @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#west @OVERWRITE": 4,
        "net/minecraft/core/Direction#getOpposite @OVERWRITE": 1,
        "net/minecraft/core/Direction#getRandom @OVERWRITE": 1,
        "net/minecraft/core/Direction#getStepX @OVERWRITE": 1,
        "net/minecraft/core/Direction#getStepY @OVERWRITE": 1,
        "net/minecraft/core/Direction#getStepZ @OVERWRITE": 1,
        "net/minecraft/core/Direction#values @INVOKE (redirect)": 4,
        "net/minecraft/nbt/CompoundTag#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/nbt/CompoundTag#<init> @NEW (redirect)": 1,
        "net/minecraft/nbt/CompoundTag#copy @OVERWRITE": 1,
        "net/minecraft/server/commands/data/EntityDataAccessor#setData @INVOKE": 1,
        "net/minecraft/server/level/ChunkHolder#updateFutures @INVOKE": 1,
        "net/minecraft/server/level/ServerChunkCache#getChunk @OVERWRITE": 1,
        "net/minecraft/server/level/ServerChunkCache#getChunkNow @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#getAllEntities @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#getBlockRandomPos @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#getEntities @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#sendBlockUpdated @INVOKE": 1,
        "net/minecraft/server/level/ServerLevel#tickPrecipitation @INVOKE": 1,
        "net/minecraft/util/BitStorage#getAll @INVOKE (modify-arg)": 2,
        "net/minecraft/util/ClassInstanceMultiMap#add @HEAD (modify-variable)": 1,
        "net/minecraft/util/ClassInstanceMultiMap#find @OVERWRITE": 1,
        "net/minecraft/util/ClassInstanceMultiMap#iterator @INVOKE (redirect)": 1,
        "net/minecraft/util/ClassInstanceMultiMap#remove @HEAD (modify-variable)": 1,
        "net/minecraft/util/Mth#cos @OVERWRITE": 1,
        "net/minecraft/util/Mth#sin @OVERWRITE": 1,
        "net/minecraft/util/Util#makeEnumMap @INVOKE (wrap-operation)": 1,
        "net/minecraft/util/random/WeightedRandom#getRandomItem @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/AgeableMob#onSyncedDataUpdated @INVOKE": 1,
        "net/minecraft/world/entity/Entity#baseTick @INVOKE": 1,
        "net/minecraft/world/entity/Entity#canSpawnSprintParticle @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/Entity#checkSupportingBlock @INVOKE": 3,
        "net/minecraft/world/entity/Entity#checkSupportingBlock @INVOKE_ASSIGN": 1,
        "net/minecraft/world/entity/Entity#collectCollidersIgnoringWorldBorder @INVOKE (modify-variable)": 1,
        "net/minecraft/world/entity/Entity#collideBoundingBox @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/Entity#collideBoundingBox @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#getInBlockState @INVOKE_ASSIGN": 1,
        "net/minecraft/world/entity/Entity#getIndirectPassengers @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#getIndirectPassengersStream @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#getPassengersAndSelf @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#getSelfAndPassengers @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#isDescending @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/Entity#isInWall @INVOKE": 1,
        "net/minecraft/world/entity/Entity#setPosRaw @INVOKE": 1,
        "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#<init> @NEW (wrap-operation)": 1,
        "net/minecraft/world/entity/LivingEntity#detectEquipmentUpdates @INVOKE": 1,
        "net/minecraft/world/entity/LivingEntity#getAttribute @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/LivingEntity#getBlockStateOnLegacy @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/LivingEntity#makeBrain @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/LivingEntity#updateFallFlying @INVOKE": 1,
        "net/minecraft/world/entity/Mob#blockPosition @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/Mob#level @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/ai/Brain#eraseMemory @INVOKE": 1,
        "net/minecraft/world/entity/ai/Brain#setActiveActivity @INVOKE": 1,
        "net/minecraft/world/entity/ai/Brain#setMemory @INVOKE (wrap-with-condition)": 2,
        "net/minecraft/world/entity/ai/Brain#startEachNonRunningBehavior @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/Brain#stopAll @INVOKE": 1,
        "net/minecraft/world/entity/ai/Brain#tickEachRunningBehavior @INVOKE": 1,
        "net/minecraft/world/entity/ai/behavior/AcquirePoi#create @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/behavior/Behavior#hasRequiredMemories @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/behavior/BehaviorControl#tryStart @INVOKE (modify-variable)": 1,
        "net/minecraft/world/entity/ai/behavior/GateBehavior#doStop @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/behavior/GateBehavior#tickOrStop @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/behavior/GateBehavior$RunningPolicy#apply @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos#start @INVOKE": 1,
        "net/minecraft/world/entity/ai/goal/RemoveBlockGoal#findNearestBlock @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/memory/MemorySlot#clear @INVOKE (wrap-operation)": 2,
        "net/minecraft/world/entity/ai/memory/MemorySlot#set @INVOKE (wrap-operation)": 2,
        "net/minecraft/world/entity/ai/navigation/PathNavigation#recomputePath @INVOKE_ASSIGN": 1,
        "net/minecraft/world/entity/ai/sensing/HoglinSpecificSensor#findNearestRepellent @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/sensing/PiglinSpecificSensor#findNearestRepellent @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/sensing/Sensor#isEntityAttackable @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/sensing/TemptingSensor#doTick @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#ensureLoadedAndValid @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#find @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#find @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#findAllClosestFirstWithType @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#findClosest @OVERWRITE": 2,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#findClosestWithType @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#getCountInRange @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#getInRange @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#getRandom @INVOKE (redirect)": 2,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#getRandom @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#take @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/animal/AgeableWaterCreature#handleAirSupply @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/animal/frog/Frog#canEat @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/raid/Raid#getOminousBannerInstance @INVOKE (redirect)": 3,
        "net/minecraft/world/entity/raid/Raid#updateBossbar @OVERWRITE": 1,
        "net/minecraft/world/inventory/AbstractContainerMenu#getRedstoneSignalFromContainer @INVOKE": 1,
        "net/minecraft/world/item/enchantment/EnchantmentHelper#tickEffects @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/BlockGetter#clip @OVERWRITE": 1,
        "net/minecraft/world/level/EntityBasedExplosionDamageCalculator#getBlockExplosionResistance @OVERWRITE": 1,
        "net/minecraft/world/level/EntityGetter#getEntities @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#clip @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#getBlockState @OVERWRITE": 1,
        "net/minecraft/world/level/Level#getChunk @OVERWRITE": 2,
        "net/minecraft/world/level/Level#getChunkAt @OVERWRITE": 1,
        "net/minecraft/world/level/Level#getEntities @INVOKE (redirect)": 6,
        "net/minecraft/world/level/Level#getEntities @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/Level#getEntitiesOfClass @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#getEntityCollisions @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#shouldTickBlocksAt @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#shouldTickBlocksAt @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/LevelReader#getFluidState @INVOKE (redirect)": 1,
        "net/minecraft/world/level/PathNavigationRegion#getBlockState @OVERWRITE": 1,
        "net/minecraft/world/level/PathNavigationRegion#getFluidState @OVERWRITE": 1,
        "net/minecraft/world/level/ServerExplosion#calculateExplodedPositions @HEAD (modify-constant)": 1,
        "net/minecraft/world/level/ServerExplosion#calculateExplodedPositions @NEW (redirect)": 1,
        "net/minecraft/world/level/ServerExplosion#explode @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/ServerExplosion#getHitPlayers @INVOKE (modify-variable)": 1,
        "net/minecraft/world/level/ServerExplosion#getSeenPercent @NEW (redirect)": 1,
        "net/minecraft/world/level/TicketStorage#addTicket @INVOKE": 1,
        "net/minecraft/world/level/TicketStorage#removeTicket @INVOKE": 1,
        "net/minecraft/world/level/TicketStorage#removeTicketIf @INVOKE": 1,
        "net/minecraft/world/level/biome/Biome#getTemperature @OVERWRITE": 1,
        "net/minecraft/world/level/block/Block#isShapeFullBlock @OVERWRITE": 1,
        "net/minecraft/world/level/block/ComposterBlock$EmptyContainer#getSlotsForFace @OVERWRITE": 1,
        "net/minecraft/world/level/block/ComposterBlock$InputContainer#getSlotsForFace @OVERWRITE": 1,
        "net/minecraft/world/level/block/ComposterBlock$InputContainer#setChanged @INVOKE": 1,
        "net/minecraft/world/level/block/ComposterBlock$OutputContainer#getSlotsForFace @OVERWRITE": 1,
        "net/minecraft/world/level/block/EntityBlock#newBlockEntity @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/HopperBlock#onPlace @INVOKE": 1,
        "net/minecraft/world/level/block/entity/BlockEntityType#isValid @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick @INVOKE": 1,
        "net/minecraft/world/level/block/entity/CampfireBlockEntity#placeFood @INVOKE": 1,
        "net/minecraft/world/level/block/entity/ChestBlockEntity#triggerEvent @INVOKE": 1,
        "net/minecraft/world/level/block/entity/EnderChestBlockEntity#triggerEvent @INVOKE": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#ejectItems @INVOKE": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#getAttachedContainer @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#getItemsAtAndAbove @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#getSourceContainer @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#inventoryFull @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#isEmpty @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#pushItemsTick @INVOKE": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#suckInItems @FIELD": 1,
        "net/minecraft/world/level/block/entity/TickingBlockEntity#getPos @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/piston/PistonMovingBlockEntity#getCollisionShape @INVOKE": 1,
        "net/minecraft/world/level/block/state/BlockState#getBlock @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/BlockState#is @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/BlockState#isAir @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/BlockState#isCollisionShapeFullBlock @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/BlockState#randomTick @INVOKE (modify-arg)": 1,
        "net/minecraft/world/level/block/state/pattern/BlockPattern#find @INVOKE": 1,
        "net/minecraft/world/level/border/WorldBorder$BorderExtent#update @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/chunk/ChunkAccess#getListenerRegistry @INVOKE (redirect)": 1,
        "net/minecraft/world/level/chunk/LevelChunk#<init> @INVOKE": 1,
        "net/minecraft/world/level/chunk/LevelChunk#getBlockState @INVOKE (redirect)": 1,
        "net/minecraft/world/level/chunk/LevelChunk#getBlockState @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/LevelChunk#getFluidState @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/LevelChunk#getListenerRegistry @FIELD": 1,
        "net/minecraft/world/level/chunk/LevelChunk#isTicking @INVOKE (redirect)": 1,
        "net/minecraft/world/level/chunk/LevelChunk#lambda$updateBlockEntityTicker$0 @INVOKE": 2,
        "net/minecraft/world/level/chunk/LevelChunkSection#setBlockState @INVOKE (redirect)": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#acquire @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#count @INVOKE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#count @INVOKE (modify-arg)": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#count @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#count @NEW (wrap-operation)": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#pack @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#release @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer$CountConsumer#accept @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/entity/EntitySection#updateChunkStatus @HEAD (modify-variable)": 1,
        "net/minecraft/world/level/entity/EntitySectionStorage#forEachAccessibleNonEmptySection @INVOKE_ASSIGN": 1,
        "net/minecraft/world/level/entity/EntityTickList#ensureActiveIsNotIterated @OVERWRITE": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove @INVOKE": 1,
        "net/minecraft/world/level/gameevent/GameEventListenerRegistry#visitInRangeListeners @INVOKE (redirect)": 1,
        "net/minecraft/world/level/levelgen/Heightmap#update @INVOKE (redirect)": 1,
        "net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator#getSeaLevel @OVERWRITE": 1,
        "net/minecraft/world/level/material/FlowingFluid#canPassThrough @OVERWRITE": 1,
        "net/minecraft/world/level/material/FlowingFluid#isWaterHole @OVERWRITE": 1,
        "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey#hashCode @OVERWRITE": 1,
        "net/minecraft/world/level/material/FluidState#is @INVOKE (redirect)": 1,
        "net/minecraft/world/level/material/FluidState#isEmpty @OVERWRITE": 1,
        "net/minecraft/world/level/material/FluidState#randomTick @INVOKE (modify-arg)": 1,
        "net/minecraft/world/level/pathfinder/FlyNodeEvaluator#checkNeighbourBlocks @INVOKE (redirect)": 1,
        "net/minecraft/world/level/pathfinder/WalkNodeEvaluator#checkNeighbourBlocks @INVOKE": 1,
        "net/minecraft/world/level/pathfinder/WalkNodeEvaluator#checkNeighbourBlocks @INVOKE (redirect)": 1,
        "net/minecraft/world/level/pathfinder/WalkNodeEvaluator#getPathTypeFromState @INVOKE_ASSIGN": 1,
        "net/minecraft/world/level/portal/PortalForcer#findClosestPortalPosition @OVERWRITE": 1,
        "net/minecraft/world/phys/AABB#max @OVERWRITE": 1,
        "net/minecraft/world/phys/AABB#min @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/CubePointRange#getDouble @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/CubeVoxelShape#getCoords @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#<init> @HEAD (modify-constant)": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#<init> @INVOKE": 1,
        "net/minecraft/world/phys/shapes/Shapes#create @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/Shapes#createIndexMerger @NEW": 1,
        "net/minecraft/world/phys/shapes/Shapes#joinIsNotEmpty @INVOKE": 1,
        "net/minecraft/world/phys/shapes/VoxelShape#collideX @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/VoxelShape#findIndex @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#count @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#getAll @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#hasScheduledTick @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#pack @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#removeIf @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#schedule @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#unpack @OVERWRITE": 1,
        "org/apache/commons/lang3/Validate#inclusiveBetween @INVOKE (redirect)": 6
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "BlockApiLookup",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 701,
        "features": {
          "mixin": 292
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 701,
        "methods": 1300,
        "tried": 600,
        "completed": 212,
        "handlers_tried": 4,
        "handlers_completed": 1,
        "missing": {
          "[Ljava/lang/Object;#clone()Ljava/lang/Object;": 1,
          "[Lnet/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern;#clone()Ljava/lang/Object;": 1,
          "[Lnet/caffeinemc/mods/lithium/common/hopper/HopperCachingState$BlockInventory;#clone()Ljava/lang/Object;": 1,
          "com/google/common/base/Predicates#alwaysFalse()Lcom/google/common/base/Predicate;": 2,
          "com/google/common/collect/AbstractIterator#<init>()V": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/llamalad7/mixinextras/sugar/ref/LocalBooleanRef#get()Z": 1,
          "com/llamalad7/mixinextras/sugar/ref/LocalBooleanRef#set(Z)V": 1,
          "it/unimi/dsi/fastutil/HashCommon#mix(I)I": 1,
          "it/unimi/dsi/fastutil/HashCommon#nextPowerOfTwo(I)I": 1,
          "it/unimi/dsi/fastutil/ints/Int2ObjectMap#isEmpty()Z": 1,
          "it/unimi/dsi/fastutil/objects/ObjectIterator#hasNext()Z": 2,
          "it/unimi/dsi/fastutil/objects/Reference2ByteOpenHashMap#getByte(Ljava/lang/Object;)B": 3,
          "it/unimi/dsi/fastutil/objects/Reference2DoubleArrayMap#clear()V": 2,
          "it/unimi/dsi/fastutil/objects/Reference2DoubleArrayMap#put(Ljava/lang/Object;D)D": 1,
          "it/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap#getInt(Ljava/lang/Object;)I": 1,
          "it/unimi/dsi/fastutil/objects/Reference2ReferenceArrayMap#entrySet()Lit/unimi/dsi/fastutil/objects/ObjectSet;": 1,
          "it/unimi/dsi/fastutil/objects/Reference2ReferenceArrayMap#values()Lit/unimi/dsi/fastutil/objects/ReferenceCollection;": 1,
          "java/lang/Runnable#run()V": 4,
          "java/lang/Thread#currentThread()Ljava/lang/Thread;": 3,
          "java/lang/Thread#sleep(J)V": 1,
          "java/util/ArrayList#indexOf(Ljava/lang/Object;)I": 1,
          "java/util/Arrays#copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;": 1,
          "java/util/Arrays#fill([BB)V": 2,
          "java/util/Arrays#fill([Ljava/lang/Object;IILjava/lang/Object;)V": 2,
          "java/util/Arrays#fill([Ljava/lang/Object;Ljava/lang/Object;)V": 3,
          "java/util/Arrays#toString([S)Ljava/lang/String;": 1,
          "java/util/BitSet#get(I)Z": 1,
          "java/util/BitSet#nextSetBit(I)I": 1,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collections#emptyIterator()Ljava/util/Iterator;": 2,
          "java/util/Collections#emptyList()Ljava/util/List;": 2,
          "java/util/List#addAll(ILjava/util/Collection;)Z": 1,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#containsAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#forEach(Ljava/util/function/Consumer;)V": 1,
          "java/util/List#indexOf(Ljava/lang/Object;)I": 1,
          "java/util/List#lastIndexOf(Ljava/lang/Object;)I": 1,
          "java/util/List#parallelStream()Ljava/util/stream/Stream;": 1,
          "java/util/List#removeAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#removeIf(Ljava/util/function/Predicate;)Z": 1,
          "java/util/List#replaceAll(Ljava/util/function/UnaryOperator;)V": 1,
          "java/util/List#retainAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#sort(Ljava/util/Comparator;)V": 1,
          "java/util/List#spliterator()Ljava/util/Spliterator;": 1,
          "java/util/List#toArray()[Ljava/lang/Object;": 1,
          "java/util/List#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 1,
          "java/util/ListIterator#add(Ljava/lang/Object;)V": 1,
          "java/util/ListIterator#hasNext()Z": 2,
          "java/util/ListIterator#hasPrevious()Z": 2,
          "java/util/ListIterator#next()Ljava/lang/Object;": 2,
          "java/util/ListIterator#nextIndex()I": 2,
          "java/util/ListIterator#previous()Ljava/lang/Object;": 2,
          "java/util/ListIterator#previousIndex()I": 4,
          "java/util/ListIterator#remove()V": 1,
          "java/util/ListIterator#set(Ljava/lang/Object;)V": 1,
          "java/util/Map#putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/WeakHashMap#keySet()Ljava/util/Set;": 3,
          "java/util/WeakHashMap#put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/concurrent/atomic/AtomicInteger#get()I": 1,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "net/caffeinemc/mods/lithium/common/entity/movement/ChunkAwareBlockCollisionSweeperVoxelShape#hasNext()Z": 1,
          "net/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern$1#DECREMENT_UPDATE_INCREMENT_UPDATE": 1,
          "net/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern$1#UPDATE": 1,
          "net/caffeinemc/mods/lithium/common/hopper/LithiumStackList#size()I": 3,
          "net/caffeinemc/mods/lithium/common/world/blockview/SingleBlockBlockView$SingleBlockViewException#setStackTrace([Ljava/lang/StackTraceElement;)V": 1,
          "net/caffeinemc/mods/lithium/fabric/mixin/util/inventory_change_listening/BlockEntityMixin#lithium$handleSetBlockState()V": 1,
          "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiSectionMixin$1#endOfData()Ljava/lang/Object;": 2,
          "net/caffeinemc/mods/lithium/mixin/ai/useless_behaviors/BrainMixin$1#endOfData()Ljava/lang/Object;": 2,
          "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/CopperGolemMixin#level()Lnet/minecraft/world/level/Level;": 1,
          "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin#lithium$OnFeetBlockCacheDeleted()V": 2,
          "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin#lithium$OnFeetBlockCacheSet(Lnet/minecraft/world/level/block/state/BlockState;)V": 1,
          "net/caffeinemc/mods/lithium/mixin/entity/fast_powder_snow_check/LivingEntityMixin#getBlockStateOnLegacy()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin#getUpdatedVicinityCache(Lnet/minecraft/world/entity/Entity;)Lnet/caffeinemc/mods/lithium/common/tracking/VicinityCache;": 1,
          "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin#lithium$getVicinityCache()Lnet/caffeinemc/mods/lithium/common/tracking/VicinityCache;": 3,
          "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin#lithium$getSectionData()Lnet/caffeinemc/mods/lithium/common/world/section/LithiumSectionData$SectionData;": 3,
          "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$ShulkerBoxBlockEntityMixin#lithium$emitStackListReplaced()V": 1,
          "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/BlockEntityMixin#lithium$handleSetChanged()V": 1,
          "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/brewing_stand/BrewingStandBlockEntityMixin#isSleeping()Z": 1,
          "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/CampfireBlockEntityMixin#wakeUpNow()V": 2,
          "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/lit/CampfireBlockEntityMixin#lithium$startSleeping()Z": 1,
          "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/crafter/CrafterBlockEntityMixin#isSleeping()Z": 1,
          "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/crafter/CrafterBlockEntityMixin#lithium$startSleeping()Z": 1,
          "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/precipitation/ServerLevelMixin#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin#lithium$getSectionData()Lnet/caffeinemc/mods/lithium/common/world/section/LithiumSectionData$SectionData;": 2,
          "net/caffeinemc/mods/lithium/mixin/world/inline_block_access/LevelChunkMixin#getSectionIndex(I)I": 1,
          "net/minecraft/core/BlockPos#distSqr(Lnet/minecraft/core/Vec3i;)D": 1,
          "net/minecraft/core/BlockPos#equals(Ljava/lang/Object;)Z": 3,
          "net/minecraft/core/BlockPos#getX()I": 12,
          "net/minecraft/core/BlockPos#getY()I": 5,
          "net/minecraft/core/BlockPos#immutable()Lnet/minecraft/core/BlockPos;": 3,
          "net/minecraft/core/Direction#get3DDataValue()I": 1,
          "net/minecraft/core/Direction#values()[Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/core/Direction$Axis#X": 3,
          "net/minecraft/core/Direction$Axis#ordinal()I": 3,
          "net/minecraft/core/NonNullList#add(ILjava/lang/Object;)V": 2,
          "net/minecraft/core/NonNullList#remove(I)Ljava/lang/Object;": 2,
          "net/minecraft/core/NonNullList#set(ILjava/lang/Object;)Ljava/lang/Object;": 2,
          "net/minecraft/core/RegistryAccess#EMPTY": 1,
          "net/minecraft/core/SectionPos#blockToSectionCoord(I)I": 2,
          "net/minecraft/core/SectionPos#sectionToBlockCoord(I)I": 2,
          "net/minecraft/core/SectionPos#x(J)I": 2,
          "net/minecraft/core/component/DataComponents#ENCHANTMENTS": 1,
          "net/minecraft/network/FriendlyByteBuf#writeVarInt(I)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/network/VarInt#getByteSize(I)I": 1,
          "net/minecraft/server/level/ServerLevel#getPoiManager()Lnet/minecraft/world/entity/ai/village/poi/PoiManager;": 1,
          "net/minecraft/world/Container#getContainerSize()I": 1,
          "net/minecraft/world/entity/Entity#getType()Lnet/minecraft/world/entity/EntityType;": 2,
          "net/minecraft/world/entity/Entity#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/entity/LivingEntity#blockPosition()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/entity/LivingEntity#level()Lnet/minecraft/world/level/Level;": 3,
          "net/minecraft/world/entity/PathfinderMob#getBrain()Lnet/minecraft/world/entity/ai/Brain;": 1,
          "net/minecraft/world/entity/ai/behavior/Behavior$Status#STOPPED": 1,
          "net/minecraft/world/entity/ai/memory/MemorySlot#hasValue()Z": 4,
          "net/minecraft/world/entity/animal/AgeableWaterCreature#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/entity/item/ItemEntity#getBoundingBox()Lnet/minecraft/world/phys/AABB;": 2,
          "net/minecraft/world/entity/item/ItemEntity#getItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/item/ItemStack#EMPTY": 3,
          "net/minecraft/world/item/ItemStack#hashItemAndComponents(Lnet/minecraft/world/item/ItemStack;)I": 2,
          "net/minecraft/world/level/ChunkPos#getX(J)I": 3,
          "net/minecraft/world/level/ChunkPos#pack(II)J": 1,
          "net/minecraft/world/level/ChunkPos#pack(Lnet/minecraft/core/BlockPos;)J": 3,
          "net/minecraft/world/level/Level#getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;": 1,
          "net/minecraft/world/level/LevelHeightAccessor#getMaxSectionY()I": 2,
          "net/minecraft/world/level/LevelHeightAccessor#getMinSectionY()I": 2,
          "net/minecraft/world/level/LevelHeightAccessor#getSectionsCount()I": 1,
          "net/minecraft/world/level/block/Blocks#BREWING_STAND": 1,
          "net/minecraft/world/level/block/HopperBlock#FACING": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#setChanged()V": 1,
          "net/minecraft/world/level/block/entity/TickingBlockEntity#getPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 2,
          "net/minecraft/world/level/block/state/BlockState#getFluidState()Lnet/minecraft/world/level/material/FluidState;": 2,
          "net/minecraft/world/level/block/state/BlockState#hasLargeCollisionShape()Z": 2,
          "net/minecraft/world/level/block/state/BlockState#isRandomlyTicking()Z": 1,
          "net/minecraft/world/level/chunk/ChunkAccess#getSections()[Lnet/minecraft/world/level/chunk/LevelChunkSection;": 1,
          "net/minecraft/world/level/chunk/LevelChunk#getLevel()Lnet/minecraft/world/level/Level;": 3,
          "net/minecraft/world/level/chunk/LevelChunkSection#getStates()Lnet/minecraft/world/level/chunk/PalettedContainer;": 1,
          "net/minecraft/world/level/chunk/LevelChunkSection#hasOnlyAir()Z": 1,
          "net/minecraft/world/level/entity/Visibility#isAccessible()Z": 1,
          "net/minecraft/world/level/levelgen/Heightmap$Types#MOTION_BLOCKING": 1,
          "net/minecraft/world/ticks/ScheduledTick#subTickOrder()J": 2,
          "new it/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/Object2BooleanLinkedOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/Reference2ByteOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/Reference2ObjectOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/Reference2ReferenceOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/ReferenceArrayList": 1,
          "new it/unimi/dsi/fastutil/objects/ReferenceLinkedOpenHashSet": 1,
          "new it/unimi/dsi/fastutil/objects/ReferenceOpenHashSet": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfo#cancel()V": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#getReturnValue()Ljava/lang/Object;": 1
        },
        "runs": [
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
            "method": "isNotNull",
            "desc": "(Ljava/util/List;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
            "method": "isNotNull2",
            "desc": "(Ljava/util/List;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
            "method": "removeOrFalse",
            "desc": "(Ljava/util/Set;Ljava/lang/Object;Lcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
            "method": "addAllNonNull",
            "desc": "(Ljava/util/List;Ljava/util/Collection;Lcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/base_tick/unused_ambient_sound/MobMixin",
            "method": "andIsServerSide",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/interests/iterator/SinglePointOfInterestTypeFilter",
            "method": "test",
            "desc": "(Lnet/minecraft/core/Holder;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/interests/iterator/SinglePointOfInterestTypeFilter",
            "method": "test",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/scheduler/OrderedTickQueue",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/scheduler/OrderedTickQueue",
            "method": "copyArray",
            "desc": "([Lnet/minecraft/world/ticks/ScheduledTick;I)[Lnet/minecraft/world/ticks/ScheduledTick;",
            "value": "obj#59"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/scheduler/OrderedTickQueue",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern$4",
            "method": "isChainable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/ListeningList",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/ListeningList",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/ListeningList",
            "method": "contains",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
            "method": "redirectInstanceOf",
            "desc": "(Ljava/lang/Object;Ljava/lang/Class;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
            "method": "skipIsDescending",
            "desc": "(Lnet/minecraft/world/entity/Entity;Lcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/FixedChunkAccessSectionBitBuffer",
            "method": "getSectionIndex",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/FixedChunkAccessSectionBitBuffer",
            "method": "getChunkIndex",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/FixedChunkAccessSectionBitBuffer",
            "method": "getChunkPosInRange",
            "desc": "()Lit/unimi/dsi/fastutil/longs/LongIterable;",
            "value": "obj#142"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/FixedChunkAccessSectionBitBuffer",
            "method": "getChunkPosInRangeIterator",
            "desc": "()Lit/unimi/dsi/fastutil/longs/LongIterator;",
            "value": "obj#144"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/FixedChunkAccessSectionBitBuffer",
            "method": "getSectionYInRange",
            "desc": "()Lit/unimi/dsi/fastutil/ints/IntIterable;",
            "value": "obj#146"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/FixedChunkAccessSectionBitBuffer",
            "method": "getSectionYInRangeIterator",
            "desc": "()Lit/unimi/dsi/fastutil/ints/IntIterator;",
            "value": "obj#148"
          },
          {
            "class": "net/caffeinemc/mods/lithium/api/inventory/LithiumCooldownReceivingInventory",
            "method": "canReceiveTransferCooldown",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/change_tracking/ChangeSubscriber",
            "method": "dataWithout",
            "desc": "(Lnet/caffeinemc/mods/lithium/common/util/change_tracking/ChangeSubscriber;Lnet/caffeinemc/mods/lithium/common/util/change_tracking/ChangeSubscriber;I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/change_tracking/ChangeSubscriber",
            "method": "dataOf",
            "desc": "(Lnet/caffeinemc/mods/lithium/common/util/change_tracking/ChangeSubscriber;Lnet/caffeinemc/mods/lithium/common/util/change_tracking/ChangeSubscriber;I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/change_tracking/ChangeSubscriber",
            "method": "containsSubscriber",
            "desc": "(Lnet/caffeinemc/mods/lithium/common/util/change_tracking/ChangeSubscriber;ILnet/caffeinemc/mods/lithium/common/util/change_tracking/ChangeSubscriber;I)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/ai/WeightedListIterable$ListIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/alloc/composter/ComposterMixin$ComposterBlockDummyInventoryMixin",
            "method": "getSlotsForFace",
            "desc": "(Lnet/minecraft/core/Direction;)[I",
            "value": "obj#190"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/shapes/VoxelShapeMatchesAnywhere",
            "method": "cuboidMatchesAnywhere",
            "desc": "(Lnet/minecraft/world/phys/shapes/VoxelShape;Lnet/minecraft/world/phys/shapes/VoxelShape;Lnet/minecraft/world/phys/shapes/BooleanOp;)I",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "isTracking",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "canSkipBlockTouching",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "getStationaryFluidHeightOrDefault",
            "desc": "(Lnet/minecraft/tags/TagKey;D)D",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "getIsTouchingFireLava",
            "desc": "()B",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "getIsSuffocating",
            "desc": "()B",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "canSkipSupportingBlockSearch",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntitySectionMixin",
            "method": "entityPushableHeuristic",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
            "method": "getStepX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
            "method": "getStepY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
            "method": "getStepZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/ai/non_poi_block_search/CheckAndCacheBlockChecker",
            "method": "hasUnloadedPossibleChunks",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/Pos$ChunkCoord",
            "method": "fromBlockSize",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/interests/iterator/NearbyPointOfInterestStream$QueuedSection",
            "method": "sectionPos",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/interests/iterator/NearbyPointOfInterestStream$QueuedSection",
            "method": "minDistance",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/projectile_projectile_collisions/AbstractArrowMixin",
            "method": "getTypedPredicate",
            "desc": "(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;",
            "value": "obj#289"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/LithiumStackList",
            "method": "getModCount",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/LithiumStackList",
            "method": "hasSignalStrengthOverride",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/LithiumStackList",
            "method": "getSignalStrength",
            "desc": "(Lnet/minecraft/world/Container;)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/LithiumStackList",
            "method": "maybeSendsComparatorUpdatesOnFailedExtract",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/LithiumStackList",
            "method": "getOccupiedSlots",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/LithiumStackList",
            "method": "getFullSlots",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/FixedChunkAccessSectionBitBuffer$2",
            "method": "hasNext",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/services/PlatformMixinOverrides$MixinOverride",
            "method": "enabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/section/RandomTickingSectionDataHelper",
            "method": "getMinisectionIndex",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/section/RandomTickingSectionDataHelper",
            "method": "pack",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/section/RandomTickingSectionDataHelper",
            "method": "unpackX",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/section/RandomTickingSectionDataHelper",
            "method": "unpackY",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/section/RandomTickingSectionDataHelper",
            "method": "unpackZ",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/LevelMixin",
            "method": "shouldTickBlockPosFilterNull",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/Option",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/Option",
            "method": "isEnabledRecursive",
            "desc": "(Lnet/caffeinemc/mods/lithium/common/config/LithiumConfig;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/Option",
            "method": "isOverridden",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/Option",
            "method": "isUserDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/Option",
            "method": "isModDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/chunk/LithiumHashPalette",
            "method": "maybeHas",
            "desc": "(Ljava/util/function/Predicate;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/chunk/LithiumHashPalette",
            "method": "getSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntitySelectorMixin",
            "method": "getEntityPushablePredicate",
            "desc": "(Ljava/util/function/Predicate;Ljava/util/function/Predicate;)Ljava/util/function/Predicate;",
            "value": "obj#375"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/interests/PoiOrdering",
            "method": "isOrdered",
            "desc": "(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/ai/village/poi/PoiManager;Ljava/util/List;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/entity/item/ItemEntityList$1",
            "method": "equals",
            "desc": "(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/entity/item/ItemEntityList$1",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/EntitySectionMixin",
            "method": "modifyIsEmpty",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/entity/item/ItemEntityLazyIterationConsumer",
            "method": "getTransferAmount",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/projectile_projectile_collisions/ShulkerBulletMixin",
            "method": "getTypedPredicate",
            "desc": "(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;",
            "value": "obj#442"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/block/flatten_states/FluidStateMixin",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/fast_powder_snow_check/LivingEntityMixin",
            "method": "delayAirTest",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/entity/pushable/EntityPushablePredicate",
            "method": "and",
            "desc": "(Ljava/util/function/Predicate;Ljava/util/function/Predicate;)Ljava/util/function/Predicate;",
            "value": "obj#487"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/LithiumConfig",
            "method": "getOptionCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/projectile_projectile_collisions/LlamaSpitMixin",
            "method": "getTypedPredicate",
            "desc": "(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;",
            "value": "obj#522"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/block/SectionedBlockChangeTracker",
            "method": "isUnchangedSince",
            "desc": "(J)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/block/SectionedBlockChangeTracker",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/projectile_projectile_collisions/FireworkRocketEntityMixin",
            "method": "getTypedPredicate",
            "desc": "(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;",
            "value": "obj#545"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/HopperHelper",
            "method": "determineComparatorUpdatePattern",
            "desc": "(Lnet/minecraft/world/Container;Lnet/caffeinemc/mods/lithium/common/hopper/LithiumStackList;)Lnet/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern;",
            "value": "obj#548"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern",
            "method": "thenUpdate",
            "desc": "()Lnet/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern;",
            "value": "obj#574"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern",
            "method": "thenDecrementUpdateIncrementUpdate",
            "desc": "()Lnet/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern;",
            "value": "obj#575"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern",
            "method": "isChainable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/shapes/lists/OffsetFractionalDoubleList",
            "method": "getDouble",
            "desc": "(I)D",
            "value": "NaN"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/shapes/lists/OffsetFractionalDoubleList",
            "method": "size",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/entity/SectionedEntityMovementTracker",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/entity/SectionedEntityMovementTracker",
            "method": "isUnchangedSince",
            "desc": "(J)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/entity/SectionedEntityMovementTracker",
            "method": "listenToAllSectionsAndGetMaxChangeTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "negativeX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "negativeY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "negativeZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "positiveX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "positiveY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "positiveZ",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 4985
      },
      "verdict": "no",
      "summary": "only 4 of 140 listening patch sites have a hook (2%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "lithium",
      "name": "Lithium",
      "version": "0.26.3+mc26.3",
      "license": "LGPL-3.0-only",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "net/caffeinemc/mods/lithium/fabric/LithiumFabricMod"
        }
      ],
      "mixin_configs": [
        "lithium.mixins.json",
        "lithium-fabric.mixins.json"
      ],
      "depends": [
        "mixinextras"
      ],
      "classes": 701,
      "methods": 2510,
      "sites": [
        {
          "mixin": "net/caffeinemc/mods/lithium/fabric/mixin/block/hopper/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "updateHopperOnUpdateSuppression",
          "kind": "inject",
          "method": "setBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;updatePOIOnBlockStateChange(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": "block_changed",
          "why": "a block changes"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/fabric/mixin/compat/worldedit/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "updateHoppersIfWorldEditPresent",
          "kind": "inject",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;onPlace(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Z)V",
          "cancellable": false,
          "hook": "block_changed",
          "why": "a block changes"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/fabric/mixin/util/inventory_change_listening/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "emitRemovedOnSetCachedState",
          "kind": "inject",
          "method": "setBlockState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setBlockState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/non_poi_block_search/HoglinSpecificSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/HoglinSpecificSensor"
          ],
          "handler": "redirectFindNearestRepellent",
          "kind": "wrap-operation",
          "method": "doTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/sensing/HoglinSpecificSensor;findNearestRepellent(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/monster/hoglin/Hoglin;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/non_poi_block_search/PiglinSpecificSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/PiglinSpecificSensor"
          ],
          "handler": "redirectFindNearestRepellent",
          "kind": "wrap-operation",
          "method": "doTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/sensing/PiglinSpecificSensor;findNearestRepellent(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/non_poi_block_search/RemoveBlockGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/RemoveBlockGoal"
          ],
          "handler": "redirectFindNearestBlock",
          "kind": "redirect",
          "method": "canUse",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/goal/RemoveBlockGoal;findNearestBlock()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/FlyNodeEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/FlyNodeEvaluator"
          ],
          "handler": "getNodeTypeFromNeighbors",
          "kind": "redirect",
          "method": "getPathType",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/pathfinder/FlyNodeEvaluator;checkNeighbourBlocks(Lnet/minecraft/world/level/pathfinder/PathfindingContext;IIILnet/minecraft/world/level/pathfinder/PathType;)Lnet/minecraft/world/level/pathfinder/PathType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathNavigationRegionMixin",
          "targets": [
            "net/minecraft/world/level/PathNavigationRegion"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/PathNavigationRegion#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathNavigationRegionMixin",
          "targets": [
            "net/minecraft/world/level/PathNavigationRegion"
          ],
          "handler": "getBlockState",
          "kind": "overwrite",
          "method": "getBlockState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathNavigationRegionMixin",
          "targets": [
            "net/minecraft/world/level/PathNavigationRegion"
          ],
          "handler": "getFluidState",
          "kind": "overwrite",
          "method": "getFluidState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathfindingContextMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/PathfindingContext"
          ],
          "handler": "getWorldIfNonNull",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;level()Lnet/minecraft/world/level/Level;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/PathfindingContextMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/PathfindingContext"
          ],
          "handler": "getBlockPosIfNonNull",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;blockPosition()Lnet/minecraft/core/BlockPos;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/WalkNodeEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/WalkNodeEvaluator"
          ],
          "handler": "getLithiumCachedCommonNodeType",
          "kind": "inject",
          "method": "getPathTypeFromState",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/level/BlockGetter;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/pathfinder/WalkNodeEvaluator#getPathTypeFromState INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/WalkNodeEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/WalkNodeEvaluator"
          ],
          "handler": "doNotIteratePositionsIfLithiumSinglePosCall",
          "kind": "inject",
          "method": "checkNeighbourBlocks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/pathfinder/PathfindingContext;getPathTypeFromState(III)Lnet/minecraft/world/level/pathfinder/PathType;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/pathfinder/WalkNodeEvaluator#checkNeighbourBlocks INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/pathing/WalkNodeEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/WalkNodeEvaluator"
          ],
          "handler": "getNodeTypeFromNeighbors",
          "kind": "redirect",
          "method": "getPathTypeStatic",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/pathfinder/WalkNodeEvaluator;checkNeighbourBlocks(Lnet/minecraft/world/level/pathfinder/PathfindingContext;IIILnet/minecraft/world/level/pathfinder/PathType;)Lnet/minecraft/world/level/pathfinder/PathType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "getRandom",
          "kind": "overwrite",
          "method": "getRandom",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "find",
          "kind": "overwrite",
          "method": "find",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "findClosestWithType",
          "kind": "overwrite",
          "method": "findClosestWithType",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "findClosest",
          "kind": "overwrite",
          "method": "findClosest",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "findClosest",
          "kind": "overwrite",
          "method": "findClosest",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "getCountInRange",
          "kind": "overwrite",
          "method": "getCountInRange",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "getInRange",
          "kind": "overwrite",
          "method": "getInRange",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/SectionStorageMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SectionStorage"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/storage/SectionStorage#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/fast_portals/PoiManagerMixin",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiManager"
          ],
          "handler": "ensureLoadedAndValid",
          "kind": "overwrite",
          "method": "ensureLoadedAndValid",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/fast_portals/PortalForcerMixin",
          "targets": [
            "net/minecraft/world/level/portal/PortalForcer"
          ],
          "handler": "findClosestPortalPosition",
          "kind": "overwrite",
          "method": "findClosestPortalPosition",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/AcquirePoiMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/AcquirePoi"
          ],
          "handler": "takeOptimized",
          "kind": "redirect",
          "method": "lambda$create$7",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;take(Ljava/util/function/Predicate;Ljava/util/function/BiPredicate;Lnet/minecraft/core/BlockPos;I)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/AcquirePoiMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/AcquirePoi"
          ],
          "handler": "getNull",
          "kind": "redirect",
          "method": "lambda$create$3",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;findAllClosestFirstWithType(Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lnet/minecraft/core/BlockPos;ILnet/minecraft/world/entity/ai/village/poi/PoiManager$Occupancy;)Ljava/util/stream/Stream;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/AcquirePoiMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/AcquirePoi"
          ],
          "handler": "getNClosestFirstWithType",
          "kind": "redirect",
          "method": "lambda$create$3",
          "at": "INVOKE",
          "at_target": "Ljava/util/stream/Stream;limit(J)Ljava/util/stream/Stream;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/LocateHidingPlaceMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LocateHidingPlace"
          ],
          "handler": "useFasterPOILookup",
          "kind": "redirect",
          "method": "lambda$create$6",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;getRandom(Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lnet/minecraft/world/entity/ai/village/poi/PoiManager$Occupancy;Lnet/minecraft/core/BlockPos;ILnet/minecraft/util/RandomSource;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/LocateHidingPlaceMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LocateHidingPlace"
          ],
          "handler": "useFasterPOILookup",
          "kind": "redirect",
          "method": "lambda$create$2",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;find(Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lnet/minecraft/core/BlockPos;ILnet/minecraft/world/entity/ai/village/poi/PoiManager$Occupancy;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/poi/tasks/RaiderEntityAttackHomeGoalMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raider$RaiderMoveThroughVillageGoal"
          ],
          "handler": "redirect",
          "kind": "redirect",
          "method": "hasSuitablePoi",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/village/poi/PoiManager;getRandom(Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lnet/minecraft/world/entity/ai/village/poi/PoiManager$Occupancy;Lnet/minecraft/core/BlockPos;ILnet/minecraft/util/RandomSource;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/RaidMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raid"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/raid/Raid#tick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/RaidMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raid"
          ],
          "handler": "updateBossbar",
          "kind": "overwrite",
          "method": "updateBossbar",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/Raider$ObtainRaidLeaderBannerGoalMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raider$ObtainRaidLeaderBannerGoal"
          ],
          "handler": "getOminousBanner",
          "kind": "redirect",
          "method": "cannotPickUpBanner",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/raid/Raid;getOminousBannerInstance(Lnet/minecraft/core/HolderGetter;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/RaiderMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raider"
          ],
          "handler": "getOminousBanner",
          "kind": "redirect",
          "method": "pickUpItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/raid/Raid;getOminousBannerInstance(Lnet/minecraft/core/HolderGetter;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/raid/RaiderMixin",
          "targets": [
            "net/minecraft/world/entity/raid/Raider"
          ],
          "handler": "getOminousBanner",
          "kind": "redirect",
          "method": "isCaptain",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/raid/Raid;getOminousBannerInstance(Lnet/minecraft/core/HolderGetter;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/sensor/replace_streams/tempting/TemptingSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/TemptingSensor"
          ],
          "handler": "doTick",
          "kind": "overwrite",
          "method": "doTick",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/sensor/secondary_poi/SecondaryPoiSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor"
          ],
          "handler": "skipUselessSense",
          "kind": "inject",
          "method": "doTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor#doTick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "startEachNonRunningBehavior",
          "kind": "overwrite",
          "method": "startEachNonRunningBehavior",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "reinitializeBrainCollections",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "reinitializeTasksSorted",
          "kind": "inject",
          "method": "addActivity",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#addActivity RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "reinitializeTasksSorted",
          "kind": "inject",
          "method": "removeAllBehaviors",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#removeAllBehaviors RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "onPossibleActivitiesChanged",
          "kind": "inject",
          "method": "setActiveActivity",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#setActiveActivity INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "removeStoppedTask",
          "kind": "inject",
          "method": "stopAll",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/BehaviorControl;doStop(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#stopAll INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "removeTaskIfStopped",
          "kind": "inject",
          "method": "tickEachRunningBehavior",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/BehaviorControl;tickOrStop(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#tickEachRunningBehavior INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/launch/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "addStartedTasks",
          "kind": "modify-variable",
          "method": "startEachNonRunningBehavior",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/BehaviorControl;tryStart(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/Behavior"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/behavior/Behavior#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/Behavior"
          ],
          "handler": "hasRequiredMemories",
          "kind": "overwrite",
          "method": "hasRequiredMemories",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "increaseMemoryModCount",
          "kind": "inject",
          "method": "registerMemory",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#registerMemory RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "increaseMemoryModCount",
          "kind": "inject",
          "method": "clearMemories",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#clearMemories RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "increaseMemoryModCount",
          "kind": "inject",
          "method": "eraseMemory",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#eraseMemory INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "tickExpiringSlotsTrackingChanges",
          "kind": "modify-arg",
          "method": "forgetOutdatedMemories",
          "at": "INVOKE",
          "at_target": "Ljava/util/Collection;forEach(Ljava/util/function/Consumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "clearTrackingChanges",
          "kind": "wrap-operation",
          "method": "setMemoryInternal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "clearTrackingChanges",
          "kind": "wrap-operation",
          "method": "setMemoryInternal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "setTrackingChanges",
          "kind": "wrap-operation",
          "method": "setMemoryInternal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;set(Ljava/lang/Object;J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "setTrackingChanges",
          "kind": "wrap-operation",
          "method": "setMemoryInternal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/memory/MemorySlot;set(Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/memory_changes/MemorySlotMixin",
          "targets": [
            "net/minecraft/world/entity/ai/memory/MemorySlot"
          ],
          "handler": "ensureConsistency",
          "kind": "inject",
          "method": "set",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/memory/MemorySlot#set RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/replace_streams/GateBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/GateBehavior"
          ],
          "handler": "tickOrStop",
          "kind": "overwrite",
          "method": "tickOrStop",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/replace_streams/GateBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/GateBehavior"
          ],
          "handler": "doStop",
          "kind": "overwrite",
          "method": "doStop",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/replace_streams/GateBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/GateBehavior"
          ],
          "handler": "tryStart",
          "kind": "wrap-operation",
          "method": "tryStart",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/GateBehavior$RunningPolicy;apply(Ljava/util/stream/Stream;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/run/long_jump_weighted_choice/LongJumpToRandomPosMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos"
          ],
          "handler": "setTargets",
          "kind": "inject",
          "method": "start",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos;betweenClosedStream(IIIIII)Ljava/util/stream/Stream;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos#start INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/run/long_jump_weighted_choice/LongJumpToRandomPosMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos"
          ],
          "handler": "getRandomFast",
          "kind": "wrap-operation",
          "method": "getJumpCandidate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/random/WeightedRandom;getRandomItem(Lnet/minecraft/util/RandomSource;Ljava/util/List;Ljava/util/function/ToIntFunction;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/task/run/long_jump_weighted_choice/LongJumpToRandomPosMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos"
          ],
          "handler": "skipRemoveIfAlreadyRemoved",
          "kind": "redirect",
          "method": "getJumpCandidate",
          "at": "INVOKE",
          "at_target": "Ljava/util/Optional;ifPresent(Ljava/util/function/Consumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_behaviors/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "filterSentinels",
          "kind": "wrap-operation",
          "method": "addActivity",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/ImmutableList;iterator()Lcom/google/common/collect/UnmodifiableIterator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_behaviors/nitwit_job_search/VillagerGoalPackagesMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/VillagerGoalPackages"
          ],
          "handler": "returnNullIfAcquirePoiIsUseless",
          "kind": "redirect",
          "method": "getCorePackage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/AcquirePoi;create(Ljava/util/function/Predicate;Lnet/minecraft/world/entity/ai/memory/MemoryModuleType;Lnet/minecraft/world/entity/ai/memory/MemoryModuleType;ZLjava/util/Optional;Ljava/util/function/BiPredicate;)Lnet/minecraft/world/entity/ai/behavior/BehaviorControl;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_sensors/baby_specific_sensors/AgeableMobMixin",
          "targets": [
            "net/minecraft/world/entity/AgeableMob"
          ],
          "handler": "disableItemSensor",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/AgeableMob#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_sensors/baby_specific_sensors/AgeableMobMixin",
          "targets": [
            "net/minecraft/world/entity/AgeableMob"
          ],
          "handler": "handleParentSensor",
          "kind": "inject",
          "method": "onSyncedDataUpdated",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/AgeableMob;refreshDimensions()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/AgeableMob#onSyncedDataUpdated INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/ai/useless_sensors/goat_item_sensor/GoatMixin",
          "targets": [
            "net/minecraft/world/entity/animal/goat/Goat"
          ],
          "handler": "disableItemSensor",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/goat/Goat#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/chunk_random/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "redirectTickGetRandomPosInChunk",
          "kind": "redirect",
          "method": "tickChunk",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getBlockRandomPos(IIII)Lnet/minecraft/core/BlockPos;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/chunk_random/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "immutablePos",
          "kind": "modify-arg",
          "method": "tickChunk",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;randomTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/chunk_random/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "immutablePos2",
          "kind": "modify-arg",
          "method": "tickChunk",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/material/FluidState;randomTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/composter/ComposterMixin$ComposterBlockComposterInventoryMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock$InputContainer"
          ],
          "handler": "getSlotsForFace",
          "kind": "overwrite",
          "method": "getSlotsForFace",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/composter/ComposterMixin$ComposterBlockDummyInventoryMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock$EmptyContainer"
          ],
          "handler": "getSlotsForFace",
          "kind": "overwrite",
          "method": "getSlotsForFace",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/composter/ComposterMixin$ComposterBlockFullComposterInventoryMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock$OutputContainer"
          ],
          "handler": "getSlotsForFace",
          "kind": "overwrite",
          "method": "getSlotsForFace",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/deep_passengers/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "getIndirectPassengers",
          "kind": "overwrite",
          "method": "getIndirectPassengers",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/deep_passengers/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "getIndirectPassengersStream",
          "kind": "overwrite",
          "method": "getIndirectPassengersStream",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/deep_passengers/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "getSelfAndPassengers",
          "kind": "overwrite",
          "method": "getSelfAndPassengers",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/deep_passengers/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "getPassengersAndSelf",
          "kind": "overwrite",
          "method": "getPassengersAndSelf",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/entity_iteration/EntitySectionMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySection"
          ],
          "handler": "directIterator",
          "kind": "redirect",
          "method": "getEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/ClassInstanceMultiMap;iterator()Ljava/util/Iterator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/entity_tracker/ChunkMap$TrackedEntityMixin",
          "targets": [
            "net/minecraft/server/level/ChunkMap$TrackedEntity"
          ],
          "handler": "useFasterCollection",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/Sets;newIdentityHashSet()Ljava/util/Set;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/enum_values/piston_block/PistonBaseBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/piston/PistonBaseBlock"
          ],
          "handler": "removeAllocation",
          "kind": "redirect",
          "method": "getNeighborSignal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;values()[Lnet/minecraft/core/Direction;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/enum_values/piston_handler/PistonStructureResolverMixin",
          "targets": [
            "net/minecraft/world/level/block/piston/PistonStructureResolver"
          ],
          "handler": "removeAllocation",
          "kind": "redirect",
          "method": "addBranchingBlocks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;values()[Lnet/minecraft/core/Direction;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/enum_values/redstone_wire/RedstoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedstoneWireBlock"
          ],
          "handler": "removeAllocation1",
          "kind": "redirect",
          "method": "affectNeighborsAfterRemoval",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;values()[Lnet/minecraft/core/Direction;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/enum_values/redstone_wire/RedstoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedstoneWireBlock"
          ],
          "handler": "removeAllocation2",
          "kind": "redirect",
          "method": "checkCornerChangeAt",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;values()[Lnet/minecraft/core/Direction;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/explosion_behavior/EntityBasedExplosionDamageCalculatorMixin",
          "targets": [
            "net/minecraft/world/level/EntityBasedExplosionDamageCalculator"
          ],
          "handler": "getBlockExplosionResistance",
          "kind": "overwrite",
          "method": "getBlockExplosionResistance",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin$Type",
          "targets": [
            "net/minecraft/nbt/CompoundTag$1"
          ],
          "handler": "useFasterCollection",
          "kind": "modify-variable",
          "method": "loadCompound",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lcom/google/common/collect/Maps;newHashMap()Ljava/util/HashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin$Type",
          "targets": [
            "net/minecraft/nbt/CompoundTag$1"
          ],
          "handler": "removeOldMapAlloc",
          "kind": "redirect",
          "method": "loadCompound",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/Maps;newHashMap()Ljava/util/HashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin",
          "targets": [
            "net/minecraft/nbt/CompoundTag"
          ],
          "handler": "useFasterCollection",
          "kind": "modify-arg",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/nbt/CompoundTag;<init>(Ljava/util/Map;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin",
          "targets": [
            "net/minecraft/nbt/CompoundTag"
          ],
          "handler": "removeOldMapAlloc",
          "kind": "redirect",
          "method": "<init>",
          "at": "NEW",
          "at_target": "()Ljava/util/HashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin",
          "targets": [
            "net/minecraft/nbt/CompoundTag"
          ],
          "handler": "copy",
          "kind": "overwrite",
          "method": "copy",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/flatten_states/FluidStateMixin",
          "targets": [
            "net/minecraft/world/level/material/FluidState"
          ],
          "handler": "initFluidCache",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/material/FluidState#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/flatten_states/FluidStateMixin",
          "targets": [
            "net/minecraft/world/level/material/FluidState"
          ],
          "handler": "isEmpty",
          "kind": "overwrite",
          "method": "isEmpty",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/fluid/flow/FlowingFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid"
          ],
          "handler": "isSign",
          "kind": "redirect",
          "method": "canHoldAnyFluid",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;is(Lnet/minecraft/tags/TagKey;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/fluid/flow/FlowingFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid"
          ],
          "handler": "getSpread",
          "kind": "inject",
          "method": "getSpread",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/material/FlowingFluid#getSpread HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/fluid/flow/FlowingFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid"
          ],
          "handler": "canPassThrough",
          "kind": "overwrite",
          "method": "canPassThrough",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/fluid/flow/FlowingFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid"
          ],
          "handler": "isWaterHole",
          "kind": "overwrite",
          "method": "isWaterHole",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/AbstractContainerMenuMixin",
          "targets": [
            "net/minecraft/world/inventory/AbstractContainerMenu"
          ],
          "handler": "getFastOutputStrength",
          "kind": "inject",
          "method": "getRedstoneSignalFromContainer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/Container;getContainerSize()I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/AbstractContainerMenu#getRedstoneSignalFromContainer INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/BlockBehaviourMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour"
          ],
          "handler": "notifyOnShapeUpdate",
          "kind": "inject",
          "method": "updateShape",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour#updateShape HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "isAlwaysAssignable",
          "kind": "redirect",
          "method": "find",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Class;isAssignableFrom(Ljava/lang/Class;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/ComposterMixin$ComposterBlockComposterInventoryMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock$InputContainer"
          ],
          "handler": "resetDirty",
          "kind": "inject",
          "method": "setChanged",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/ComposterBlock$InputContainer;removeItemNoUpdate(I)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/ComposterBlock$InputContainer#setChanged INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/EntityDataAccessorMixin",
          "targets": [
            "net/minecraft/server/commands/data/EntityDataAccessor"
          ],
          "handler": "updateEntityTrackerEngine",
          "kind": "inject",
          "method": "setData",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;setUUID(Ljava/util/UUID;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/commands/data/EntityDataAccessor#setData INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "getExtractInventory",
          "kind": "redirect",
          "method": "suckInItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getSourceContainer(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/block/entity/Hopper;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/Container;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumInsert",
          "kind": "inject",
          "method": "ejectItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;isFullContainer(Lnet/minecraft/world/Container;Lnet/minecraft/core/Direction;)Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#ejectItems INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "getLithiumOutputInventory",
          "kind": "redirect",
          "method": "ejectItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getAttachedContainer(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/HopperBlockEntity;)Lnet/minecraft/world/Container;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumExtract",
          "kind": "inject",
          "method": "suckInItems",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/Direction;DOWN:Lnet/minecraft/core/Direction;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#suckInItems FIELD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumHopperIsFull",
          "kind": "redirect",
          "method": "tryMoveItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;inventoryFull()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumHopperIsEmpty",
          "kind": "redirect",
          "method": "tryMoveItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;isEmpty()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "lithiumGetInputItemEntities",
          "kind": "redirect",
          "method": "suckInItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getItemsAtAndAbove(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/block/entity/Hopper;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "invalidateOnSetCachedState",
          "kind": "inject",
          "method": "setBlockState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#setBlockState HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "checkSleepingConditions",
          "kind": "inject",
          "method": "pushItemsTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;tryMoveItems(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/entity/HopperBlockEntity;Ljava/util/function/BooleanSupplier;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#pushItemsTick INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/HopperBlock"
          ],
          "handler": "updateBlockEntity",
          "kind": "inject",
          "method": "neighborChanged",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/HopperBlock#neighborChanged HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/HopperBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/HopperBlock"
          ],
          "handler": "workAroundVanillaUpdateSuppression",
          "kind": "inject",
          "method": "onPlace",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/HopperBlock;checkPoweredState(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/HopperBlock#onPlace INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/OldMinecartBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior"
          ],
          "handler": "avoidNotifyingMovementListeners",
          "kind": "inject",
          "method": "moveAlongTrack",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/hopper/OldMinecartBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior"
          ],
          "handler": "notifyMovementListeners",
          "kind": "inject",
          "method": "moveAlongTrack",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/moving_block_shapes/PistonMovingBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/piston/PistonMovingBlockEntity"
          ],
          "handler": "skipVoxelShapeUnion",
          "kind": "inject",
          "method": "getCollisionShape",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;getStepX()I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/piston/PistonMovingBlockEntity#getCollisionShape INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/redstone_wire/DefaultRedstoneWireEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/redstone/DefaultRedstoneWireEvaluator"
          ],
          "handler": "calculateTargetStrengthFaster",
          "kind": "inject",
          "method": "calculateTargetStrength",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/redstone/DefaultRedstoneWireEvaluator#calculateTargetStrength HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/redstone_wire/RedstoneWireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RedstoneWireBlock"
          ],
          "handler": "getBlockSignalFaster",
          "kind": "inject",
          "method": "getBlockSignal",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RedstoneWireBlock#getBlockSignal HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block/redstone_wire/RedstoneWireEvaluatorMixin",
          "targets": [
            "net/minecraft/world/level/redstone/RedstoneWireEvaluator"
          ],
          "handler": "getIncomingWireSignalFaster",
          "kind": "inject",
          "method": "getIncomingWireSignal",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/redstone/RedstoneWireEvaluator#getIncomingWireSignal HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block_pattern_matching/BlockPatternMixin",
          "targets": [
            "net/minecraft/world/level/block/state/pattern/BlockPattern"
          ],
          "handler": "countRequiredBlocksBeforeExpensiveSearch",
          "kind": "inject",
          "method": "find",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos;offset(III)Lnet/minecraft/core/BlockPos;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/pattern/BlockPattern#find INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/block_pattern_matching/EnderDragonFightMixin",
          "targets": [
            "net/minecraft/world/level/dimension/end/EnderDragonFight"
          ],
          "handler": "setPatternToDragonPattern",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/dimension/end/EnderDragonFight#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/cached_hashcode/FlowingFluid$BlockStatePairKeyMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey"
          ],
          "handler": "generateHash",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/cached_hashcode/FlowingFluid$BlockStatePairKeyMixin",
          "targets": [
            "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey"
          ],
          "handler": "hashCode",
          "kind": "overwrite",
          "method": "hashCode",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/entity_class_groups/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "add",
          "kind": "modify-variable",
          "method": "add",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/entity_class_groups/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "remove",
          "kind": "modify-variable",
          "method": "remove",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "setBlockStateNoLocking",
          "kind": "redirect",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunkSection;setBlockState(IIILnet/minecraft/world/level/block/state/BlockState;Z)Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "removeLockHelper",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "removeLockHelper",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "removeLockHelper",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "acquire",
          "kind": "overwrite",
          "method": "acquire",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_locking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "release",
          "kind": "overwrite",
          "method": "release",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/SimpleBitStorageMixin",
          "targets": [
            "net/minecraft/util/SimpleBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "getAndSet",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/SimpleBitStorageMixin",
          "targets": [
            "net/minecraft/util/SimpleBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "set",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/SimpleBitStorageMixin",
          "targets": [
            "net/minecraft/util/SimpleBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "get",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/ZeroBitStorageMixin",
          "targets": [
            "net/minecraft/util/ZeroBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "getAndSet",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/ZeroBitStorageMixin",
          "targets": [
            "net/minecraft/util/ZeroBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "set",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/no_validation/ZeroBitStorageMixin",
          "targets": [
            "net/minecraft/util/ZeroBitStorage"
          ],
          "handler": "skipValidation",
          "kind": "redirect",
          "method": "get",
          "at": "INVOKE",
          "at_target": "Lorg/apache/commons/lang3/Validate;inclusiveBetween(JJJ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/serialization/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "pack",
          "kind": "overwrite",
          "method": "pack",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/serialization/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "returnDummyInstance",
          "kind": "wrap-operation",
          "method": "count",
          "at": "NEW",
          "at_target": "()Lit/unimi/dsi/fastutil/ints/Int2IntOpenHashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/serialization/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "getFastCountingLambda",
          "kind": "modify-arg",
          "method": "count",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/BitStorage;getAll(Ljava/util/function/IntConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/chunk/serialization/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "fastForEachAndCancelMethod",
          "kind": "inject",
          "method": "count",
          "at": "INVOKE",
          "at_target": "Lit/unimi/dsi/fastutil/ints/Int2IntOpenHashMap;int2IntEntrySet()Lit/unimi/dsi/fastutil/ints/Int2IntMap$FastEntrySet;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#count INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/base_tick/unused_water_supply/AgeableWaterCreatureMixin",
          "targets": [
            "net/minecraft/world/entity/animal/AgeableWaterCreature"
          ],
          "handler": "isServerSide",
          "kind": "wrap-with-condition",
          "method": "baseTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/AgeableWaterCreature;handleAirSupply(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/AllayMixin",
          "targets": [
            "net/minecraft/world/entity/animal/allay/Allay"
          ],
          "handler": "isServerSide",
          "kind": "wrap-with-condition",
          "method": "mobInteract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/Brain;setMemory(Lnet/minecraft/world/entity/ai/memory/MemoryModuleType;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/CopperGolemMixin",
          "targets": [
            "net/minecraft/world/entity/animal/golem/CopperGolem"
          ],
          "handler": "isServerSide",
          "kind": "wrap-with-condition",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/Brain;setMemory(Lnet/minecraft/world/entity/ai/memory/MemoryModuleType;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "doNotCreateClientBrain",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;makeBrain(Lnet/minecraft/world/entity/ai/Brain$Packed;)Lnet/minecraft/world/entity/ai/Brain;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/MemorySlotMixin",
          "targets": [
            "net/minecraft/world/entity/ai/memory/MemorySlot"
          ],
          "handler": "cancelIfDummyMemorySlot",
          "kind": "inject",
          "method": "set",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/memory/MemorySlot#set HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/particle/biome_particles/AmbientParticleSettingsMixin",
          "targets": [
            "net/minecraft/world/attribute/AmbientParticle"
          ],
          "handler": "findMaximumChance",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/attribute/AmbientParticle#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/client_tick/particle/biome_particles/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "evaluateChanceEarly",
          "kind": "redirect",
          "method": "doAnimateTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;isCollisionShapeFullBlock(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/attributes/AttributeMapMixin",
          "targets": [
            "net/minecraft/world/entity/ai/attributes/AttributeMap"
          ],
          "handler": "initCollections",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/attributes/AttributeMap#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/brain/BrainMixin",
          "targets": [
            "net/minecraft/world/entity/ai/Brain"
          ],
          "handler": "reinitializeBrainCollections",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/Brain#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/entity_by_type/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/ClassInstanceMultiMap#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/entity_filtering/ClassInstanceMultiMapMixin",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "find",
          "kind": "overwrite",
          "method": "find",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/entity_ticking/EntityTickListMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntityTickList"
          ],
          "handler": "ensureActiveIsNotIterated",
          "kind": "overwrite",
          "method": "ensureActiveIsNotIterated",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/mob_spawning/MobSpawnSettingsMixin",
          "targets": [
            "net/minecraft/world/level/biome/MobSpawnSettings"
          ],
          "handler": "reinit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/biome/MobSpawnSettings#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/collections/mob_spawning/WeightedListMixin",
          "targets": [
            "net/minecraft/util/random/WeightedList"
          ],
          "handler": "init",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;copyOf(Ljava/util/Collection;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/debug/palette/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "addExceptionInfo",
          "kind": "wrap-operation",
          "method": "handleLevelChunkWithLight",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientChunkCache;replaceWithPacketData(IILnet/minecraft/network/protocol/game/ClientboundLevelChunkPacketData;)Lnet/minecraft/world/level/chunk/LevelChunk;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/debug/palette/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "checkConsistency",
          "kind": "inject",
          "method": "read",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#read RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "trySkip",
          "kind": "inject",
          "method": "flushStep",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#flushStep HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "avoidAlloc",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;makeEnumMap(Ljava/lang/Class;Ljava/util/function/Function;)Ljava/util/Map;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "avoidAlloc",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Ljava/util/EnumSet;noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "avoidAlloc",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "NEW",
          "at_target": "()Ljava/util/ArrayList;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "isNotNull",
          "kind": "wrap-with-condition",
          "method": "applyAndClear",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "isNotNull2",
          "kind": "wrap-with-condition",
          "method": "flushStep",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "getOrNull",
          "kind": "wrap-operation",
          "method": "flushStep",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "removeOrFalse",
          "kind": "wrap-operation",
          "method": "flushStep",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;remove(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "addAllNonNull",
          "kind": "wrap-operation",
          "method": "flushStep",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;addAll(Ljava/util/Collection;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "apply",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#apply HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "initBeforeAndGet",
          "kind": "wrap-operation",
          "method": "runBefore",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/block_effects/InsideBlockEffectApplier$StepBasedCollectorMixin",
          "targets": [
            "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector"
          ],
          "handler": "initAfterAndGet",
          "kind": "wrap-operation",
          "method": "runAfter",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/intersection/EntityGetterMixin",
          "targets": [
            "net/minecraft/world/level/EntityGetter"
          ],
          "handler": "getCollisionEntities",
          "kind": "redirect",
          "method": "getEntityCollisions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/EntityGetter;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/movement/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "postponeGetEntities",
          "kind": "redirect",
          "method": "collide",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntityCollisions(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/movement/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "collideMovementWithPostponedGetEntities",
          "kind": "redirect",
          "method": "collide",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;collideBoundingBox(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/AABB;Lnet/minecraft/world/level/Level;Ljava/util/List;)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/movement/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "collectEntities",
          "kind": "modify-arg",
          "method": "collide",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;collectCollidersIgnoringWorldBorder(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/level/Level;Ljava/util/List;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/movement/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "collideBoundingBox",
          "kind": "overwrite",
          "method": "collideBoundingBox",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/AbstractBoatMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/boat/AbstractBoat"
          ],
          "handler": "getOtherPushableEntities",
          "kind": "redirect",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onPositionChanged",
          "kind": "inject",
          "method": "setPosRaw",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/SectionPos;blockToSectionCoord(I)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#setPosRaw INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onBaseTick",
          "kind": "inject",
          "method": "baseTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;isPassenger()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#baseTick INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onBlockCached",
          "kind": "inject",
          "method": "getInBlockState",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/level/Level;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#getInBlockState INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntitySectionMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySection"
          ],
          "handler": "onEntityAdded",
          "kind": "inject",
          "method": "add",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/EntitySection#add RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntitySectionMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySection"
          ],
          "handler": "onEntityRemoved",
          "kind": "inject",
          "method": "remove",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/EntitySection#remove RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntitySelectorMixin",
          "targets": [
            "net/minecraft/world/entity/EntitySelector"
          ],
          "handler": "getEntityPushablePredicate",
          "kind": "redirect",
          "method": "pushableBy",
          "at": "INVOKE",
          "at_target": "Ljava/util/function/Predicate;and(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getOtherPushableEntities",
          "kind": "redirect",
          "method": "getPushableEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/OldMinecartBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior"
          ],
          "handler": "getOtherPushableEntities",
          "kind": "redirect",
          "method": "pushAndPickupEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/EntityEquipmentMixin",
          "targets": [
            "net/minecraft/world/entity/EntityEquipment"
          ],
          "handler": "updateBeforeSetAll",
          "kind": "inject",
          "method": "setAll",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/EntityEquipment#setAll HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/EntityEquipmentMixin",
          "targets": [
            "net/minecraft/world/entity/EntityEquipment"
          ],
          "handler": "updateAfterSetAll",
          "kind": "inject",
          "method": "setAll",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/EntityEquipment#setAll RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/EntityEquipmentMixin",
          "targets": [
            "net/minecraft/world/entity/EntityEquipment"
          ],
          "handler": "updateOnClear",
          "kind": "inject",
          "method": "clear",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/EntityEquipment#clear HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/enchantment_ticking/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "maybeHasAnyTickableEnchantments",
          "kind": "wrap-with-condition",
          "method": "baseTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/enchantment/EnchantmentHelper;tickEffects(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/equipment_changes/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "skipSentEquipmentComparison",
          "kind": "inject",
          "method": "collectEquipmentChanges",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#collectEquipmentChanges HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/equipment_tracking/equipment_changes/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "resetEquipmentChanged",
          "kind": "inject",
          "method": "detectEquipmentUpdates",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;handleHandSwap(Ljava/util/Map;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#detectEquipmentUpdates INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_elytra_check/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "skipStopFlying",
          "kind": "inject",
          "method": "updateFallFlying",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;canGlide()Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#updateFallFlying INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_powder_snow_check/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "delayGetBlockState",
          "kind": "redirect",
          "method": "tryAddFrost",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;getBlockStateOnLegacy()Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_powder_snow_check/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "delayAirTest",
          "kind": "redirect",
          "method": "tryAddFrost",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;isAir()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_powder_snow_check/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "doDelayedBlockStateAirTest",
          "kind": "redirect",
          "method": "tryAddFrost",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;getAttribute(Lnet/minecraft/core/Holder;)Lnet/minecraft/world/entity/ai/attributes/AttributeInstance;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/fast_retrieval/EntitySectionStorageMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySectionStorage"
          ],
          "handler": "forEachInBox",
          "kind": "inject",
          "method": "forEachAccessibleNonEmptySection",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/core/SectionPos;posToSectionCoord(D)I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/EntitySectionStorage#forEachAccessibleNonEmptySection INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/framed_maps/MapItemSavedDataMixin",
          "targets": [
            "net/minecraft/world/level/saveddata/maps/MapItemSavedData"
          ],
          "handler": "hasRemovedAny",
          "kind": "wrap-with-condition",
          "method": "removeDecoration",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/saveddata/maps/MapItemSavedData;setDecorationsDirty()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/framed_maps/MapItemSavedDataMixin",
          "targets": [
            "net/minecraft/world/level/saveddata/maps/MapItemSavedData"
          ],
          "handler": "removeIfCannotSeeMap",
          "kind": "wrap-operation",
          "method": "tickCarriedBy",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;remove(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/framed_maps/MapItemSavedDataMixin",
          "targets": [
            "net/minecraft/world/level/saveddata/maps/MapItemSavedData"
          ],
          "handler": "removeIfCannotSeeMap",
          "kind": "wrap-operation",
          "method": "tickCarriedBy",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;remove(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/framed_maps/MapItemSavedDataMixin",
          "targets": [
            "net/minecraft/world/level/saveddata/maps/MapItemSavedData"
          ],
          "handler": "contains",
          "kind": "wrap-operation",
          "method": "tickCarriedBy",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Inventory;contains(Ljava/util/function/Predicate;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/framed_maps/MapItemSavedDataMixin",
          "targets": [
            "net/minecraft/world/level/saveddata/maps/MapItemSavedData"
          ],
          "handler": "setPlayerCanSeeFramedMap",
          "kind": "inject",
          "method": "tickCarriedBy",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/saveddata/maps/MapItemSavedData;mapMatcher(Lnet/minecraft/world/item/ItemStack;)Ljava/util/function/Predicate;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/saveddata/maps/MapItemSavedData#tickCarriedBy INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/framed_maps/MapItemSavedDataMixin",
          "targets": [
            "net/minecraft/world/level/saveddata/maps/MapItemSavedData"
          ],
          "handler": "getPlayerOrNullIfUpdatingMultiplePlayers",
          "kind": "modify-arg",
          "method": "tickCarriedBy",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;equals(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/HappyGhastMixin",
          "targets": [
            "net/minecraft/world/entity/animal/happyghast/HappyGhast"
          ],
          "handler": "updateRegisteredNavigation",
          "kind": "inject",
          "method": "adultGhastSetup",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/happyghast/HappyGhast#adultGhastSetup RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/HappyGhastMixin",
          "targets": [
            "net/minecraft/world/entity/animal/happyghast/HappyGhast"
          ],
          "handler": "updateRegisteredNavigation1",
          "kind": "inject",
          "method": "babyGhastSetup",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/happyghast/HappyGhast#babyGhastSetup RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "handleStopRiding",
          "kind": "inject",
          "method": "stopRiding",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#stopRiding RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "onNavigationReplacement",
          "kind": "inject",
          "method": "startRiding",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#startRiding RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/PathNavigationMixin",
          "targets": [
            "net/minecraft/world/entity/ai/navigation/PathNavigation"
          ],
          "handler": "updateListeningState",
          "kind": "inject",
          "method": "recomputePath",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/entity/ai/navigation/PathNavigation;createPath(Lnet/minecraft/core/BlockPos;I)Lnet/minecraft/world/level/pathfinder/Path;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/navigation/PathNavigation#recomputePath INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/PathNavigationMixin",
          "targets": [
            "net/minecraft/world/entity/ai/navigation/PathNavigation"
          ],
          "handler": "updateListeningState2",
          "kind": "inject",
          "method": "moveTo",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/navigation/PathNavigation#moveTo RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/PathNavigationMixin",
          "targets": [
            "net/minecraft/world/entity/ai/navigation/PathNavigation"
          ],
          "handler": "stopListening",
          "kind": "inject",
          "method": "stop",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/navigation/PathNavigation#stop RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevel$EntityCallbacksMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel$EntityCallbacks"
          ],
          "handler": "inj",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel$EntityCallbacks#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevel$EntityCallbacksMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel$EntityCallbacks"
          ],
          "handler": "startListeningOnEntityLoad",
          "kind": "redirect",
          "method": "onTrackingStart",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevel$EntityCallbacksMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel$EntityCallbacks"
          ],
          "handler": "stopListeningOnEntityUnload",
          "kind": "redirect",
          "method": "onTrackingEnd",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;remove(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "getActiveListeners",
          "kind": "redirect",
          "method": "sendBlockUpdated",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;iterator()Ljava/util/Iterator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/inactive_navigations/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "updateActiveListeners",
          "kind": "inject",
          "method": "sendBlockUpdated",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;iterator()Ljava/util/Iterator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#sendBlockUpdated INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/projectile_projectile_collisions/ProjectileUtilMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/ProjectileUtil"
          ],
          "handler": "getEntitiesForCollision",
          "kind": "wrap-operation",
          "method": "getEntityHitResult",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/replace_entitytype_predicates/ArmorStandMixin",
          "targets": [
            "net/minecraft/world/entity/decoration/ArmorStand"
          ],
          "handler": "getMinecartsDirectly",
          "kind": "redirect",
          "method": "pushEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/replace_entitytype_predicates/GolemRandomStrollInVillageGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/GolemRandomStrollInVillageGoal"
          ],
          "handler": "getEntities",
          "kind": "redirect",
          "method": "getPositionTowardsVillagerWhoWantsGolem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getEntities(Lnet/minecraft/world/level/entity/EntityTypeTest;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/replace_entitytype_predicates/LlamaFollowCaravanGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal"
          ],
          "handler": "getLlamasForCaravan",
          "kind": "redirect",
          "method": "canUse",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/replace_entitytype_predicates/OldMinecartBehaviorMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior"
          ],
          "handler": "getOtherAbstractMinecarts",
          "kind": "redirect",
          "method": "pushAndPickupEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/entity/sprinting_particles/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "skipParticlesOnServerSide",
          "kind": "redirect",
          "method": "baseTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;canSpawnSprintParticle()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "removeVicinityCache",
          "kind": "inject",
          "method": "remove",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#remove HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "cancelIfSkippable",
          "kind": "inject",
          "method": "checkSupportingBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;getBoundingBox()Lnet/minecraft/world/phys/AABB;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#checkSupportingBlock INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "cacheSupportingBlockSearch",
          "kind": "inject",
          "method": "checkSupportingBlock",
          "at": "INVOKE_ASSIGN",
          "at_target": "Lnet/minecraft/world/level/Level;findSupportingBlock(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#checkSupportingBlock INVOKE_ASSIGN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "uncacheSupportingBlockSearch",
          "kind": "inject",
          "method": "checkSupportingBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;findSupportingBlock(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#checkSupportingBlock INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "uncacheSupportingBlockSearch1",
          "kind": "inject",
          "method": "checkSupportingBlock",
          "at": "INVOKE",
          "at_target": "Ljava/util/Optional;empty()Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#checkSupportingBlock INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/suffocation/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "isInsideWall",
          "kind": "inject",
          "method": "isInWall",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos;betweenClosedStream(Lnet/minecraft/world/phys/AABB;)Ljava/util/stream/Stream;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#isInWall INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/experimental/entity/item_entity_merging/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "getItems",
          "kind": "redirect",
          "method": "mergeWithNeighbours",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/gen/cached_generator_settings/NoiseBasedChunkGeneratorMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator"
          ],
          "handler": "getSeaLevel",
          "kind": "overwrite",
          "method": "getSeaLevel",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "above",
          "kind": "overwrite",
          "method": "above",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "above",
          "kind": "overwrite",
          "method": "above",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "below",
          "kind": "overwrite",
          "method": "below",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "below",
          "kind": "overwrite",
          "method": "below",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "north",
          "kind": "overwrite",
          "method": "north",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "north",
          "kind": "overwrite",
          "method": "north",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "south",
          "kind": "overwrite",
          "method": "south",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "south",
          "kind": "overwrite",
          "method": "south",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "west",
          "kind": "overwrite",
          "method": "west",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "west",
          "kind": "overwrite",
          "method": "west",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "east",
          "kind": "overwrite",
          "method": "east",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "east",
          "kind": "overwrite",
          "method": "east",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "east",
          "kind": "overwrite",
          "method": "east",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "east",
          "kind": "overwrite",
          "method": "east",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "west",
          "kind": "overwrite",
          "method": "west",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "west",
          "kind": "overwrite",
          "method": "west",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "south",
          "kind": "overwrite",
          "method": "south",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "south",
          "kind": "overwrite",
          "method": "south",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "north",
          "kind": "overwrite",
          "method": "north",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "north",
          "kind": "overwrite",
          "method": "north",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "below",
          "kind": "overwrite",
          "method": "below",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "below",
          "kind": "overwrite",
          "method": "below",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "above",
          "kind": "overwrite",
          "method": "above",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/BlockPosMixin",
          "targets": [
            "net/minecraft/core/BlockPos"
          ],
          "handler": "above",
          "kind": "overwrite",
          "method": "above",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "reinit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/Direction#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getStepX",
          "kind": "overwrite",
          "method": "getStepX",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getStepY",
          "kind": "overwrite",
          "method": "getStepY",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_blockpos/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getStepZ",
          "kind": "overwrite",
          "method": "getStepZ",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/AABBMixin",
          "targets": [
            "net/minecraft/world/phys/AABB"
          ],
          "handler": "min",
          "kind": "overwrite",
          "method": "min",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/AABBMixin",
          "targets": [
            "net/minecraft/world/phys/AABB"
          ],
          "handler": "max",
          "kind": "overwrite",
          "method": "max",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/AxisCycleDirectionMixin$BackwardMixin",
          "targets": [
            "net/minecraft/core/AxisCycle$3"
          ],
          "handler": "cycle",
          "kind": "overwrite",
          "method": "cycle",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/AxisCycleDirectionMixin$ForwardMixin",
          "targets": [
            "net/minecraft/core/AxisCycle$2"
          ],
          "handler": "cycle",
          "kind": "overwrite",
          "method": "cycle",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getOpposite",
          "kind": "overwrite",
          "method": "getOpposite",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/fast_util/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getRandom",
          "kind": "overwrite",
          "method": "getRandom",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/sine_lut/MthMixin",
          "targets": [
            "net/minecraft/util/Mth"
          ],
          "handler": "onClassInit",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/Mth#<clinit> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/sine_lut/MthMixin",
          "targets": [
            "net/minecraft/util/Mth"
          ],
          "handler": "sin",
          "kind": "overwrite",
          "method": "sin",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/math/sine_lut/MthMixin",
          "targets": [
            "net/minecraft/util/Mth"
          ],
          "handler": "cos",
          "kind": "overwrite",
          "method": "cos",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/ai/sensor/frog_attackables/FrogAttackablesSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/FrogAttackablesSensor"
          ],
          "handler": "checkTypeAndPredicate",
          "kind": "redirect",
          "method": "isMatchingEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/sensing/Sensor;isEntityAttackable(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/ai/sensor/frog_attackables/FrogAttackablesSensorMixin",
          "targets": [
            "net/minecraft/world/entity/ai/sensing/FrogAttackablesSensor"
          ],
          "handler": "skipCheckTypeAgain",
          "kind": "redirect",
          "method": "isMatchingEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/frog/Frog;canEat(Lnet/minecraft/world/entity/LivingEntity;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/spawning/NaturalSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/NaturalSpawner"
          ],
          "handler": "iterateEntitiesChunkAware",
          "kind": "redirect",
          "method": "createState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getAllEntities()Ljava/lang/Iterable;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "initSupportCache",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "updateSupportCache",
          "kind": "inject",
          "method": "setBlockState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setBlockState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/DirectBlockEntityTickInvokerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk$BoundTickingBlockEntity"
          ],
          "handler": "getCachedState",
          "kind": "redirect",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/DirectBlockEntityTickInvokerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk$BoundTickingBlockEntity"
          ],
          "handler": "cachedIsSupported",
          "kind": "redirect",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/BlockEntityType;isValid(Lnet/minecraft/world/level/block/state/BlockState;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "createBlockEntityWithCachedStateFix",
          "kind": "redirect",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/EntityBlock;newBlockEntity(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/level/block/entity/BlockEntity;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/block_entity_ticking/support_cache/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "fixCachedState",
          "kind": "inject",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/BlockEntity;setBlockState(Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": "block_changed",
          "why": "a block changes"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/expiring_chunk_tickets/TicketStorageMixin",
          "targets": [
            "net/minecraft/world/level/TicketStorage"
          ],
          "handler": "registerExpiringTicket",
          "kind": "inject",
          "method": "addTicket",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/TicketStorage#addTicket INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/expiring_chunk_tickets/TicketStorageMixin",
          "targets": [
            "net/minecraft/world/level/TicketStorage"
          ],
          "handler": "unregisterExpiringTicket",
          "kind": "inject",
          "method": "removeTicket",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;isEmpty()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/TicketStorage#removeTicket INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/world/expiring_chunk_tickets/TicketStorageMixin",
          "targets": [
            "net/minecraft/world/level/TicketStorage"
          ],
          "handler": "fixOtherCollection",
          "kind": "inject",
          "method": "removeTicketIf",
          "at": "INVOKE",
          "at_target": "Lit/unimi/dsi/fastutil/objects/ObjectIterator;remove()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/TicketStorage#removeTicketIf INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/profiler/ProfilerMixin",
          "targets": [
            "net/minecraft/util/profiling/Profiler"
          ],
          "handler": "placeProfilerInStaticFields",
          "kind": "inject",
          "method": "startUsing",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/profiling/Profiler#startUsing RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/profiler/ProfilerMixin",
          "targets": [
            "net/minecraft/util/profiling/Profiler"
          ],
          "handler": "removeProfilerFromStaticFields",
          "kind": "inject",
          "method": "stopUsing",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/profiling/Profiler#stopUsing RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/blockstate_cache/BlockMixin",
          "targets": [
            "net/minecraft/world/level/block/Block"
          ],
          "handler": "isShapeFullBlock",
          "kind": "overwrite",
          "method": "isShapeFullBlock",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "redirectInstanceOf",
          "kind": "modify-constant",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "initFields",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/shapes/EntityCollisionContext;<init>(ZZDLnet/minecraft/world/item/ItemStack;ZLnet/minecraft/world/entity/Entity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#<init> INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "isHolding",
          "kind": "inject",
          "method": "isHoldingItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#isHoldingItem HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "initHeldItem",
          "kind": "inject",
          "method": "getHeldItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#getHeldItem HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "skipIsDescending",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;isDescending()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "initVars",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/EntityCollisionContext"
          ],
          "handler": "initIsDescending",
          "kind": "inject",
          "method": "isDescending",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/EntityCollisionContext#isDescending HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/optimized_matching/ShapesMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/Shapes"
          ],
          "handler": "cuboidMatchesAnywhere",
          "kind": "inject",
          "method": "joinIsNotEmpty",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/shapes/VoxelShape;getCoords(Lnet/minecraft/core/Direction$Axis;)Lit/unimi/dsi/fastutil/doubles/DoubleList;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/Shapes#joinIsNotEmpty INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/precompute_shape_arrays/CubePointRangeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/CubePointRange"
          ],
          "handler": "initScale",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/CubePointRange#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/precompute_shape_arrays/CubePointRangeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/CubePointRange"
          ],
          "handler": "getDouble",
          "kind": "overwrite",
          "method": "getDouble",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/precompute_shape_arrays/CubeVoxelShapeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/CubeVoxelShape"
          ],
          "handler": "onConstructed",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/CubeVoxelShape#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/precompute_shape_arrays/CubeVoxelShapeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/CubeVoxelShape"
          ],
          "handler": "getCoords",
          "kind": "overwrite",
          "method": "getCoords",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/shape_merging/ShapesMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/Shapes"
          ],
          "handler": "injectCustomListPair",
          "kind": "inject",
          "method": "createIndexMerger",
          "at": "NEW",
          "at_target": "(Lit/unimi/dsi/fastutil/doubles/DoubleList;Lit/unimi/dsi/fastutil/doubles/DoubleList;ZZ)Lnet/minecraft/world/phys/shapes/IndirectMerger;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/phys/shapes/Shapes#createIndexMerger NEW"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/specialized_shapes/ShapesMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/Shapes"
          ],
          "handler": "create",
          "kind": "overwrite",
          "method": "create",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/specialized_shapes/VoxelShapeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/VoxelShape"
          ],
          "handler": "collideX",
          "kind": "overwrite",
          "method": "collideX",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/shapes/specialized_shapes/VoxelShapeMixin",
          "targets": [
            "net/minecraft/world/phys/shapes/VoxelShape"
          ],
          "handler": "findIndex",
          "kind": "overwrite",
          "method": "findIndex",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSection$BlockCounterMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection$1BlockCounter"
          ],
          "handler": "acceptLithium",
          "kind": "inject",
          "method": "accept",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection$1BlockCounter#accept HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "initAirSection",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "initLithiumBlockCounter",
          "kind": "modify-arg",
          "method": "recalcBlockCounts",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/PalettedContainer;count(Lnet/minecraft/world/level/chunk/PalettedContainer$CountConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "createFlagCounters",
          "kind": "inject",
          "method": "recalcBlockCounts",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#recalcBlockCounts HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "resetData",
          "kind": "inject",
          "method": "read",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#read HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/block_tracking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "updateFlagCounters",
          "kind": "inject",
          "method": "setBlockState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#setBlockState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/chunk_status_tracking/ChunkHolderMixin",
          "targets": [
            "net/minecraft/server/level/ChunkHolder"
          ],
          "handler": "trackUpdate",
          "kind": "inject",
          "method": "updateFutures",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/FullChunkStatus;isOrAfter(Lnet/minecraft/server/level/FullChunkStatus;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkHolder#updateFutures INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/chunk_status_tracking/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "onChunkFull",
          "kind": "inject",
          "method": "setFullStatus",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#setFullStatus RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/data_storage/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "initLithiumData",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/Level#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/EntitySectionMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySection"
          ],
          "handler": "swapStatus",
          "kind": "modify-variable",
          "method": "updateChunkStatus",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/ServerEntityManagerListenerMixin",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/ServerEntityManagerListenerMixin",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback"
          ],
          "handler": "updateEntityTrackerEngine",
          "kind": "inject",
          "method": "onMove",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/ServerEntityManagerListenerMixin",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback"
          ],
          "handler": "onAddEntity",
          "kind": "inject",
          "method": "onMove",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/entity/EntitySection;add(Lnet/minecraft/world/level/entity/EntityAccess;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/ServerEntityManagerListenerMixin",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback"
          ],
          "handler": "onRemoveEntity",
          "kind": "inject",
          "method": "onRemove",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onRemove HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/entity_section_position/EntitySectionStorageMixin",
          "targets": [
            "net/minecraft/world/level/entity/EntitySectionStorage"
          ],
          "handler": "rememberPos",
          "kind": "inject",
          "method": "createSection",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/EntitySectionStorage#createSection RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/in_world_tracking/entity/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "emitMaybeInLevelEvents",
          "kind": "inject",
          "method": "setLevelCallback",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#setLevelCallback RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/initialization/MappedRegistryMixin",
          "targets": [
            "net/minecraft/core/MappedRegistry"
          ],
          "handler": "invalidateBlockInfo",
          "kind": "inject",
          "method": "prepareTagReload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/MappedRegistry#prepareTagReload RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "updateStackListTracking",
          "kind": "inject",
          "method": "setRemoved",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setRemoved RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$BarrelBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BarrelBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BarrelBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$BaseContainerBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BaseContainerBlockEntity"
          ],
          "handler": "readNbtStackListReplacement",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BaseContainerBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$ChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ChestBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ChestBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$DispenserBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/DispenserBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/DispenserBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$ShulkerBoxBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity"
          ],
          "handler": "setInventoryStackListReplacement",
          "kind": "inject",
          "method": "setItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#setItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_comparator_tracking/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_comparator_tracking/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "forgetNearbyComparators",
          "kind": "inject",
          "method": "setRemoved",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setRemoved HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/inventory_comparator_tracking/DiodeBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/DiodeBlock"
          ],
          "handler": "notifyOnBlockAdded",
          "kind": "inject",
          "method": "onPlace",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/DiodeBlock#onPlace RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/item_component_and_count_tracking/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "beforeSetStack",
          "kind": "inject",
          "method": "setItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/ItemEntity#setItem HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/item_component_and_count_tracking/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "beforeChangeCount",
          "kind": "inject",
          "method": "setCount",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#setCount HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/item_component_and_count_tracking/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "onSetComponent",
          "kind": "inject",
          "method": "set",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#set RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/item_component_and_count_tracking/PatchedDataComponentMapMixin",
          "targets": [
            "net/minecraft/core/component/PatchedDataComponentMap"
          ],
          "handler": "trackBeforeChange",
          "kind": "inject",
          "method": "ensureMapOwnership",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/component/PatchedDataComponentMap#ensureMapOwnership HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/world_border_listener/WorldBorderMixin",
          "targets": [
            "net/minecraft/world/level/border/WorldBorder"
          ],
          "handler": "registerSimpleWorldBorderListenerMulti",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/border/WorldBorder#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/world_border_listener/WorldBorderMixin",
          "targets": [
            "net/minecraft/world/level/border/WorldBorder"
          ],
          "handler": "addSimpleListenerOnce",
          "kind": "inject",
          "method": "addListener",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/border/WorldBorder#addListener HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/util/world_border_listener/WorldBorderMixin",
          "targets": [
            "net/minecraft/world/level/border/WorldBorder"
          ],
          "handler": "getUpdatedArea",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/border/WorldBorder$BorderExtent;update()Lnet/minecraft/world/level/border/WorldBorder$BorderExtent;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/chunk_tickable/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "initPos",
          "kind": "inject",
          "method": "tickBlockEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/Level#tickBlockEntities HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/chunk_tickable/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "optimizedShouldTick",
          "kind": "redirect",
          "method": "tickBlockEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;shouldTickBlocksAt(Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/BlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "handleSetChanged",
          "kind": "inject",
          "method": "setChanged",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#setChanged RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "setBlockEntityTickingOrder",
          "kind": "inject",
          "method": "lambda$updateBlockEntityTicker$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addBlockEntityTicker(Lnet/minecraft/world/level/block/entity/TickingBlockEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#lambda$updateBlockEntityTicker$0 INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "setBlockEntityTickingOrder",
          "kind": "inject",
          "method": "lambda$updateBlockEntityTicker$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk$RebindableTickingBlockEntityWrapper;rebind(Lnet/minecraft/world/level/block/entity/TickingBlockEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#lambda$updateBlockEntityTicker$0 INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "shouldTickBlockPosFilterNull",
          "kind": "wrap-operation",
          "method": "tickBlockEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;shouldTickBlocksAt(Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "getPosOrOrigin",
          "kind": "redirect",
          "method": "dumpBlockEntityTickers",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/TickingBlockEntity;getPos()Lnet/minecraft/core/BlockPos;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/brewing_stand/BrewingStandBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BrewingStandBlockEntity"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "serverTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/brewing_stand/BrewingStandBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BrewingStandBlockEntity"
          ],
          "handler": "wakeUpOnMarkDirty",
          "kind": "inject",
          "method": "serverTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/BrewingStandBlockEntity;setChanged(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/brewing_stand/BrewingStandBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BrewingStandBlockEntity"
          ],
          "handler": "wakeUpAfterFromTag",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BrewingStandBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/CampfireBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CampfireBlockEntity"
          ],
          "handler": "wakeUpOnAddItem",
          "kind": "inject",
          "method": "placeFood",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/NonNullList;set(ILjava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CampfireBlockEntity#placeFood INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/CampfireBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CampfireBlockEntity"
          ],
          "handler": "wakeUpOnReadNbt",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CampfireBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/lit/CampfireBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CampfireBlockEntity"
          ],
          "handler": "trySleepLit",
          "kind": "inject",
          "method": "cookTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CampfireBlockEntity#cookTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/unlit/CampfireBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CampfireBlockEntity"
          ],
          "handler": "trySleepUnlit",
          "kind": "inject",
          "method": "cooldownTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CampfireBlockEntity#cooldownTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/chest_animation/ChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ChestBlockEntity"
          ],
          "handler": "wakeUpOnSyncedBlockEvent",
          "kind": "inject",
          "method": "triggerEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/ChestLidController;shouldBeOpen(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ChestBlockEntity#triggerEvent INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/chest_animation/ChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ChestBlockEntity"
          ],
          "handler": "sleepOnAnimationEnd",
          "kind": "inject",
          "method": "lidAnimateTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ChestBlockEntity#lidAnimateTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/chest_animation/EnderChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/EnderChestBlockEntity"
          ],
          "handler": "wakeUpOnSyncedBlockEvent",
          "kind": "inject",
          "method": "triggerEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/ChestLidController;shouldBeOpen(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/EnderChestBlockEntity#triggerEvent INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/chest_animation/EnderChestBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/EnderChestBlockEntity"
          ],
          "handler": "sleepOnAnimationEnd",
          "kind": "inject",
          "method": "lidAnimateTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/EnderChestBlockEntity#lidAnimateTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/crafter/CrafterBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CrafterBlockEntity"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "serverTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CrafterBlockEntity#serverTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/crafter/CrafterBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CrafterBlockEntity"
          ],
          "handler": "wakeUpAfterRemainingTicksChanged",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CrafterBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/crafter/CrafterBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CrafterBlockEntity"
          ],
          "handler": "wakeUpAfterRemainingTicksChanged",
          "kind": "inject",
          "method": "setCraftingTicksRemaining",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/CrafterBlockEntity#setCraftingTicksRemaining RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/furnace/AbstractFurnaceBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "serverTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#serverTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/furnace/AbstractFurnaceBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity"
          ],
          "handler": "wakeUpAfterFromTag",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/furnace/AbstractFurnaceBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity"
          ],
          "handler": "handleSetChanged",
          "kind": "inject",
          "method": "setItem",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#setItem RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "sleepIfNoCooldownAndLocked",
          "kind": "inject",
          "method": "tryMoveItems",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#tryMoveItems RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/hopper/HopperBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/HopperBlockEntity"
          ],
          "handler": "wakeUpOnCooldownSet",
          "kind": "inject",
          "method": "setCooldown",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/HopperBlockEntity#setCooldown HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_catalyst/SculkCatalystBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity"
          ],
          "handler": "addCatalystListenerCallback",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_catalyst/SculkCatalystBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity"
          ],
          "handler": "sleepIfNoCursors",
          "kind": "inject",
          "method": "serverTick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#serverTick RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_catalyst/SculkCatalystBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity"
          ],
          "handler": "wakeupIfLoadedWithData",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_catalyst/SculkSpreaderMixin",
          "targets": [
            "net/minecraft/world/level/block/SculkSpreader"
          ],
          "handler": "listenToCursorAddition",
          "kind": "inject",
          "method": "addCursors",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/SculkSpreader#addCursors RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/CalibratedSculkSensorBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/CalibratedSculkSensorBlock"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "lambda$getTicker$0",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/CalibratedSculkSensorBlock#lambda$getTicker$0 RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkSensorBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkSensorBlockEntity"
          ],
          "handler": "setVibrationListenerListener",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkSensorBlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkSensorBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkSensorBlockEntity"
          ],
          "handler": "wakeupIfLoadedWithData",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkSensorBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkSensorBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/SculkSensorBlock"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "lambda$getTicker$0",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/SculkSensorBlock#lambda$getTicker$0 RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkShriekerBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity"
          ],
          "handler": "setVibrationListenerListener",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkShriekerBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity"
          ],
          "handler": "wakeupIfLoadedWithData",
          "kind": "inject",
          "method": "loadAdditional",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#loadAdditional RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/SculkShriekerBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/SculkShriekerBlock"
          ],
          "handler": "checkSleep",
          "kind": "inject",
          "method": "lambda$getTicker$0",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/SculkShriekerBlock#lambda$getTicker$0 RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/sculk_sensor_shrieker/VibrationSystemListenerMixin",
          "targets": [
            "net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Listener"
          ],
          "handler": "onCurrentVibrationUpdate",
          "kind": "inject",
          "method": "scheduleVibration",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Listener#scheduleVibration HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/shulker_box/ShulkerBoxBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity"
          ],
          "handler": "wakeUpOnSyncedBlockEvent",
          "kind": "inject",
          "method": "triggerEvent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#triggerEvent HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/shulker_box/ShulkerBoxBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity"
          ],
          "handler": "sleepOnAnimationEnd",
          "kind": "inject",
          "method": "updateAnimation",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#updateAnimation RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/world_border/DirectBlockEntityTickInvokerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk$BoundTickingBlockEntity"
          ],
          "handler": "cachedCanTickBlockEntity",
          "kind": "redirect",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk;isTicking(Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getChunkAt",
          "kind": "overwrite",
          "method": "getChunkAt",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getChunk",
          "kind": "overwrite",
          "method": "getChunk",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getChunk",
          "kind": "overwrite",
          "method": "getChunk",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "preTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerChunkCache#tick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "getChunk",
          "kind": "overwrite",
          "method": "getChunk",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_access/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "onCachesCleared",
          "kind": "inject",
          "method": "clearCache",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerChunkCache#clearCache HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/precipitation/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "skipIfAllBiomesDoNotCreateIceOrSnowAtPos",
          "kind": "inject",
          "method": "tickPrecipitation",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getBiome(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/core/Holder;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#tickPrecipitation INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "initAirSection",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "createFlagCounters",
          "kind": "inject",
          "method": "recalcBlockCounts",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#recalcBlockCounts HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "initFlagCountersAndRecalcBlockCounts",
          "kind": "wrap-operation",
          "method": "recalcBlockCounts",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/PalettedContainer;count(Lnet/minecraft/world/level/chunk/PalettedContainer$CountConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunkSection"
          ],
          "handler": "updateRandomTickableBlockCounts",
          "kind": "inject",
          "method": "setBlockState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunkSection#setBlockState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "initializeRandomTickExtraData",
          "kind": "modify-arg",
          "method": "count",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/BitStorage;getAll(Ljava/util/function/IntConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "handleWholeSectionSingleBlock",
          "kind": "wrap-operation",
          "method": "count",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/PalettedContainer$CountConsumer;accept(Ljava/lang/Object;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/spread_ice/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "getFluidStateFromBlockState",
          "kind": "wrap-operation",
          "method": "shouldFreeze",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/LevelReader;getFluidState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/material/FluidState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/combined_heightmap_update/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "skipGetHeightmap",
          "kind": "redirect",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/combined_heightmap_update/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "skipHeightmapUpdate",
          "kind": "wrap-operation",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/Heightmap;update(IIILnet/minecraft/world/level/block/state/BlockState;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/combined_heightmap_update/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "updateHeightmapsCombined",
          "kind": "inject",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/Heightmap;update(IIILnet/minecraft/world/level/block/state/BlockState;)Z",
          "cancellable": false,
          "hook": "block_changed",
          "why": "a block changes"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/ServerExplosion#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "skipNewHashSet",
          "kind": "redirect",
          "method": "calculateExplodedPositions",
          "at": "NEW",
          "at_target": "()Ljava/util/HashSet;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "skipLoop",
          "kind": "modify-constant",
          "method": "calculateExplodedPositions",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "getExplodedPositionCount",
          "kind": "redirect",
          "method": "explode",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;size()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "collectBlocks",
          "kind": "inject",
          "method": "calculateExplodedPositions",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/ServerExplosion#calculateExplodedPositions RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/skip_air/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/ServerExplosion#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/skip_air/no_air_counting/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "delayExploding",
          "kind": "wrap-operation",
          "method": "explode",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/ServerExplosion;explode()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/skip_air/no_air_counting/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "runDelayedExplosion",
          "kind": "modify-variable",
          "method": "explode",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/ServerExplosion;getHitPlayers()Ljava/util/Map;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/skip_air/no_air_counting/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "runDelayedExplosionWithoutCountingBlocks",
          "kind": "wrap-operation",
          "method": "explode",
          "at": "INVOKE",
          "at_target": "Ljava/util/Iterator;hasNext()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/entity_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "createMutableContext",
          "kind": "inject",
          "method": "getSeenPercent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/ServerExplosion#getSeenPercent HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/entity_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "reuseClipContext",
          "kind": "redirect",
          "method": "getSeenPercent",
          "at": "NEW",
          "at_target": "net/minecraft/world/level/ClipContext",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/explosions/entity_raycast/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "simplifyRaycast",
          "kind": "redirect",
          "method": "getSeenPercent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;clip(Lnet/minecraft/world/level/ClipContext;)Lnet/minecraft/world/phys/BlockHitResult;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/GameEventDispatcherMixin",
          "targets": [
            "net/minecraft/world/level/gameevent/GameEventDispatcher"
          ],
          "handler": "doNotGetChunk",
          "kind": "redirect",
          "method": "post",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerChunkCache;getChunkNow(II)Lnet/minecraft/world/level/chunk/LevelChunk;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/GameEventDispatcherMixin",
          "targets": [
            "net/minecraft/world/level/gameevent/GameEventDispatcher"
          ],
          "handler": "getNull",
          "kind": "redirect",
          "method": "post",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/ChunkAccess;getListenerRegistry(I)Lnet/minecraft/world/level/gameevent/GameEventListenerRegistry;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/GameEventDispatcherMixin",
          "targets": [
            "net/minecraft/world/level/gameevent/GameEventDispatcher"
          ],
          "handler": "handleNullDispatcher",
          "kind": "redirect",
          "method": "post",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/gameevent/GameEventListenerRegistry;visitInRangeListeners(Lnet/minecraft/core/Holder;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/level/gameevent/GameEvent$Context;Lnet/minecraft/world/level/gameevent/GameEventListenerRegistry$ListenerVisitor;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "initGameEventDispatchers",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/Heightmap$Types;values()[Lnet/minecraft/world/level/levelgen/Heightmap$Types;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#<init> INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "removeGameEventDispatcher",
          "kind": "inject",
          "method": "removeGameEventListenerRegistry",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#removeGameEventListenerRegistry RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/game_events/dispatch/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "initializeCollection",
          "kind": "inject",
          "method": "getListenerRegistry",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk;gameEventListenerRegistrySections:Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#getListenerRegistry FIELD"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/inline_block_access/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "getBlockState",
          "kind": "overwrite",
          "method": "getBlockState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/inline_block_access/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "getFluidState",
          "kind": "overwrite",
          "method": "getFluidState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/inline_block_access/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "getBlockState",
          "kind": "overwrite",
          "method": "getBlockState",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "initHeightCache",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/Level#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/raycast/BlockGetterMixin",
          "targets": [
            "net/minecraft/world/level/BlockGetter"
          ],
          "handler": "clip",
          "kind": "overwrite",
          "method": "clip",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/temperature_cache/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "getTemperature",
          "kind": "overwrite",
          "method": "getTemperature",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "reinit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/ticks/LevelChunkTicks#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "reinit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/ticks/LevelChunkTicks#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "schedule",
          "kind": "overwrite",
          "method": "schedule",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "hasScheduledTick",
          "kind": "overwrite",
          "method": "hasScheduledTick",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "removeIf",
          "kind": "overwrite",
          "method": "removeIf",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "getAll",
          "kind": "overwrite",
          "method": "getAll",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "count",
          "kind": "overwrite",
          "method": "count",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "pack",
          "kind": "overwrite",
          "method": "pack",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/lithium/mixin/world/tick_scheduler/LevelChunkTicksMixin",
          "targets": [
            "net/minecraft/world/ticks/LevelChunkTicks"
          ],
          "handler": "unpack",
          "kind": "overwrite",
          "method": "unpack",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        }
      ],
      "listening": 138,
      "accessors": 49,
      "hooks": {
        "block_changed": 4
      },
      "wanted": {
        "net/minecraft/core/Direction#<init> @RETURN": 1,
        "net/minecraft/core/MappedRegistry#prepareTagReload @RETURN": 1,
        "net/minecraft/core/component/PatchedDataComponentMap#ensureMapOwnership @HEAD": 1,
        "net/minecraft/server/level/ServerChunkCache#clearCache @HEAD": 1,
        "net/minecraft/server/level/ServerChunkCache#tick @HEAD": 1,
        "net/minecraft/server/level/ServerLevel#<init> @RETURN": 1,
        "net/minecraft/server/level/ServerLevel$EntityCallbacks#<init> @RETURN": 1,
        "net/minecraft/util/ClassInstanceMultiMap#<init> @RETURN": 1,
        "net/minecraft/util/Mth#<clinit> @RETURN": 1,
        "net/minecraft/util/profiling/Profiler#startUsing @RETURN": 1,
        "net/minecraft/util/profiling/Profiler#stopUsing @RETURN": 1,
        "net/minecraft/world/attribute/AmbientParticle#<init> @RETURN": 1,
        "net/minecraft/world/entity/AgeableMob#<init> @RETURN": 1,
        "net/minecraft/world/entity/Entity#remove @HEAD": 1,
        "net/minecraft/world/entity/Entity#setLevelCallback @RETURN": 1,
        "net/minecraft/world/entity/EntityEquipment#clear @HEAD": 1,
        "net/minecraft/world/entity/EntityEquipment#setAll @HEAD": 1,
        "net/minecraft/world/entity/EntityEquipment#setAll @RETURN": 1,
        "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#apply @HEAD": 1,
        "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#flushStep @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#collectEquipmentChanges @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#stopRiding @RETURN": 1,
        "net/minecraft/world/entity/Mob#startRiding @RETURN": 1,
        "net/minecraft/world/entity/ai/Brain#<init> @RETURN": 2,
        "net/minecraft/world/entity/ai/Brain#addActivity @RETURN": 1,
        "net/minecraft/world/entity/ai/Brain#clearMemories @RETURN": 1,
        "net/minecraft/world/entity/ai/Brain#registerMemory @RETURN": 1,
        "net/minecraft/world/entity/ai/Brain#removeAllBehaviors @RETURN": 1,
        "net/minecraft/world/entity/ai/attributes/AttributeMap#<init> @RETURN": 1,
        "net/minecraft/world/entity/ai/behavior/Behavior#<init> @RETURN": 1,
        "net/minecraft/world/entity/ai/memory/MemorySlot#set @HEAD": 1,
        "net/minecraft/world/entity/ai/memory/MemorySlot#set @RETURN": 1,
        "net/minecraft/world/entity/ai/navigation/PathNavigation#moveTo @RETURN": 1,
        "net/minecraft/world/entity/ai/navigation/PathNavigation#stop @RETURN": 1,
        "net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor#doTick @HEAD": 1,
        "net/minecraft/world/entity/animal/goat/Goat#<init> @RETURN": 1,
        "net/minecraft/world/entity/animal/happyghast/HappyGhast#adultGhastSetup @RETURN": 1,
        "net/minecraft/world/entity/animal/happyghast/HappyGhast#babyGhastSetup @RETURN": 1,
        "net/minecraft/world/entity/item/ItemEntity#setItem @HEAD": 1,
        "net/minecraft/world/entity/raid/Raid#tick @HEAD": 1,
        "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack @HEAD": 1,
        "net/minecraft/world/entity/vehicle/minecart/OldMinecartBehavior#moveAlongTrack @RETURN": 1,
        "net/minecraft/world/item/ItemStack#set @RETURN": 1,
        "net/minecraft/world/item/ItemStack#setCount @HEAD": 1,
        "net/minecraft/world/level/Level#<init> @RETURN": 2,
        "net/minecraft/world/level/Level#tickBlockEntities @HEAD": 1,
        "net/minecraft/world/level/PathNavigationRegion#<init> @RETURN": 1,
        "net/minecraft/world/level/ServerExplosion#<init> @RETURN": 2,
        "net/minecraft/world/level/ServerExplosion#calculateExplodedPositions @RETURN": 1,
        "net/minecraft/world/level/ServerExplosion#getSeenPercent @HEAD": 1,
        "net/minecraft/world/level/biome/MobSpawnSettings#<init> @RETURN": 1,
        "net/minecraft/world/level/block/CalibratedSculkSensorBlock#lambda$getTicker$0 @RETURN": 1,
        "net/minecraft/world/level/block/DiodeBlock#onPlace @RETURN": 1,
        "net/minecraft/world/level/block/HopperBlock#neighborChanged @HEAD": 1,
        "net/minecraft/world/level/block/RedstoneWireBlock#getBlockSignal @HEAD": 1,
        "net/minecraft/world/level/block/SculkSensorBlock#lambda$getTicker$0 @RETURN": 1,
        "net/minecraft/world/level/block/SculkShriekerBlock#lambda$getTicker$0 @RETURN": 1,
        "net/minecraft/world/level/block/SculkSpreader#addCursors @RETURN": 1,
        "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#serverTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity#setItem @RETURN": 1,
        "net/minecraft/world/level/block/entity/BarrelBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/BaseContainerBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/BlockEntity#<init> @RETURN": 2,
        "net/minecraft/world/level/block/entity/BlockEntity#setBlockState @RETURN": 2,
        "net/minecraft/world/level/block/entity/BlockEntity#setChanged @RETURN": 1,
        "net/minecraft/world/level/block/entity/BlockEntity#setRemoved @HEAD": 1,
        "net/minecraft/world/level/block/entity/BlockEntity#setRemoved @RETURN": 1,
        "net/minecraft/world/level/block/entity/BrewingStandBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick @HEAD": 1,
        "net/minecraft/world/level/block/entity/CampfireBlockEntity#cookTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/CampfireBlockEntity#cooldownTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/CampfireBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/ChestBlockEntity#lidAnimateTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/ChestBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/CrafterBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/CrafterBlockEntity#serverTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/CrafterBlockEntity#setCraftingTicksRemaining @RETURN": 1,
        "net/minecraft/world/level/block/entity/DispenserBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/EnderChestBlockEntity#lidAnimateTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#setBlockState @HEAD": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#setCooldown @HEAD": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#tryMoveItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#<init> @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity#serverTick @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkSensorBlockEntity#<init> @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkSensorBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#<init> @RETURN": 1,
        "net/minecraft/world/level/block/entity/SculkShriekerBlockEntity#loadAdditional @RETURN": 1,
        "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#setItems @RETURN": 1,
        "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#triggerEvent @HEAD": 1,
        "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#updateAnimation @RETURN": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour#updateShape @HEAD": 1,
        "net/minecraft/world/level/border/WorldBorder#<init> @RETURN": 1,
        "net/minecraft/world/level/border/WorldBorder#addListener @HEAD": 1,
        "net/minecraft/world/level/chunk/LevelChunk#removeGameEventListenerRegistry @RETURN": 1,
        "net/minecraft/world/level/chunk/LevelChunk#setFullStatus @RETURN": 1,
        "net/minecraft/world/level/chunk/LevelChunkSection#<init> @RETURN": 2,
        "net/minecraft/world/level/chunk/LevelChunkSection#read @HEAD": 1,
        "net/minecraft/world/level/chunk/LevelChunkSection#recalcBlockCounts @HEAD": 2,
        "net/minecraft/world/level/chunk/LevelChunkSection#setBlockState @RETURN": 2,
        "net/minecraft/world/level/chunk/LevelChunkSection$1BlockCounter#accept @HEAD": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#<init> @RETURN": 3,
        "net/minecraft/world/level/chunk/PalettedContainer#read @RETURN": 1,
        "net/minecraft/world/level/chunk/storage/SectionStorage#<init> @RETURN": 1,
        "net/minecraft/world/level/dimension/end/EnderDragonFight#<init> @RETURN": 1,
        "net/minecraft/world/level/entity/EntitySection#add @RETURN": 1,
        "net/minecraft/world/level/entity/EntitySection#remove @RETURN": 1,
        "net/minecraft/world/level/entity/EntitySectionStorage#createSection @RETURN": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#<init> @RETURN": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove @RETURN": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onRemove @HEAD": 1,
        "net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Listener#scheduleVibration @HEAD": 1,
        "net/minecraft/world/level/material/FlowingFluid#getSpread @HEAD": 1,
        "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey#<init> @RETURN": 1,
        "net/minecraft/world/level/material/FluidState#<init> @RETURN": 1,
        "net/minecraft/world/level/redstone/DefaultRedstoneWireEvaluator#calculateTargetStrength @HEAD": 1,
        "net/minecraft/world/level/redstone/RedstoneWireEvaluator#getIncomingWireSignal @HEAD": 1,
        "net/minecraft/world/phys/shapes/CubePointRange#<init> @RETURN": 1,
        "net/minecraft/world/phys/shapes/CubeVoxelShape#<init> @RETURN": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#<init> @RETURN": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#getHeldItem @HEAD": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#isDescending @HEAD": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#isHoldingItem @HEAD": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#<init> @RETURN": 2
      },
      "wanted_calls": {
        "com/google/common/collect/ImmutableList#iterator @INVOKE (wrap-operation)": 1,
        "com/google/common/collect/Maps#newHashMap @INVOKE (redirect)": 1,
        "com/google/common/collect/Maps#newHashMap @INVOKE_ASSIGN (modify-variable)": 1,
        "com/google/common/collect/Sets#newIdentityHashSet @INVOKE (redirect)": 1,
        "java/lang/Class#isAssignableFrom @INVOKE (redirect)": 1,
        "java/util/Collection#forEach @INVOKE (modify-arg)": 1,
        "java/util/EnumSet#noneOf @INVOKE (wrap-operation)": 1,
        "java/util/Iterator#hasNext @INVOKE (wrap-operation)": 1,
        "java/util/List#addAll @INVOKE (wrap-operation)": 1,
        "java/util/List#clear @INVOKE (wrap-with-condition)": 2,
        "java/util/List#copyOf @INVOKE (redirect)": 1,
        "java/util/List#remove @INVOKE (wrap-operation)": 1,
        "java/util/List#size @INVOKE (redirect)": 1,
        "java/util/Map#get @INVOKE (redirect)": 1,
        "java/util/Map#get @INVOKE (wrap-operation)": 3,
        "java/util/Map#remove @INVOKE (wrap-operation)": 1,
        "java/util/Optional#ifPresent @INVOKE (redirect)": 1,
        "java/util/Set#add @INVOKE (redirect)": 1,
        "java/util/Set#iterator @INVOKE (redirect)": 1,
        "java/util/Set#remove @INVOKE (redirect)": 1,
        "java/util/Set#remove @INVOKE (wrap-operation)": 1,
        "java/util/function/Predicate#and @INVOKE (redirect)": 1,
        "java/util/stream/Stream#limit @INVOKE (redirect)": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @INVOKE (wrap-operation)": 1,
        "net/minecraft/core/AxisCycle$2#cycle @OVERWRITE": 1,
        "net/minecraft/core/AxisCycle$3#cycle @OVERWRITE": 1,
        "net/minecraft/core/BlockPos#above @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#below @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#east @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#north @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#south @OVERWRITE": 4,
        "net/minecraft/core/BlockPos#west @OVERWRITE": 4,
        "net/minecraft/core/Direction#getOpposite @OVERWRITE": 1,
        "net/minecraft/core/Direction#getRandom @OVERWRITE": 1,
        "net/minecraft/core/Direction#getStepX @OVERWRITE": 1,
        "net/minecraft/core/Direction#getStepY @OVERWRITE": 1,
        "net/minecraft/core/Direction#getStepZ @OVERWRITE": 1,
        "net/minecraft/core/Direction#values @INVOKE (redirect)": 4,
        "net/minecraft/nbt/CompoundTag#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/nbt/CompoundTag#<init> @NEW (redirect)": 1,
        "net/minecraft/nbt/CompoundTag#copy @OVERWRITE": 1,
        "net/minecraft/server/commands/data/EntityDataAccessor#setData @INVOKE": 1,
        "net/minecraft/server/level/ChunkHolder#updateFutures @INVOKE": 1,
        "net/minecraft/server/level/ServerChunkCache#getChunk @OVERWRITE": 1,
        "net/minecraft/server/level/ServerChunkCache#getChunkNow @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#getAllEntities @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#getBlockRandomPos @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#getEntities @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#sendBlockUpdated @INVOKE": 1,
        "net/minecraft/server/level/ServerLevel#tickPrecipitation @INVOKE": 1,
        "net/minecraft/util/BitStorage#getAll @INVOKE (modify-arg)": 2,
        "net/minecraft/util/ClassInstanceMultiMap#add @HEAD (modify-variable)": 1,
        "net/minecraft/util/ClassInstanceMultiMap#find @OVERWRITE": 1,
        "net/minecraft/util/ClassInstanceMultiMap#iterator @INVOKE (redirect)": 1,
        "net/minecraft/util/ClassInstanceMultiMap#remove @HEAD (modify-variable)": 1,
        "net/minecraft/util/Mth#cos @OVERWRITE": 1,
        "net/minecraft/util/Mth#sin @OVERWRITE": 1,
        "net/minecraft/util/Util#makeEnumMap @INVOKE (wrap-operation)": 1,
        "net/minecraft/util/random/WeightedRandom#getRandomItem @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/AgeableMob#onSyncedDataUpdated @INVOKE": 1,
        "net/minecraft/world/entity/Entity#baseTick @INVOKE": 1,
        "net/minecraft/world/entity/Entity#canSpawnSprintParticle @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/Entity#checkSupportingBlock @INVOKE": 3,
        "net/minecraft/world/entity/Entity#checkSupportingBlock @INVOKE_ASSIGN": 1,
        "net/minecraft/world/entity/Entity#collectCollidersIgnoringWorldBorder @INVOKE (modify-arg)": 1,
        "net/minecraft/world/entity/Entity#collideBoundingBox @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/Entity#collideBoundingBox @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#getInBlockState @INVOKE_ASSIGN": 1,
        "net/minecraft/world/entity/Entity#getIndirectPassengers @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#getIndirectPassengersStream @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#getPassengersAndSelf @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#getSelfAndPassengers @OVERWRITE": 1,
        "net/minecraft/world/entity/Entity#isDescending @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/Entity#isInWall @INVOKE": 1,
        "net/minecraft/world/entity/Entity#setPosRaw @INVOKE": 1,
        "net/minecraft/world/entity/InsideBlockEffectApplier$StepBasedCollector#<init> @NEW (wrap-operation)": 1,
        "net/minecraft/world/entity/LivingEntity#detectEquipmentUpdates @INVOKE": 1,
        "net/minecraft/world/entity/LivingEntity#getAttribute @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/LivingEntity#getBlockStateOnLegacy @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/LivingEntity#makeBrain @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/LivingEntity#updateFallFlying @INVOKE": 1,
        "net/minecraft/world/entity/Mob#blockPosition @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/Mob#level @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/ai/Brain#eraseMemory @INVOKE": 1,
        "net/minecraft/world/entity/ai/Brain#setActiveActivity @INVOKE": 1,
        "net/minecraft/world/entity/ai/Brain#setMemory @INVOKE (wrap-with-condition)": 2,
        "net/minecraft/world/entity/ai/Brain#startEachNonRunningBehavior @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/Brain#stopAll @INVOKE": 1,
        "net/minecraft/world/entity/ai/Brain#tickEachRunningBehavior @INVOKE": 1,
        "net/minecraft/world/entity/ai/behavior/AcquirePoi#create @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/behavior/Behavior#hasRequiredMemories @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/behavior/BehaviorControl#tryStart @INVOKE (modify-variable)": 1,
        "net/minecraft/world/entity/ai/behavior/GateBehavior#doStop @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/behavior/GateBehavior#tickOrStop @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/behavior/GateBehavior$RunningPolicy#apply @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos#start @INVOKE": 1,
        "net/minecraft/world/entity/ai/goal/RemoveBlockGoal#findNearestBlock @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/memory/MemorySlot#clear @INVOKE (wrap-operation)": 2,
        "net/minecraft/world/entity/ai/memory/MemorySlot#set @INVOKE (wrap-operation)": 2,
        "net/minecraft/world/entity/ai/navigation/PathNavigation#recomputePath @INVOKE_ASSIGN": 1,
        "net/minecraft/world/entity/ai/sensing/HoglinSpecificSensor#findNearestRepellent @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/ai/sensing/PiglinSpecificSensor#findNearestRepellent @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/ai/sensing/Sensor#isEntityAttackable @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/sensing/TemptingSensor#doTick @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#ensureLoadedAndValid @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#find @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#find @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#findAllClosestFirstWithType @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#findClosest @OVERWRITE": 2,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#findClosestWithType @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#getCountInRange @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#getInRange @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#getRandom @INVOKE (redirect)": 2,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#getRandom @OVERWRITE": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiManager#take @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/animal/AgeableWaterCreature#handleAirSupply @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/animal/frog/Frog#canEat @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/player/Inventory#contains @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/player/Player#equals @INVOKE (modify-arg)": 1,
        "net/minecraft/world/entity/raid/Raid#getOminousBannerInstance @INVOKE (redirect)": 3,
        "net/minecraft/world/entity/raid/Raid#updateBossbar @OVERWRITE": 1,
        "net/minecraft/world/inventory/AbstractContainerMenu#getRedstoneSignalFromContainer @INVOKE": 1,
        "net/minecraft/world/item/enchantment/EnchantmentHelper#tickEffects @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/BlockGetter#clip @OVERWRITE": 1,
        "net/minecraft/world/level/EntityBasedExplosionDamageCalculator#getBlockExplosionResistance @OVERWRITE": 1,
        "net/minecraft/world/level/EntityGetter#getEntities @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#clip @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#getBlockState @OVERWRITE": 1,
        "net/minecraft/world/level/Level#getChunk @OVERWRITE": 2,
        "net/minecraft/world/level/Level#getChunkAt @OVERWRITE": 1,
        "net/minecraft/world/level/Level#getEntities @INVOKE (redirect)": 6,
        "net/minecraft/world/level/Level#getEntities @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/Level#getEntitiesOfClass @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#getEntityCollisions @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#shouldTickBlocksAt @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#shouldTickBlocksAt @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/LevelReader#getFluidState @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/PathNavigationRegion#getBlockState @OVERWRITE": 1,
        "net/minecraft/world/level/PathNavigationRegion#getFluidState @OVERWRITE": 1,
        "net/minecraft/world/level/ServerExplosion#calculateExplodedPositions @HEAD (modify-constant)": 1,
        "net/minecraft/world/level/ServerExplosion#calculateExplodedPositions @NEW (redirect)": 1,
        "net/minecraft/world/level/ServerExplosion#explode @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/ServerExplosion#getHitPlayers @INVOKE (modify-variable)": 1,
        "net/minecraft/world/level/ServerExplosion#getSeenPercent @NEW (redirect)": 1,
        "net/minecraft/world/level/TicketStorage#addTicket @INVOKE": 1,
        "net/minecraft/world/level/TicketStorage#removeTicket @INVOKE": 1,
        "net/minecraft/world/level/TicketStorage#removeTicketIf @INVOKE": 1,
        "net/minecraft/world/level/biome/Biome#getTemperature @OVERWRITE": 1,
        "net/minecraft/world/level/block/Block#isShapeFullBlock @OVERWRITE": 1,
        "net/minecraft/world/level/block/ComposterBlock$EmptyContainer#getSlotsForFace @OVERWRITE": 1,
        "net/minecraft/world/level/block/ComposterBlock$InputContainer#getSlotsForFace @OVERWRITE": 1,
        "net/minecraft/world/level/block/ComposterBlock$InputContainer#setChanged @INVOKE": 1,
        "net/minecraft/world/level/block/ComposterBlock$OutputContainer#getSlotsForFace @OVERWRITE": 1,
        "net/minecraft/world/level/block/EntityBlock#newBlockEntity @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/HopperBlock#onPlace @INVOKE": 1,
        "net/minecraft/world/level/block/entity/BlockEntityType#isValid @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/BrewingStandBlockEntity#serverTick @INVOKE": 1,
        "net/minecraft/world/level/block/entity/CampfireBlockEntity#placeFood @INVOKE": 1,
        "net/minecraft/world/level/block/entity/ChestBlockEntity#triggerEvent @INVOKE": 1,
        "net/minecraft/world/level/block/entity/EnderChestBlockEntity#triggerEvent @INVOKE": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#ejectItems @INVOKE": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#getAttachedContainer @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#getItemsAtAndAbove @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#getSourceContainer @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#inventoryFull @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#isEmpty @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#pushItemsTick @INVOKE": 1,
        "net/minecraft/world/level/block/entity/HopperBlockEntity#suckInItems @FIELD": 1,
        "net/minecraft/world/level/block/entity/TickingBlockEntity#getPos @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/piston/PistonMovingBlockEntity#getCollisionShape @INVOKE": 1,
        "net/minecraft/world/level/block/state/BlockState#is @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/BlockState#isAir @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/BlockState#isCollisionShapeFullBlock @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/BlockState#randomTick @INVOKE (modify-arg)": 1,
        "net/minecraft/world/level/block/state/pattern/BlockPattern#find @INVOKE": 1,
        "net/minecraft/world/level/border/WorldBorder$BorderExtent#update @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/chunk/ChunkAccess#getListenerRegistry @INVOKE (redirect)": 1,
        "net/minecraft/world/level/chunk/LevelChunk#<init> @INVOKE": 1,
        "net/minecraft/world/level/chunk/LevelChunk#getBlockState @INVOKE (redirect)": 1,
        "net/minecraft/world/level/chunk/LevelChunk#getBlockState @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/LevelChunk#getFluidState @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/LevelChunk#getListenerRegistry @FIELD": 1,
        "net/minecraft/world/level/chunk/LevelChunk#isTicking @INVOKE (redirect)": 1,
        "net/minecraft/world/level/chunk/LevelChunk#lambda$updateBlockEntityTicker$0 @INVOKE": 2,
        "net/minecraft/world/level/chunk/LevelChunkSection#setBlockState @INVOKE (redirect)": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#acquire @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#count @INVOKE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#count @INVOKE (modify-arg)": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#count @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#count @NEW (wrap-operation)": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#pack @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#release @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer$CountConsumer#accept @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/entity/EntitySection#updateChunkStatus @HEAD (modify-variable)": 1,
        "net/minecraft/world/level/entity/EntitySectionStorage#forEachAccessibleNonEmptySection @INVOKE_ASSIGN": 1,
        "net/minecraft/world/level/entity/EntityTickList#ensureActiveIsNotIterated @OVERWRITE": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback#onMove @INVOKE": 1,
        "net/minecraft/world/level/gameevent/GameEventListenerRegistry#visitInRangeListeners @INVOKE (redirect)": 1,
        "net/minecraft/world/level/levelgen/Heightmap#update @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator#getSeaLevel @OVERWRITE": 1,
        "net/minecraft/world/level/material/FlowingFluid#canPassThrough @OVERWRITE": 1,
        "net/minecraft/world/level/material/FlowingFluid#isWaterHole @OVERWRITE": 1,
        "net/minecraft/world/level/material/FlowingFluid$BlockStatePairKey#hashCode @OVERWRITE": 1,
        "net/minecraft/world/level/material/FluidState#isEmpty @OVERWRITE": 1,
        "net/minecraft/world/level/material/FluidState#randomTick @INVOKE (modify-arg)": 1,
        "net/minecraft/world/level/pathfinder/FlyNodeEvaluator#checkNeighbourBlocks @INVOKE (redirect)": 1,
        "net/minecraft/world/level/pathfinder/WalkNodeEvaluator#checkNeighbourBlocks @INVOKE": 1,
        "net/minecraft/world/level/pathfinder/WalkNodeEvaluator#checkNeighbourBlocks @INVOKE (redirect)": 1,
        "net/minecraft/world/level/pathfinder/WalkNodeEvaluator#getPathTypeFromState @INVOKE_ASSIGN": 1,
        "net/minecraft/world/level/portal/PortalForcer#findClosestPortalPosition @OVERWRITE": 1,
        "net/minecraft/world/level/saveddata/maps/MapItemSavedData#setDecorationsDirty @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/saveddata/maps/MapItemSavedData#tickCarriedBy @INVOKE": 1,
        "net/minecraft/world/phys/AABB#max @OVERWRITE": 1,
        "net/minecraft/world/phys/AABB#min @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/CubePointRange#getDouble @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/CubeVoxelShape#getCoords @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#<init> @HEAD (modify-constant)": 1,
        "net/minecraft/world/phys/shapes/EntityCollisionContext#<init> @INVOKE": 1,
        "net/minecraft/world/phys/shapes/Shapes#create @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/Shapes#createIndexMerger @NEW": 1,
        "net/minecraft/world/phys/shapes/Shapes#joinIsNotEmpty @INVOKE": 1,
        "net/minecraft/world/phys/shapes/VoxelShape#collideX @OVERWRITE": 1,
        "net/minecraft/world/phys/shapes/VoxelShape#findIndex @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#count @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#getAll @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#hasScheduledTick @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#pack @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#removeIf @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#schedule @OVERWRITE": 1,
        "net/minecraft/world/ticks/LevelChunkTicks#unpack @OVERWRITE": 1,
        "org/apache/commons/lang3/Validate#inclusiveBetween @INVOKE (redirect)": 6
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "BlockApiLookup",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 701,
        "features": {
          "mixin": 293
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 701,
        "methods": 1300,
        "tried": 600,
        "completed": 195,
        "handlers_tried": 4,
        "handlers_completed": 1,
        "missing": {
          "[Ljava/lang/Object;#clone()Ljava/lang/Object;": 1,
          "[Lnet/caffeinemc/mods/lithium/common/hopper/HopperCachingState$BlockInventory;#clone()Ljava/lang/Object;": 1,
          "com/google/common/base/Predicates#alwaysFalse()Lcom/google/common/base/Predicate;": 3,
          "com/google/common/collect/AbstractIterator#<init>()V": 3,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 5,
          "com/llamalad7/mixinextras/sugar/ref/LocalBooleanRef#get()Z": 2,
          "com/llamalad7/mixinextras/sugar/ref/LocalBooleanRef#set(Z)V": 1,
          "com/llamalad7/mixinextras/sugar/ref/LocalLongRef#set(J)V": 1,
          "it/unimi/dsi/fastutil/HashCommon#mix(J)J": 3,
          "it/unimi/dsi/fastutil/HashCommon#nextPowerOfTwo(I)I": 1,
          "it/unimi/dsi/fastutil/doubles/DoubleArrayList#size()I": 2,
          "it/unimi/dsi/fastutil/doubles/DoubleList#size()I": 1,
          "it/unimi/dsi/fastutil/ints/Int2ObjectLinkedOpenHashMap#clone()Lit/unimi/dsi/fastutil/ints/Int2ObjectLinkedOpenHashMap;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceOpenHashMap#get(J)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceOpenHashMap#remove(J)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/longs/LongOpenHashSet#add(J)Z": 1,
          "it/unimi/dsi/fastutil/longs/LongOpenHashSet#contains(J)Z": 1,
          "it/unimi/dsi/fastutil/objects/Object2IntOpenHashMap#getInt(Ljava/lang/Object;)I": 2,
          "it/unimi/dsi/fastutil/objects/Object2IntOpenHashMap#removeInt(Ljava/lang/Object;)I": 1,
          "it/unimi/dsi/fastutil/objects/ObjectArrayList#size()I": 2,
          "it/unimi/dsi/fastutil/objects/ObjectIterator#hasNext()Z": 2,
          "it/unimi/dsi/fastutil/objects/Reference2DoubleArrayMap#clear()V": 2,
          "it/unimi/dsi/fastutil/objects/Reference2DoubleArrayMap#put(Ljava/lang/Object;D)D": 1,
          "it/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap#clone()Lit/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap;": 1,
          "it/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap#getInt(Ljava/lang/Object;)I": 2,
          "java/lang/System#identityHashCode(Ljava/lang/Object;)I": 1,
          "java/lang/Thread#sleep(J)V": 1,
          "java/util/ArrayList#indexOf(Ljava/lang/Object;)I": 1,
          "java/util/Arrays#copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;": 1,
          "java/util/Arrays#fill([JJ)V": 1,
          "java/util/Arrays#fill([Ljava/lang/Object;Ljava/lang/Object;)V": 2,
          "java/util/BitSet#cardinality()I": 2,
          "java/util/Collections#emptyIterator()Ljava/util/Iterator;": 1,
          "java/util/ListIterator#add(Ljava/lang/Object;)V": 1,
          "java/util/ListIterator#hasNext()Z": 2,
          "java/util/ListIterator#hasPrevious()Z": 2,
          "java/util/ListIterator#next()Ljava/lang/Object;": 2,
          "java/util/ListIterator#nextIndex()I": 2,
          "java/util/ListIterator#previous()Ljava/lang/Object;": 2,
          "java/util/ListIterator#previousIndex()I": 4,
          "java/util/ListIterator#remove()V": 1,
          "java/util/ListIterator#set(Ljava/lang/Object;)V": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/WeakHashMap#keySet()Ljava/util/Set;": 3,
          "java/util/WeakHashMap#put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/concurrent/atomic/AtomicInteger#get()I": 3,
          "java/util/function/IntConsumer#accept(I)V": 1,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 2,
          "net/caffeinemc/mods/lithium/common/entity/movement/ChunkAwareBlockCollisionSweeperVoxelShape#hasNext()Z": 1,
          "net/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern$2#UPDATE_DECREMENT_UPDATE_INCREMENT_UPDATE": 1,
          "net/caffeinemc/mods/lithium/common/hopper/LithiumStackList#size()I": 7,
          "net/caffeinemc/mods/lithium/common/world/blockview/SingleBlockBlockView$SingleBlockViewException#setStackTrace([Ljava/lang/StackTraceElement;)V": 1,
          "net/caffeinemc/mods/lithium/fabric/mixin/util/inventory_change_listening/BlockEntityMixin#lithium$handleSetBlockState()V": 1,
          "net/caffeinemc/mods/lithium/mixin/ai/raid/RaiderMixin#level()Lnet/minecraft/world/level/Level;": 1,
          "net/caffeinemc/mods/lithium/mixin/ai/useless_behaviors/BrainMixin$1#endOfData()Ljava/lang/Object;": 2,
          "net/caffeinemc/mods/lithium/mixin/ai/useless_sensors/baby_specific_sensors/AgeableMobMixin#level()Lnet/minecraft/world/level/Level;": 3,
          "net/caffeinemc/mods/lithium/mixin/ai/useless_sensors/goat_item_sensor/GoatMixin#level()Lnet/minecraft/world/level/Level;": 1,
          "net/caffeinemc/mods/lithium/mixin/block/hopper/ChestBlockEntityMixin#getBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/caffeinemc/mods/lithium/mixin/client_tick/entity/unused_brain/CopperGolemMixin#level()Lnet/minecraft/world/level/Level;": 1,
          "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin#lithium$OnFeetBlockCacheDeleted()V": 2,
          "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntityMixin#lithium$OnFeetBlockCacheSet(Lnet/minecraft/world/level/block/state/BlockState;)V": 1,
          "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/LivingEntityMixin#level()Lnet/minecraft/world/level/Level;": 1,
          "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin#getUpdatedVicinityCache(Lnet/minecraft/world/entity/Entity;)Lnet/caffeinemc/mods/lithium/common/tracking/VicinityCache;": 1,
          "net/caffeinemc/mods/lithium/mixin/experimental/entity/block_caching/block_support/EntityMixin#lithium$getVicinityCache()Lnet/caffeinemc/mods/lithium/common/tracking/VicinityCache;": 3,
          "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$BarrelBlockEntityMixin#lithium$emitStackListReplaced()V": 1,
          "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$ChestBlockEntityMixin#lithium$emitStackListReplaced()V": 1,
          "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$HopperBlockEntityMixin#lithium$emitStackListReplaced()V": 1,
          "net/caffeinemc/mods/lithium/mixin/util/inventory_change_listening/StackListReplacementTracking$ShulkerBoxBlockEntityMixin#lithium$emitStackListReplaced()V": 1,
          "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/brewing_stand/BrewingStandBlockEntityMixin#isSleeping()Z": 1,
          "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/campfire/CampfireBlockEntityMixin#wakeUpNow()V": 2,
          "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/furnace/AbstractFurnaceBlockEntityMixin#isSleeping()Z": 2,
          "net/caffeinemc/mods/lithium/mixin/world/chunk_access/LevelMixin#getChunk(IILnet/minecraft/world/level/chunk/status/ChunkStatus;Z)Lnet/minecraft/world/level/chunk/ChunkAccess;": 1,
          "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/precipitation/ServerLevelMixin#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/caffeinemc/mods/lithium/mixin/world/chunk_ticking/random_block_ticking/LevelChunkSectionMixin#lithium$getSectionData()Lnet/caffeinemc/mods/lithium/common/world/section/LithiumSectionData$SectionData;": 2,
          "net/minecraft/core/BlockPos#distSqr(Lnet/minecraft/core/Vec3i;)D": 2,
          "net/minecraft/core/BlockPos#equals(Ljava/lang/Object;)Z": 3,
          "net/minecraft/core/BlockPos#getX()I": 8,
          "net/minecraft/core/BlockPos#getY()I": 4,
          "net/minecraft/core/BlockPos#immutable()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/Direction#get3DDataValue()I": 1,
          "net/minecraft/core/Direction#values()[Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/core/Direction$Axis#X": 3,
          "net/minecraft/core/Direction$Axis#choose(III)I": 2,
          "net/minecraft/core/Direction$Axis#ordinal()I": 2,
          "net/minecraft/core/Holder#value()Ljava/lang/Object;": 1,
          "net/minecraft/core/RegistryAccess#EMPTY": 1,
          "net/minecraft/core/SectionPos#asLong(III)J": 1,
          "net/minecraft/core/SectionPos#blockToSectionCoord(I)I": 3,
          "net/minecraft/core/SectionPos#sectionToBlockCoord(I)I": 2,
          "net/minecraft/core/SectionPos#y(J)I": 2,
          "net/minecraft/core/component/DataComponents#ENCHANTMENTS": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK_ENTITY_TYPE": 1,
          "net/minecraft/network/FriendlyByteBuf#writeVarInt(I)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/network/VarInt#getByteSize(I)I": 1,
          "net/minecraft/world/Container#getContainerSize()I": 1,
          "net/minecraft/world/entity/Entity#getType()Lnet/minecraft/world/entity/EntityType;": 1,
          "net/minecraft/world/entity/Entity#level()Lnet/minecraft/world/level/Level;": 2,
          "net/minecraft/world/entity/LivingEntity#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/entity/Mob#getNavigation()Lnet/minecraft/world/entity/ai/navigation/PathNavigation;": 1,
          "net/minecraft/world/entity/PathfinderMob#getBrain()Lnet/minecraft/world/entity/ai/Brain;": 1,
          "net/minecraft/world/entity/ai/behavior/Behavior$Status#STOPPED": 1,
          "net/minecraft/world/entity/ai/village/poi/PoiRecord#getPos()Lnet/minecraft/core/BlockPos;": 4,
          "net/minecraft/world/entity/animal/frog/Frog#canEat(Lnet/minecraft/world/entity/LivingEntity;)Z": 1,
          "net/minecraft/world/entity/item/ItemEntity#getBoundingBox()Lnet/minecraft/world/phys/AABB;": 2,
          "net/minecraft/world/entity/item/ItemEntity#getItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/npc/villager/Villager#getVillagerData()Lnet/minecraft/world/entity/npc/villager/VillagerData;": 1,
          "net/minecraft/world/entity/raid/Raider#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/item/ItemStack#EMPTY": 3,
          "net/minecraft/world/level/ChunkPos#getX(J)I": 1,
          "net/minecraft/world/level/ChunkPos#pack(Lnet/minecraft/core/BlockPos;)J": 2,
          "net/minecraft/world/level/ClipContext#getFrom()Lnet/minecraft/world/phys/Vec3;": 2,
          "net/minecraft/world/level/Level#getChunkAt(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/chunk/LevelChunk;": 1,
          "net/minecraft/world/level/Level#getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;": 1,
          "net/minecraft/world/level/Level#getHeight()I": 1,
          "net/minecraft/world/level/Level#getMaxSectionY()I": 1,
          "net/minecraft/world/level/Level#getMaxY()I": 1,
          "net/minecraft/world/level/Level#getMinSectionY()I": 1,
          "net/minecraft/world/level/Level#getMinY()I": 1,
          "net/minecraft/world/level/Level#getSectionIndex(I)I": 1,
          "net/minecraft/world/level/Level#getSectionIndexFromSectionY(I)I": 1,
          "net/minecraft/world/level/Level#getSectionYFromSectionIndex(I)I": 1,
          "net/minecraft/world/level/Level#getSectionsCount()I": 1,
          "net/minecraft/world/level/Level#isInsideBuildHeight(I)Z": 1,
          "net/minecraft/world/level/Level#isOutsideBuildHeight(I)Z": 1,
          "net/minecraft/world/level/Level#isOutsideBuildHeight(Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/world/level/LevelHeightAccessor#getHeight()I": 1,
          "net/minecraft/world/level/LevelHeightAccessor#getMaxY()I": 2,
          "net/minecraft/world/level/LevelHeightAccessor#getMinSectionY()I": 4,
          "net/minecraft/world/level/LevelHeightAccessor#getMinY()I": 1,
          "net/minecraft/world/level/LevelHeightAccessor#getSectionsCount()I": 3,
          "net/minecraft/world/level/block/Blocks#AIR": 1,
          "net/minecraft/world/level/block/Blocks#BREWING_STAND": 1,
          "net/minecraft/world/level/block/Blocks#FURNACE": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#getBlockPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#isRemoved()Z": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#setChanged()V": 2,
          "net/minecraft/world/level/block/entity/SculkCatalystBlockEntity$CatalystListener#getSculkSpreader()Lnet/minecraft/world/level/block/SculkSpreader;": 1,
          "net/minecraft/world/level/block/entity/TickingBlockEntity#getPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 2,
          "net/minecraft/world/level/block/state/BlockState#hasLargeCollisionShape()Z": 2,
          "net/minecraft/world/level/block/state/BlockState#isRandomlyTicking()Z": 2,
          "net/minecraft/world/level/chunk/ChunkAccess#getSections()[Lnet/minecraft/world/level/chunk/LevelChunkSection;": 1,
          "net/minecraft/world/level/chunk/LevelChunkSection#getStates()Lnet/minecraft/world/level/chunk/PalettedContainer;": 1,
          "net/minecraft/world/level/chunk/LevelChunkSection#hasOnlyAir()Z": 1,
          "net/minecraft/world/level/chunk/status/ChunkStatus#FULL": 3,
          "net/minecraft/world/level/chunk/status/ChunkStatus#getIndex()I": 1,
          "net/minecraft/world/level/entity/EntityInLevelCallback#NULL": 1,
          "net/minecraft/world/level/entity/Visibility#isAccessible()Z": 1,
          "net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Data#getSelectionStrategy()Lnet/minecraft/world/level/gameevent/vibrations/VibrationSelector;": 1,
          "net/minecraft/world/level/levelgen/Heightmap$Types#MOTION_BLOCKING": 1,
          "new it/unimi/dsi/fastutil/doubles/DoubleOpenHashSet": 1,
          "new it/unimi/dsi/fastutil/objects/Object2ObjectOpenHashMap": 3,
          "new it/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/Reference2ObjectOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/Reference2ReferenceOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/ReferenceArrayList": 1,
          "new net/minecraft/core/BlockPos$MutableBlockPos": 2,
          "new net/minecraft/world/level/ChunkPos": 1,
          "new net/minecraft/world/phys/Vec3": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#getReturnValue()Ljava/lang/Object;": 1
        },
        "runs": [
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/chunk_tickable/LevelMixin",
            "method": "optimizedShouldTick",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lcom/llamalad7/mixinextras/sugar/ref/LocalLongRef;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/ai/non_poi_block_search/CheckAndCacheBlockChecker",
            "method": "hasUnloadedPossibleChunks",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/math/MutableVec3d",
            "method": "getX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/math/MutableVec3d",
            "method": "getY",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/math/MutableVec3d",
            "method": "getZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/shapes/CuboidVoxelSet",
            "method": "isFull",
            "desc": "(III)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/shapes/CuboidVoxelSet",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/collisions/unpushable_cramming/EntitySectionMixin",
            "method": "entityPushableHeuristic",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/MaskedList",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#57"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/MaskedList",
            "method": "spliterator",
            "desc": "()Ljava/util/Spliterator;",
            "value": "obj#59"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/interests/iterator/SphereChunkOrderedPoiSetSpliterator",
            "method": "tryAdvance",
            "desc": "(Ljava/util/function/Consumer;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/interests/iterator/SphereChunkOrderedPoiSetSpliterator",
            "method": "nextSection",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/interests/iterator/SphereChunkOrderedPoiSetSpliterator",
            "method": "nextChunk",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/lock/NullReadWriteLock",
            "method": "readLock",
            "desc": "()Ljava/util/concurrent/locks/Lock;",
            "value": "obj#71"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/lock/NullReadWriteLock",
            "method": "writeLock",
            "desc": "()Ljava/util/concurrent/locks/Lock;",
            "value": "obj#73"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/util/entity_movement_tracking/EntitySectionMixin",
            "method": "modifyIsEmpty",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern$4",
            "method": "isChainable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/shapes/VoxelShapeMatchesAnywhere",
            "method": "cuboidMatchesAnywhere",
            "desc": "(Lnet/minecraft/world/phys/shapes/VoxelShape;Lnet/minecraft/world/phys/shapes/VoxelShape;Lnet/minecraft/world/phys/shapes/BooleanOp;)I",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "negativeX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "negativeY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "negativeZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "positiveX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "positiveY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/Range6Int",
            "method": "positiveZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "getMinY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "getSectionsCount",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "getMinSectionY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "getMaxSectionY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "isOutsideBuildHeight",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "getSectionIndex",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "getSectionIndexFromSectionY",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "getSectionYFromSectionIndex",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/inline_height/LevelMixin",
            "method": "getMaxY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/LevelMixin",
            "method": "shouldTickBlockPosFilterNull",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/block_entity_ticking/sleeping/furnace/AbstractFurnaceBlockEntityMixin",
            "method": "isLit",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
            "method": "redirectInstanceOf",
            "desc": "(Ljava/lang/Object;Ljava/lang/Class;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin",
            "method": "skipIsDescending",
            "desc": "(Lnet/minecraft/world/entity/Entity;Lcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern$3",
            "method": "isChainable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/Pos$ChunkCoord",
            "method": "fromBlockSize",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/collections/chunk_tickets/SortedArraySetMixin",
            "method": "removeIf",
            "desc": "(Ljava/util/function/Predicate;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/SortedPointOfInterest",
            "method": "distanceSq",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/SortedPointOfInterest",
            "method": "isConsumed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/alloc/nbt/CompoundTagMixin",
            "method": "removeOldMapAlloc",
            "desc": "()Ljava/util/HashMap;",
            "value": "obj#223"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/client_tick/entity/base_tick/unused_ambient_sound/MobMixin",
            "method": "andIsServerSide",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/RefIntPair",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/RefIntPair",
            "method": "right",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/lock/NullLock",
            "method": "tryLock",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/lock/NullLock",
            "method": "tryLock",
            "desc": "(JLjava/util/concurrent/TimeUnit;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "isTracking",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "canSkipBlockTouching",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "getStationaryFluidHeightOrDefault",
            "desc": "(Lnet/minecraft/tags/TagKey;D)D",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "getIsTouchingFireLava",
            "desc": "()B",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "getIsSuffocating",
            "desc": "()B",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/VicinityCache",
            "method": "canSkipSupportingBlockSearch",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/block/TrackedBlockStatePredicate",
            "method": "getIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/block/TrackedBlockStatePredicate",
            "method": "getFallbackResult",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/block/flatten_states/FluidStateMixin",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/block/entity/SleepingBlockEntity$1",
            "method": "isRemoved",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/interests/PoiOrdering",
            "method": "isOrdered",
            "desc": "(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/ai/village/poi/PoiManager;Ljava/util/List;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/entity/movement/ChunkAwareBlockCollisionSweeper",
            "method": "canInteractWithBlock",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;I)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/entity/movement/ChunkAwareBlockCollisionSweeper",
            "method": "expandMin",
            "desc": "(I)I",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/entity/movement/ChunkAwareBlockCollisionSweeper",
            "method": "expandMax",
            "desc": "(I)I",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/entity/movement/ChunkAwareBlockCollisionSweeper",
            "method": "hasChunkSectionOversizedBlocks",
            "desc": "(Lnet/minecraft/world/level/chunk/ChunkAccess;I)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/ai/non_poi_block_search/NonPOISearchDistances$MoveToBlockGoalDistances",
            "method": "getRing",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/ai/non_poi_block_search/NonPOISearchDistances$MoveToBlockGoalDistances",
            "method": "getVanillaSortOrderInt",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/entity/item/ItemEntityLazyIterationConsumer",
            "method": "getTransferAmount",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/WorldHelper",
            "method": "areNeighborsWithinSameChunkSection",
            "desc": "(III)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
            "method": "skipNewHashSet",
            "desc": "()Ljava/util/HashSet;",
            "value": "obj#415"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
            "method": "skipLoop",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/world/explosions/block_raycast/ServerExplosionMixin",
            "method": "getExplodedPositionCount",
            "desc": "(Ljava/util/List;)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/minimal_nonvanilla/ai/sensor/frog_attackables/FrogAttackablesSensorMixin",
            "method": "skipCheckTypeAgain",
            "desc": "(Lnet/minecraft/world/entity/LivingEntity;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/api/inventory/LithiumCacheableInventory",
            "method": "hopperCanReuseInventoryUntilBlockEntityInvalidatedOrBlockStateChangedLithium",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/WorldSectionBox",
            "method": "numSections",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/WorldSectionBox",
            "method": "chunkX1",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/WorldSectionBox",
            "method": "chunkY1",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/WorldSectionBox",
            "method": "chunkZ1",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/WorldSectionBox",
            "method": "chunkX2",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/WorldSectionBox",
            "method": "chunkY2",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/tuples/WorldSectionBox",
            "method": "chunkZ2",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/Pos$SectionYIndex",
            "method": "getMinYSectionIndex",
            "desc": "(Lnet/minecraft/world/level/LevelHeightAccessor;)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/BucketedList",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#477"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/BucketedList",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/LazyList",
            "method": "produceToIndex",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/LazyList",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/LazyList",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#484"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/LazyList",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/util/collections/LazyList",
            "method": "addAll",
            "desc": "(ILjava/util/Collection;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/hopper/HopperHelper",
            "method": "determineComparatorUpdatePattern",
            "desc": "(Lnet/minecraft/world/Container;Lnet/caffeinemc/mods/lithium/common/hopper/LithiumStackList;)Lnet/caffeinemc/mods/lithium/common/hopper/ComparatorUpdatePattern;",
            "value": "obj#494"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/block/entity/SleepUntilTimeBlockEntityTickInvoker",
            "method": "sleepUntilTickExclusive",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/tracking/entity/MovementTrackerHelper",
            "method": "getTrackerIndex",
            "desc": "(Ljava/lang/Object;)I",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/ai/poi/fast_portals/PoiManagerMixin",
            "method": "unpackX",
            "desc": "(J)I",
            "value": "-2147483648"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/ai/poi/fast_portals/PoiManagerMixin",
            "method": "packYX",
            "desc": "(JJ)J",
            "value": "2147483648"
          },
          {
            "class": "net/caffeinemc/mods/lithium/mixin/entity/framed_maps/MapItemSavedDataMixin",
            "method": "hasRemovedAny",
            "desc": "(Lnet/minecraft/world/level/saveddata/maps/MapItemSavedData;Lnet/minecraft/world/level/saveddata/maps/MapDecoration;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/chunk/LithiumHashPalette",
            "method": "maybeHas",
            "desc": "(Ljava/util/function/Predicate;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/world/chunk/LithiumHashPalette",
            "method": "getSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/Option",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/Option",
            "method": "isEnabledRecursive",
            "desc": "(Lnet/caffeinemc/mods/lithium/common/config/LithiumConfig;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/Option",
            "method": "isOverridden",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/lithium/common/config/Option",
            "method": "isUserDefined",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 4686
      },
      "verdict": "no",
      "summary": "only 4 of 138 listening patch sites have a hook (2%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "letmedespawn",
      "name": "LetMeDespawn",
      "version": "1.26.11.1",
      "license": "LGPL3.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "com/frikinjay/letmedespawn/LetMeDespawn"
        }
      ],
      "mixin_configs": [
        "letmedespawn.mixins.json",
        "letmedespawn.fabric.mixins.json"
      ],
      "depends": [
        "almanac",
        "dungeonconfig"
      ],
      "classes": 17,
      "methods": 98,
      "sites": [
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/BaseSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/BaseSpawner"
          ],
          "handler": "letmedespawn$markSpawned",
          "kind": "modify-arg",
          "method": "serverTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;tryAddFreshEntityWithPassengers(Lnet/minecraft/world/entity/Entity;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/EnderManMixin",
          "targets": [
            "net/minecraft/world/entity/monster/Enderman"
          ],
          "handler": "letmedespawn$ignoreCarriedBlockForPersistence",
          "kind": "wrap-operation",
          "method": "requiresCustomPersistence",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/monster/Enderman;getCarriedBlock()Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/EquipmentDispenseItemBehaviorMixin",
          "targets": [
            "net/minecraft/core/dispenser/EquipmentDispenseItemBehavior"
          ],
          "handler": "letmedespawn$dispensedItem",
          "kind": "wrap-operation",
          "method": "dispenseEquipment",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;setPersistenceRequired()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$trackSpawnReason",
          "kind": "inject",
          "method": "finalizeSpawn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#finalizeSpawn HEAD"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$saveSpawnSource",
          "kind": "inject",
          "method": "addAdditionalSaveData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#addAdditionalSaveData RETURN"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$loadSpawnSource",
          "kind": "inject",
          "method": "readAdditionalSaveData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#readAdditionalSaveData RETURN"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$preventSpawnerPersistence",
          "kind": "inject",
          "method": "setPersistenceRequired",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#setPersistenceRequired HEAD"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$beforeSetItemSlot",
          "kind": "inject",
          "method": "setItemSlotAndDropWhenKilled",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#setItemSlotAndDropWhenKilled HEAD"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$afterSetItemSlot",
          "kind": "inject",
          "method": "setItemSlotAndDropWhenKilled",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#setItemSlotAndDropWhenKilled TAIL"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$beforeEquip",
          "kind": "inject",
          "method": "equipItemIfPossible",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#equipItemIfPossible HEAD"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$afterEquip",
          "kind": "inject",
          "method": "equipItemIfPossible",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#equipItemIfPossible RETURN"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$beforeDespawn",
          "kind": "inject",
          "method": "checkDespawn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;discard()V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#checkDespawn INVOKE"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "letmedespawn$beforeDespawn",
          "kind": "inject",
          "method": "checkDespawn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;discard()V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#checkDespawn INVOKE"
        },
        {
          "mixin": "com/frikinjay/letmedespawn/mixin/TrialSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/trialspawner/TrialSpawner"
          ],
          "handler": "letmedespawn$trialSpawned",
          "kind": "wrap-operation",
          "method": "spawnMob",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;setPersistenceRequired()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 8,
      "accessors": 3,
      "hooks": {},
      "wanted": {
        "net/minecraft/world/entity/Mob#addAdditionalSaveData @RETURN": 1,
        "net/minecraft/world/entity/Mob#equipItemIfPossible @HEAD": 1,
        "net/minecraft/world/entity/Mob#equipItemIfPossible @RETURN": 1,
        "net/minecraft/world/entity/Mob#finalizeSpawn @HEAD": 1,
        "net/minecraft/world/entity/Mob#readAdditionalSaveData @RETURN": 1,
        "net/minecraft/world/entity/Mob#setItemSlotAndDropWhenKilled @HEAD": 1,
        "net/minecraft/world/entity/Mob#setItemSlotAndDropWhenKilled @TAIL": 1,
        "net/minecraft/world/entity/Mob#setPersistenceRequired @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/server/level/ServerLevel#tryAddFreshEntityWithPassengers @INVOKE (modify-arg)": 1,
        "net/minecraft/world/entity/Mob#checkDespawn @INVOKE": 2,
        "net/minecraft/world/entity/Mob#setPersistenceRequired @INVOKE (wrap-operation)": 2,
        "net/minecraft/world/entity/monster/Enderman#getCarriedBlock @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 17,
        "features": {
          "command": 1,
          "mixin": 7
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 17,
        "methods": 32,
        "tried": 32,
        "completed": 2,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/frikinjay/almanac/util/EntityUtil#dropEquipmentOnDiscard(Lnet/minecraft/world/entity/LivingEntity;)V": 1,
          "com/frikinjay/dungeonconfig/api/ConfigEntry#get()Ljava/lang/Object;": 5,
          "com/frikinjay/dungeonconfig/api/ConfigEntry#getLocalValue()Ljava/lang/Object;": 6,
          "com/frikinjay/dungeonconfig/api/ConfigEntry#set(Ljava/lang/Object;)V": 2,
          "com/frikinjay/dungeonconfig/api/DungeonConfig#save()Z": 1,
          "com/mojang/brigadier/suggestion/SuggestionsBuilder#getRemaining()Ljava/lang/String;": 2,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "java/util/Set#of()Ljava/util/Set;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 2,
          "net/minecraft/resources/Identifier#tryParse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/server/level/ServerLevel#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/world/entity/Mob#getBlockX()I": 2,
          "net/minecraft/world/entity/Mob#getItemBySlot(Lnet/minecraft/world/entity/EquipmentSlot;)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/Mob#hasCustomName()Z": 1
        },
        "runs": [
          {
            "class": "com/frikinjay/letmedespawn/util/DespawnUtil",
            "method": "trialChunkRadius",
            "desc": "()I",
            "value": "3"
          }
        ],
        "insns": 182
      },
      "verdict": "no",
      "summary": "none of its 14 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "lootr",
      "name": "Lootr",
      "version": "1.25.42.124",
      "license": "MIT License",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "noobanidus/mods/lootr/fabric/LootrClient"
        },
        {
          "kind": "main",
          "value": "noobanidus/mods/lootr/fabric/Lootr"
        }
      ],
      "mixin_configs": [
        "lootr-common.mixins.json",
        "lootr-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 334,
      "methods": 2567,
      "sites": [
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/cat/MixinCatSitOnBlockGoal",
          "targets": [
            "net/minecraft/world/entity/ai/goal/CatSitOnBlockGoal"
          ],
          "handler": "LootrPlayersUsing",
          "kind": "inject",
          "method": "isValidTarget",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/goal/CatSitOnBlockGoal#isValidTarget HEAD"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/chest_blocking/MixinChestBlock",
          "targets": [
            "net/minecraft/world/level/block/ChestBlock"
          ],
          "handler": "LootrIsChestBlocked",
          "kind": "wrap-operation",
          "method": "isBlockedChestByBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;isRedstoneConductor(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/client/MixinBlockStateDefinitions",
          "targets": [
            "net/minecraft/client/resources/model/BlockStateDefinitions"
          ],
          "handler": "lootr$injectItemFrameModels",
          "kind": "wrap-operation",
          "method": "<clinit>",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/elytra/MixinEndCityPieces$EndCityPiece",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$EndCityPiece"
          ],
          "handler": "LootrHandleDataMarker",
          "kind": "inject",
          "method": "handleDataMarker",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/ServerLevelAccessor;addFreshEntity(Lnet/minecraft/world/entity/Entity;)Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$EndCityPiece#handleDataMarker INVOKE"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/falling/MixinFallingBlockEntity",
          "targets": [
            "net/minecraft/world/entity/item/FallingBlockEntity"
          ],
          "handler": "lootr$onSetChanged",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/BlockEntity;setChanged()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/filter/MixinLootTable",
          "targets": [
            "net/minecraft/world/level/storage/loot/LootTable"
          ],
          "handler": "LootrFill",
          "kind": "inject",
          "method": "fill",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/storage/loot/LootTable;shuffleAndSplitItems(Lit/unimi/dsi/fastutil/objects/ObjectArrayList;ILnet/minecraft/util/RandomSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/loot/LootTable#fill INVOKE"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/hopper/MixinAbstractContainerMenu",
          "targets": [
            "net/minecraft/world/inventory/AbstractContainerMenu"
          ],
          "handler": "lootr$fixEntityRedstoneSignal",
          "kind": "inject",
          "method": "getRedstoneSignalFromContainer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/AbstractContainerMenu#getRedstoneSignalFromContainer HEAD"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/integration/create/MixinSchematicPrinter",
          "targets": [
            "com/simibubi/create/content/schematics/SchematicPrinter"
          ],
          "handler": "lootr$preventItemFrameConversionHead",
          "kind": "inject",
          "method": "loadSchematic",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/simibubi/create/content/schematics/SchematicPrinter#loadSchematic HEAD"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/integration/create/MixinSchematicPrinter",
          "targets": [
            "com/simibubi/create/content/schematics/SchematicPrinter"
          ],
          "handler": "lootr$preventItemFrameConversionTail",
          "kind": "inject",
          "method": "loadSchematic",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/simibubi/create/content/schematics/SchematicPrinter#loadSchematic RETURN"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/lock/MixinBaseContainerBlockEntity",
          "targets": [
            "net/minecraft/world/level/block/entity/BaseContainerBlockEntity"
          ],
          "handler": "lootr$suppressLockMessage",
          "kind": "wrap-operation",
          "method": "sendChestLockedNotifications",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;sendOverlayMessage(Lnet/minecraft/network/chat/Component;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/lock/MixinBaseContainerBlockEntity",
          "targets": [
            "net/minecraft/world/level/block/entity/BaseContainerBlockEntity"
          ],
          "handler": "lootr$suppressLockSound",
          "kind": "wrap-operation",
          "method": "sendChestLockedNotifications",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;playSound(Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/poi/MixinPoiType",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiType"
          ],
          "handler": "LootrGetBlockStates",
          "kind": "inject",
          "method": "is",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/village/poi/PoiType#is RETURN"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/poi/MixinPoiTypes",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiTypes"
          ],
          "handler": "LootrForState",
          "kind": "inject",
          "method": "forState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/village/poi/PoiTypes#forState RETURN"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/poi/MixinPoiTypes",
          "targets": [
            "net/minecraft/world/entity/ai/village/poi/PoiTypes"
          ],
          "handler": "LootrHasPoi",
          "kind": "inject",
          "method": "hasPoi",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/village/poi/PoiTypes#hasPoi RETURN"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/spawn/MixinServerGamePacketListenerImpl",
          "targets": [
            "net/minecraft/server/network/ServerGamePacketListenerImpl"
          ],
          "handler": "LootrAllowInteractSpawnProtection",
          "kind": "wrap-operation",
          "method": "handleUseItemOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;mayInteract(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/structure_saving/MixinStructureTemplate",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate"
          ],
          "handler": "LootrInjectStructureSavingStart",
          "kind": "wrap-operation",
          "method": "lambda$fillFromWorld$1",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/entity/BlockEntity;saveWithId(Lnet/minecraft/world/level/storage/ValueOutput;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/sync/MixinClientLevel",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "lootr$onSetBlock",
          "kind": "wrap-operation",
          "method": "syncBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/team/MixinScoreboard",
          "targets": [
            "net/minecraft/world/scores/Scoreboard"
          ],
          "handler": "lootr$onTeamAdded",
          "kind": "inject",
          "method": "onTeamAdded",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/scores/Scoreboard#onTeamAdded HEAD"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/team/MixinScoreboard",
          "targets": [
            "net/minecraft/world/scores/Scoreboard"
          ],
          "handler": "lootr$onTeamRemoved",
          "kind": "inject",
          "method": "onTeamRemoved",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/scores/Scoreboard#onTeamRemoved HEAD"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/team/MixinScoreboard",
          "targets": [
            "net/minecraft/world/scores/Scoreboard"
          ],
          "handler": "lootr$onPlayerAddedToTeam",
          "kind": "inject",
          "method": "addPlayerToTeam",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/scores/Scoreboard#addPlayerToTeam RETURN"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/team/MixinScoreboard",
          "targets": [
            "net/minecraft/world/scores/Scoreboard"
          ],
          "handler": "lootr$onPlayerRemovedFromTeam",
          "kind": "inject",
          "method": "removePlayerFromTeam",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/scores/Scoreboard#removePlayerFromTeam RETURN"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/ticker/MixinBrushableBlockEntity",
          "targets": [
            "net/minecraft/world/level/block/entity/BrushableBlockEntity"
          ],
          "handler": "lootr$tryLoadLootTable",
          "kind": "inject",
          "method": "tryLoadLootTable",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BrushableBlockEntity#tryLoadLootTable RETURN"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/ticker/MixinLevelChunk",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "LootrUpdateBlockEntityTicker",
          "kind": "inject",
          "method": "updateBlockEntityTicker",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#updateBlockEntityTicker HEAD"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/ticker/MixinRandomizableContainer",
          "targets": [
            "net/minecraft/world/RandomizableContainer"
          ],
          "handler": "lootr$tryLoadLootTable",
          "kind": "wrap-operation",
          "method": "tryLoadLootTable",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/RandomizableContainer;setLootTableSeed(J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/ticker/MixinRandomizableContainer",
          "targets": [
            "net/minecraft/world/RandomizableContainer"
          ],
          "handler": "lootr$setLootTable",
          "kind": "wrap-operation",
          "method": "setLootTable",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/RandomizableContainer;setLootTable(Lnet/minecraft/resources/ResourceKey;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/ticker/MixinRandomizableContainer",
          "targets": [
            "net/minecraft/world/RandomizableContainer"
          ],
          "handler": "lootr$unpackLootTable",
          "kind": "inject",
          "method": "unpackLootTable",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/ReloadableServerRegistries$Holder;getLootTable(Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/level/storage/loot/LootTable;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/RandomizableContainer#unpackLootTable INVOKE"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/ticker/MixinStructureTemplate",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate"
          ],
          "handler": "lootr$AddEntitiesToWorldInject",
          "kind": "wrap-operation",
          "method": "lambda$placeEntities$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/ServerLevelAccessor;addFreshEntityWithPassengers(Lnet/minecraft/world/entity/Entity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/common/mixin/ticker/MixinStructureTemplate",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate"
          ],
          "handler": "lootr$AddEntitiesToWorldInject",
          "kind": "wrap-operation",
          "method": "lambda$addEntitiesToWorld$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/ServerLevelAccessor;addFreshEntityWithPassengers(Lnet/minecraft/world/entity/Entity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "noobanidus/mods/lootr/fabric/mixin/advancements/MixinPlayerAdvancements",
          "targets": [
            "net/minecraft/server/PlayerAdvancements"
          ],
          "handler": "lootrAward",
          "kind": "inject",
          "method": "award",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/advancements/AdvancementRewards;grant(Lnet/minecraft/server/level/ServerPlayer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/PlayerAdvancements#award INVOKE"
        },
        {
          "mixin": "noobanidus/mods/lootr/fabric/mixin/client/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "LootrInjectClientBlockEntityUpdateTag",
          "kind": "inject",
          "method": "lambda$handleBlockEntityData$0",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "noobanidus/mods/lootr/fabric/mixin/tags/MixinReloadableServerResources",
          "targets": [
            "net/minecraft/server/ReloadableServerResources"
          ],
          "handler": "LootrCheckTags",
          "kind": "inject",
          "method": "updateComponentsAndStaticRegistryTags",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ReloadableServerResources#updateComponentsAndStaticRegistryTags RETURN"
        },
        {
          "mixin": "noobanidus/mods/lootr/fabric/mixin/ticker/MixinPersistentEntitySectionManager",
          "targets": [
            "net/minecraft/world/level/entity/PersistentEntitySectionManager"
          ],
          "handler": "LootrAddEntity",
          "kind": "inject",
          "method": "addEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/entity/PersistentEntitySectionManager#addEntity HEAD"
        }
      ],
      "listening": 16,
      "accessors": 17,
      "hooks": {
        "net_from_server": 1
      },
      "wanted": {
        "com/simibubi/create/content/schematics/SchematicPrinter#loadSchematic @HEAD": 1,
        "com/simibubi/create/content/schematics/SchematicPrinter#loadSchematic @RETURN": 1,
        "net/minecraft/server/ReloadableServerResources#updateComponentsAndStaticRegistryTags @RETURN": 1,
        "net/minecraft/world/entity/ai/goal/CatSitOnBlockGoal#isValidTarget @HEAD": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiType#is @RETURN": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiTypes#forState @RETURN": 1,
        "net/minecraft/world/entity/ai/village/poi/PoiTypes#hasPoi @RETURN": 1,
        "net/minecraft/world/inventory/AbstractContainerMenu#getRedstoneSignalFromContainer @HEAD": 1,
        "net/minecraft/world/level/block/entity/BrushableBlockEntity#tryLoadLootTable @RETURN": 1,
        "net/minecraft/world/level/chunk/LevelChunk#updateBlockEntityTicker @HEAD": 1,
        "net/minecraft/world/level/entity/PersistentEntitySectionManager#addEntity @HEAD": 1,
        "net/minecraft/world/scores/Scoreboard#addPlayerToTeam @RETURN": 1,
        "net/minecraft/world/scores/Scoreboard#onTeamAdded @HEAD": 1,
        "net/minecraft/world/scores/Scoreboard#onTeamRemoved @HEAD": 1,
        "net/minecraft/world/scores/Scoreboard#removePlayerFromTeam @RETURN": 1
      },
      "wanted_calls": {
        "java/util/Map#of @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#setBlock @INVOKE (wrap-operation)": 1,
        "net/minecraft/server/PlayerAdvancements#award @INVOKE": 1,
        "net/minecraft/server/level/ServerLevel#mayInteract @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/RandomizableContainer#setLootTable @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/RandomizableContainer#setLootTableSeed @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/RandomizableContainer#unpackLootTable @INVOKE": 1,
        "net/minecraft/world/entity/player/Player#sendOverlayMessage @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/Level#playSound @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/ServerLevelAccessor#addFreshEntityWithPassengers @INVOKE (wrap-operation)": 2,
        "net/minecraft/world/level/block/entity/BlockEntity#saveWithId @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/entity/BlockEntity#setChanged @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/state/BlockState#isRedstoneConductor @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$EndCityPiece#handleDataMarker @INVOKE": 1,
        "net/minecraft/world/level/storage/loot/LootTable#fill @INVOKE": 1
      },
      "api": [
        {
          "class": "CustomUnbakedBlockStateModel",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "RenderDataBlockEntity",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "FabricBlockEntityTypeBuilder",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FabricBlockEntityTypeBuilder$Factory",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FakePlayer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLayerRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLayerRegistry$TexturedLayerDefinitionProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PackActivationType",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry$PendingParticleProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents$Before",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ServerChunkEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerChunkEvents$Load",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerChunkEvents$Unload",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopped",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerTickEvents",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "ServerTickEvents$EndTick",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        }
      ],
      "code": {
        "classes": 334,
        "features": {
          "block-behaviour": 7,
          "block-shape": 1,
          "block-entity": 8,
          "menu": 1,
          "entity": 2,
          "renderer": 10,
          "particle": 3,
          "command": 1,
          "network": 1,
          "events": 2,
          "mixin": 40
        },
        "events": [
          "Event",
          "PlayerBlockBreakEvents"
        ],
        "examples": {
          "LootrBarrelBlock": [
            "getAnalogOutputSignal",
            "getDestroyProgress",
            "getExplosionResistance",
            "getTicker",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "playerDestroy",
            "tick",
            "triggerEvent",
            "useWithoutItem"
          ],
          "LootrBrushableBlock": [
            "affectNeighborsAfterRemoval",
            "getAnalogOutputSignal",
            "getExplosionResistance",
            "getTicker",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "onPlace",
            "tick"
          ],
          "LootrChestBlock": [
            "getAnalogOutputSignal",
            "getDestroyProgress",
            "getExplosionResistance",
            "getMenuProvider",
            "getTicker",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "playerDestroy",
            "tick",
            "useWithoutItem"
          ],
          "LootrCopperChestBlock": [
            "getAnalogOutputSignal",
            "getDestroyProgress",
            "getExplosionResistance",
            "getMenuProvider",
            "getTicker",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "playerDestroy",
            "tick",
            "useWithoutItem"
          ],
          "LootrDecoratedPotBlock": [
            "attack",
            "getAnalogOutputSignal",
            "getCollisionState",
            "getExplosionResistance",
            "getTicker",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "onProjectileHit",
            "playerWillDestroy",
            "useItemOn",
            "useWithoutItem"
          ],
          "LootrShulkerBoxBlock": [
            "canOpen",
            "getAnalogOutputSignal",
            "getColor",
            "getDestroyProgress",
            "getExplosionResistance",
            "getTicker",
            "hasAnalogOutputSignal",
            "newBlockEntity",
            "playerDestroy",
            "playerWillDestroy",
            "useWithoutItem"
          ],
          "LootrTrappedChestBlock": [
            "getAnalogOutputSignal",
            "getDestroyProgress",
            "getDirectSignal",
            "getExplosionResistance",
            "getMenuProvider",
            "getSignal",
            "getTicker",
            "isSignalSource",
            "newBlockEntity",
            "playerDestroy",
            "useWithoutItem"
          ]
        }
      },
      "interp": {
        "classes": 334,
        "methods": 1704,
        "tried": 600,
        "completed": 217,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lnoobanidus/mods/lootr/common/api/LootrChestType;#clone()Ljava/lang/Object;": 1,
          "[Lnoobanidus/mods/lootr/common/api/client/ContainerStatus$Type;#clone()Ljava/lang/Object;": 1,
          "[Lnoobanidus/mods/lootr/common/api/config/ResistanceMode;#clone()Ljava/lang/Object;": 1,
          "[Lnoobanidus/mods/lootr/common/api/config/SaveMode;#clone()Ljava/lang/Object;": 2,
          "[Lnoobanidus/mods/lootr/common/block/LootrDecoratedPotBlock$CollisionState;#clone()Ljava/lang/Object;": 1,
          "[Lnoobanidus/mods/lootr/common/loot/conditions/LootCount$Operand;#clone()Ljava/lang/Object;": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/mojang/blaze3d/vertex/PoseStack#pushPose()V": 2,
          "java/util/Set#clear()V": 1,
          "java/util/UUID#getMostSignificantBits()J": 1,
          "java/util/concurrent/CompletableFuture#join()Ljava/lang/Object;": 1,
          "java/util/concurrent/CompletableFuture#thenRunAsync(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;": 1,
          "java/util/function/BiPredicate#test(Ljava/lang/Object;Ljava/lang/Object;)Z": 2,
          "net/fabricmc/loader/api/ModContainer#getMetadata()Lnet/fabricmc/loader/api/metadata/ModMetadata;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/renderer/block/BlockAndTintGetter#getBlockEntityRenderData(Lnet/minecraft/core/BlockPos;)Ljava/lang/Object;": 3,
          "net/minecraft/client/renderer/block/dispatch/BlockStateModel#collectParts(Lnet/minecraft/util/RandomSource;Ljava/util/List;)V": 1,
          "net/minecraft/client/renderer/blockentity/ShulkerBoxRenderer#modelTransform(Lnet/minecraft/core/Direction;)Lcom/mojang/math/Transformation;": 1,
          "net/minecraft/client/renderer/blockentity/state/DecoratedPotRenderState#<init>()V": 2,
          "net/minecraft/client/renderer/blockentity/state/ShulkerBoxRenderState#<init>()V": 2,
          "net/minecraft/client/renderer/entity/AbstractMinecartRenderer#extractRenderState(Lnet/minecraft/world/entity/vehicle/minecart/AbstractMinecart;Lnet/minecraft/client/renderer/entity/state/MinecartRenderState;F)V": 3,
          "net/minecraft/client/renderer/entity/state/MinecartRenderState#<init>()V": 2,
          "net/minecraft/client/renderer/special/SpecialModelRenderer$BakingContext#entityModelSet()Lnet/minecraft/client/model/geom/EntityModelSet;": 2,
          "net/minecraft/client/resources/model/ResolvableModel$Resolver#markDependency(Lnet/minecraft/resources/Identifier;)V": 1,
          "net/minecraft/client/resources/model/sprite/SpriteId#texture()Lnet/minecraft/resources/Identifier;": 3,
          "net/minecraft/commands/CommandSourceStack#getLevel()Lnet/minecraft/server/level/ServerLevel;": 2,
          "net/minecraft/core/BlockPos#above()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK_ENTITY_TYPE": 1,
          "net/minecraft/core/registries/BuiltInRegistries#CUSTOM_STAT": 1,
          "net/minecraft/core/registries/BuiltInRegistries#DATA_COMPONENT_TYPE": 2,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 1,
          "net/minecraft/core/registries/BuiltInRegistries#PARTICLE_TYPE": 1,
          "net/minecraft/core/registries/BuiltInRegistries#TRIGGER_TYPES": 1,
          "net/minecraft/core/registries/Registries#BLOCK_ENTITY_TYPE": 1,
          "net/minecraft/core/registries/Registries#ITEM": 1,
          "net/minecraft/network/chat/Component#empty()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Style#EMPTY": 1,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/server/level/ServerLevel#dimension()Lnet/minecraft/resources/ResourceKey;": 1,
          "net/minecraft/server/level/ServerLevel#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 2,
          "net/minecraft/server/level/ServerLevel#registryAccess()Lnet/minecraft/core/RegistryAccess;": 1,
          "net/minecraft/server/level/ServerLevel#structureManager()Lnet/minecraft/world/level/StructureManager;": 1,
          "net/minecraft/stats/Stats#CUSTOM": 2,
          "net/minecraft/world/entity/Entity#blockPosition()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/entity/EntityTypes#CHEST_MINECART": 1,
          "net/minecraft/world/entity/vehicle/minecart/MinecartChest#getContainerLootTable()Lnet/minecraft/resources/ResourceKey;": 4,
          "net/minecraft/world/entity/vehicle/minecart/MinecartChest#getContainerLootTableSeed()J": 2,
          "net/minecraft/world/entity/vehicle/minecart/MinecartChest#setLootTable(Lnet/minecraft/resources/ResourceKey;J)V": 2,
          "net/minecraft/world/item/DyeColor#YELLOW": 1,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 1,
          "net/minecraft/world/level/BlockGetter#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/world/level/block/BarrelBlock#getDestroyProgress(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)F": 1,
          "net/minecraft/world/level/block/BarrelBlock#getExplosionResistance()F": 1,
          "net/minecraft/world/level/block/Blocks#BARREL": 1,
          "net/minecraft/world/level/block/Blocks#CHEST": 1,
          "net/minecraft/world/level/block/Blocks#COPPER_CHEST": 2,
          "net/minecraft/world/level/block/Blocks#GRAVEL": 1,
          "net/minecraft/world/level/block/ChestBlock#TYPE": 1,
          "net/minecraft/world/level/block/ShulkerBoxBlock#getDestroyProgress(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)F": 1,
          "net/minecraft/world/level/block/ShulkerBoxBlock#getExplosionResistance()F": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#is(Lnet/minecraft/tags/TagKey;)Z": 2,
          "net/minecraft/world/level/block/entity/BrushableBlockEntity#setLootTable(Lnet/minecraft/resources/ResourceKey;J)V": 2,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#getBlockPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#getContainerSize()I": 1,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#getDisplayName()Lnet/minecraft/network/chat/Component;": 1,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#getLevel()Lnet/minecraft/world/level/Level;": 3,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#getLootTable()Lnet/minecraft/resources/ResourceKey;": 5,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#getLootTableSeed()J": 3,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#setChanged()V": 1,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#setLootTable(Lnet/minecraft/resources/ResourceKey;J)V": 2,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 2,
          "net/minecraft/world/level/block/state/BlockState#is(Lnet/minecraft/tags/TagKey;)Z": 1,
          "net/minecraft/world/level/block/state/StateDefinition#any()Lnet/minecraft/world/level/block/state/StateHolder;": 1,
          "net/minecraft/world/level/block/state/properties/BlockStateProperties#FACING": 1,
          "net/minecraft/world/level/storage/loot/LootContext#getRandom()Lnet/minecraft/util/RandomSource;": 1,
          "net/minecraft/world/level/storage/loot/parameters/LootContextParams#ORIGIN": 3,
          "new com/mojang/blaze3d/vertex/PoseStack": 2,
          "new net/minecraft/client/model/object/chest/ChestModel": 1,
          "new net/minecraft/world/level/block/state/StateDefinition$Builder": 1,
          "new org/apache/commons/lang3/NotImplementedException": 1,
          "noobanidus/mods/lootr/common/api/config/SaveMode#name()Ljava/lang/String;": 1,
          "noobanidus/mods/lootr/common/api/data/ILootrContainerInstance#canPlayerOpen(Lnet/minecraft/server/level/ServerPlayer;)Z": 3,
          "noobanidus/mods/lootr/common/api/data/ILootrContainerInstance#getDefaultFiller()Lnoobanidus/mods/lootr/common/api/filler/ILootFiller;": 2,
          "noobanidus/mods/lootr/common/api/data/ILootrInventoryStore#addActualOpener(Lnet/minecraft/world/entity/player/Player;)Z": 1,
          "noobanidus/mods/lootr/common/api/data/ILootrInventoryStore#addVisualOpener(Lnet/minecraft/world/entity/player/Player;)Z": 1,
          "noobanidus/mods/lootr/common/api/data/ILootrInventoryStore#removeVisualOpener(Lnet/minecraft/world/entity/player/Player;)Z": 1,
          "noobanidus/mods/lootr/common/api/data/entity/ILootrEntity#getDataLevel()Lnet/minecraft/world/level/Level;": 1,
          "noobanidus/mods/lootr/common/block/LootrShulkerBoxBlock#spawnDestroyParticles(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V": 1,
          "noobanidus/mods/lootr/common/data/Section#setDirty(Z)V": 1,
          "noobanidus/mods/lootr/common/loot/conditions/LootCount$Operand#name()Ljava/lang/String;": 1
        },
        "runs": [
          {
            "class": "noobanidus/mods/lootr/common/api/filler/ILootFiller",
            "method": "supportsNullPlayers",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/blockentity/RandomizableContainerInstance",
            "method": "hasBeenOpened",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/blockentity/RandomizableContainerInstance",
            "method": "isPhysicallyOpen",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/blockentity/RandomizableContainerInstance",
            "method": "isDataReferenceInventory",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/blockentity/RandomizableContainerInstance",
            "method": "getRandomOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/blockentity/RandomizableContainerInstance",
            "method": "isClientOpened",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/interfaces/accessor/ILootrAccessor",
            "method": "priority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/interfaces/accessor/ILootrDataAccessor",
            "method": "hasCopyableComponentsViaItem",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/fabric/network/to_client/PacketPerformBreakEffect",
            "method": "entityId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/config/SyncedConfig",
            "method": "team_loot",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/base/BaseLootrData",
            "method": "hasBeenOpened",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/base/BaseLootrData",
            "method": "isPhysicallyOpen",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/base/BaseLootrData",
            "method": "getDataContainerSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/base/BaseLootrData",
            "method": "isDataReferenceInventory",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/base/BaseLootrData",
            "method": "getDataLootSeed",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/base/BaseLootrData",
            "method": "containerSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/base/BaseLootrData",
            "method": "seed",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/block/LootrBarrelBlock",
            "method": "hasAnalogOutputSignal",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "noobanidus/mods/lootr/common/client/special/LootrShulkerSpecialRenderer$Unbaked",
            "method": "openness",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/filler/DefaultLootFiller",
            "method": "getInstance",
            "desc": "()Lnoobanidus/mods/lootr/common/api/filler/DefaultLootFiller;",
            "value": "obj#142"
          },
          {
            "class": "noobanidus/mods/lootr/common/client/special/LootrChestSpecialRenderer$Unbaked",
            "method": "openness",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "noobanidus/mods/lootr/common/client/special/LootrDecoratedPotSpecialRenderer$Unbaked",
            "method": "decoratedPot",
            "desc": "()Lnoobanidus/mods/lootr/common/client/special/LootrDecoratedPotSpecialRenderer$Unbaked;",
            "value": "obj#154"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/LootrRegistry",
            "method": "isReady",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/ItemFrameLootrType",
            "method": "isEntity",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/ItemFrameLootrType",
            "method": "canDecay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/ItemFrameLootrType",
            "method": "canRefresh",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/integration/DefaultLootrProblematicLootTables",
            "method": "priority",
            "desc": "()I",
            "value": "-1000"
          },
          {
            "class": "noobanidus/mods/lootr/fabric/impl/LootrAPIImpl",
            "method": "isFakePlayer",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/AccessorMap$1",
            "method": "getLootSeed",
            "desc": "(Ljava/lang/Object;)J",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/AccessorMap$1",
            "method": "priority",
            "desc": "()I",
            "value": "-2147483648"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/accessor/RandomizableContainerBlockEntityAccessor",
            "method": "priority",
            "desc": "()I",
            "value": "-100"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/data/ILootrData",
            "method": "canPlayerOpen",
            "desc": "(Lnet/minecraft/server/level/ServerPlayer;)Z",
            "value": "1"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/interfaces/integration/IProblematicLootTableProcessor",
            "method": "priority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/block/LootrShulkerBoxBlock",
            "method": "hasAnalogOutputSignal",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "noobanidus/mods/lootr/common/loot/conditions/LootCount$Operand",
            "method": "getPrecedence",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/BrushableLootrType",
            "method": "getDefaultFiller",
            "desc": "()Lnoobanidus/mods/lootr/common/api/filler/ILootFiller;",
            "value": "obj#356"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/BrushableLootrType",
            "method": "canBeMarkedUnopened",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/BrushableLootrType",
            "method": "canDropContentsWhenBroken",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/BrushableLootrType",
            "method": "canDecay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/BrushableLootrType",
            "method": "canRefresh",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/BrushableLootrType",
            "method": "displaysUnopenedParticle",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/data/LootrInventoryStore",
            "method": "isRefreshing",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "noobanidus/mods/lootr/common/data/LootrInventoryStore",
            "method": "isDecaying",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "noobanidus/mods/lootr/common/data/LootrInventoryStore",
            "method": "hasInventories",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/data/LootrInventoryStore",
            "method": "canBeCulled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "noobanidus/mods/lootr/common/data/LootrInventoryStore",
            "method": "clearInventories",
            "desc": "(Ljava/util/UUID;)Z",
            "value": "0"
          },
          {
            "class": "noobanidus/mods/lootr/common/impl/type/MinecartLootrType",
            "method": "isEntity",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "noobanidus/mods/lootr/common/api/interfaces/processor/ITeamResolver",
            "method": "priority",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 3100
      },
      "verdict": "no",
      "summary": "only 1 of 16 listening patch sites have a hook (6%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "make_bubbles_pop",
      "name": "Make Bubbles Pop",
      "version": "0.3.4-fabric",
      "license": "Custom",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "main",
          "value": "net/tschipcraft/make_bubbles_pop/MakeBubblesPop"
        }
      ],
      "mixin_configs": [
        "make_bubbles_pop.mixins.json"
      ],
      "depends": [],
      "classes": 14,
      "methods": 45,
      "sites": [
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/BubbleColumnPop",
          "targets": [
            "net/minecraft/client/particle/BubbleColumnUpParticle"
          ],
          "handler": "makeBubblesPop$init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/BubbleColumnUpParticle#<init> TAIL"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/BubbleColumnPop",
          "targets": [
            "net/minecraft/client/particle/BubbleColumnUpParticle"
          ],
          "handler": "makeBubblesPop$injectPopParticle",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/BubbleColumnUpParticle;remove()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/BubbleColumnUpParticle#tick INVOKE"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/BubbleColumnPop",
          "targets": [
            "net/minecraft/client/particle/BubbleColumnUpParticle"
          ],
          "handler": "makeBubblesPop$injectPopParticleToSuper",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/BubbleColumnUpParticle#tick HEAD"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/BubblePop",
          "targets": [
            "net/minecraft/client/particle/BubbleParticle"
          ],
          "handler": "makeBubblesPop$init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/BubbleParticle#<init> TAIL"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/BubblePop",
          "targets": [
            "net/minecraft/client/particle/BubbleParticle"
          ],
          "handler": "makeBubblesPop$tick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/BubbleParticle#tick HEAD"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/ChestBubble",
          "targets": [
            "net/minecraft/world/level/block/entity/ChestBlockEntity"
          ],
          "handler": "makeBubblesPop$clientTick",
          "kind": "inject",
          "method": "lidAnimateTick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ChestBlockEntity#lidAnimateTick TAIL"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/CurrentDownPop",
          "targets": [
            "net/minecraft/client/particle/WaterCurrentDownParticle"
          ],
          "handler": "makeBubblesPop$init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/WaterCurrentDownParticle#<init> TAIL"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/CurrentDownPop",
          "targets": [
            "net/minecraft/client/particle/WaterCurrentDownParticle"
          ],
          "handler": "makeBubblesPop$injectPopParticle",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/WaterCurrentDownParticle;remove()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/WaterCurrentDownParticle#tick INVOKE"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/CurrentDownPop",
          "targets": [
            "net/minecraft/client/particle/WaterCurrentDownParticle"
          ],
          "handler": "makeBubblesPop$injectDecreasedSpiralRadius",
          "kind": "modify-constant",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/CurrentDownPop",
          "targets": [
            "net/minecraft/client/particle/WaterCurrentDownParticle"
          ],
          "handler": "makeBubblesPop$injectXOffset",
          "kind": "modify-variable",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/CurrentDownPop",
          "targets": [
            "net/minecraft/client/particle/WaterCurrentDownParticle"
          ],
          "handler": "makeBubblesPop$injectZOffset",
          "kind": "modify-variable",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/CurrentDownPop",
          "targets": [
            "net/minecraft/client/particle/WaterCurrentDownParticle"
          ],
          "handler": "makeBubblesPop$injectFloorCollision",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/WaterCurrentDownParticle;move(DDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/WaterCurrentDownParticle#tick INVOKE"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/ExplosionEmitterBubble",
          "targets": [
            "net/minecraft/client/particle/HugeExplosionSeedParticle"
          ],
          "handler": "makeBubblesPop$injectBubbleParticle",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/HugeExplosionSeedParticle#tick INVOKE"
        },
        {
          "mixin": "net/tschipcraft/make_bubbles_pop/mixin/client/PopBubblePop",
          "targets": [
            "net/minecraft/client/particle/BubblePopParticle"
          ],
          "handler": "makeBubblesPop$init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/BubblePopParticle#<init> TAIL"
        }
      ],
      "listening": 7,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/particle/BubbleColumnUpParticle#<init> @TAIL": 1,
        "net/minecraft/client/particle/BubbleColumnUpParticle#tick @HEAD": 1,
        "net/minecraft/client/particle/BubbleParticle#<init> @TAIL": 1,
        "net/minecraft/client/particle/BubbleParticle#tick @HEAD": 1,
        "net/minecraft/client/particle/BubblePopParticle#<init> @TAIL": 1,
        "net/minecraft/client/particle/WaterCurrentDownParticle#<init> @TAIL": 1,
        "net/minecraft/world/level/block/entity/ChestBlockEntity#lidAnimateTick @TAIL": 1
      },
      "wanted_calls": {
        "net/minecraft/client/particle/BubbleColumnUpParticle#tick @INVOKE": 1,
        "net/minecraft/client/particle/HugeExplosionSeedParticle#tick @INVOKE": 1,
        "net/minecraft/client/particle/WaterCurrentDownParticle#<init> @HEAD (modify-variable)": 2,
        "net/minecraft/client/particle/WaterCurrentDownParticle#tick @HEAD (modify-constant)": 1,
        "net/minecraft/client/particle/WaterCurrentDownParticle#tick @INVOKE": 2
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 14,
        "features": {
          "mixin": 8
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 14,
        "methods": 6,
        "tried": 6,
        "completed": 2,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "java/lang/Object#finalize()V": 1,
          "net/minecraft/world/entity/Entity#isAlive()Z": 2,
          "net/minecraft/world/level/Level#isClientSide()Z": 1
        },
        "runs": [
          {
            "class": "net/tschipcraft/make_bubbles_pop/MakeBubblesPop",
            "method": "getConfigInitialVelocity",
            "desc": "(D)D",
            "value": "0"
          }
        ],
        "insns": 25
      },
      "verdict": "no",
      "summary": "none of its 14 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "modernfix",
      "name": "ModernFix",
      "version": "5.27.19-build.2",
      "license": "LGPL-3.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "org/embeddedt/modernfix/ModernFixClientFabric"
        },
        {
          "kind": "main",
          "value": "org/embeddedt/modernfix/ModernFixFabric"
        },
        {
          "kind": "modmenu",
          "value": "org/embeddedt/modernfix/fabric/modmenu/ModernFixModMenuApiImpl"
        },
        {
          "kind": "preLaunch",
          "value": "org/embeddedt/modernfix/ModernFixPreLaunchFabric"
        }
      ],
      "mixin_configs": [
        "modernfix-fabric.mixins.json",
        "modernfix-common.mixins.json"
      ],
      "depends": [],
      "classes": 272,
      "methods": 1077,
      "sites": [
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/chunk_deadlock/ChunkMapLoadMixin",
          "targets": [
            "net/minecraft/world/level/chunk/status/ChunkStatusTasks"
          ],
          "handler": "createSurrogateFuture",
          "kind": "redirect",
          "method": "full",
          "at": "INVOKE",
          "at_target": "Ljava/util/concurrent/CompletableFuture;supplyAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/chunk_deadlock/ChunkMapLoadMixin",
          "targets": [
            "net/minecraft/world/level/chunk/status/ChunkStatusTasks"
          ],
          "handler": "completeSurrogateFuture",
          "kind": "inject",
          "method": "lambda$full$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk;runPostLoad()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/status/ChunkStatusTasks#lambda$full$0 INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/chunk_deadlock/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onlyAddIfSelfChunkLoaded",
          "kind": "wrap-with-condition",
          "method": "startRiding",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;gameEvent(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/Holder;Lnet/minecraft/world/phys/Vec3;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/extra_experimental_screen/CreateWorldScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/CreateWorldScreen"
          ],
          "handler": "setExperimentalFlag",
          "kind": "modify-arg",
          "method": "createNewWorld",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/worldselection/WorldOpenFlows;createLevelFromExistingSettings(Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;Lnet/minecraft/server/ReloadableServerResources;Lnet/minecraft/core/LayeredRegistryAccess;Lnet/minecraft/world/level/storage/LevelDataAndDimensions$WorldDataAndGenSettings;Ljava/util/Optional;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/missing_block_entities/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "validateBlockEntitiesInChunk",
          "kind": "inject",
          "method": "replaceWithPacketData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#replaceWithPacketData RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/restore_old_dragon_movement/EnderDragonMixin",
          "targets": [
            "net/minecraft/world/entity/boss/enderdragon/EnderDragon"
          ],
          "handler": "fixVerticalVelocityScale",
          "kind": "modify-arg",
          "method": "aiStep",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/unsafe_modded_shape_caches/ShapeCacheCyclicMixin",
          "targets": [
            "com/lothrazar/cyclic/block/cable/ShapeCache"
          ],
          "handler": "mfix$notify",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/lothrazar/cyclic/block/cable/ShapeCache#<clinit> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/unsafe_modded_shape_caches/ShapeCacheRSMixin",
          "targets": [
            "com/refinedmods/refinedstorage/block/shape/ShapeCache"
          ],
          "handler": "mfix$notify",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/refinedmods/refinedstorage/block/shape/ShapeCache#<clinit> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/world_leaks/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "clearLevelDataForLeaks",
          "kind": "inject",
          "method": "disconnect",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/Minecraft;level:Lnet/minecraft/client/multiplayer/ClientLevel;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#disconnect FIELD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/bugfix/world_screen_skipped/WorldSelectionListMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry"
          ],
          "handler": "preventClosingCreateScreenAfterDelete",
          "kind": "inject",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry;doDeleteWorld()V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#* INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/core/BootstrapMixin",
          "targets": [
            "net/minecraft/server/Bootstrap"
          ],
          "handler": "doModernFixBootstrap",
          "kind": "inject",
          "method": "bootStrap",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/Bootstrap#bootStrap HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/core/ClientPlayNetHandlerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "signalRecipes",
          "kind": "inject",
          "method": "handleUpdateRecipes",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/core/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "trackTickTime",
          "kind": "inject",
          "method": "runServer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/MinecraftServer;processPacketsAndTick(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#runServer INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/devenv/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "createUserApiService",
          "kind": "overwrite",
          "method": "createUserApiService",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/devenv/NarratorMixin",
          "targets": [
            "net/minecraft/client/GameNarrator"
          ],
          "handler": "useDummyNarrator",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/text2speech/Narrator;getNarrator()Lcom/mojang/text2speech/Narrator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/blockentity_incorrect_thread/ChunkAccessMixin",
          "targets": [
            "net/minecraft/world/level/chunk/ChunkAccess"
          ],
          "handler": "wrapInConcurrencyDetector",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/ChunkAccess#<init> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/branding/DebugScreenEntriesMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntries"
          ],
          "handler": "insertIntoDefaultProfile",
          "kind": "modify-variable",
          "method": "<clinit>",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/cause_lag_by_disabling_threads/ChunkRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/chunk/SectionRenderDispatcher"
          ],
          "handler": "replaceExecutor",
          "kind": "modify-variable",
          "method": "<init>*",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/direct_stack_trace/CrashReportMixin",
          "targets": [
            "net/minecraft/CrashReport"
          ],
          "handler": "dumpStacktrace",
          "kind": "inject",
          "method": "addCategory",
          "at": "INVOKE",
          "at_target": "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/CrashReport#addCategory INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/mcfunction_profiling/ServerFunctionManagerMixin",
          "targets": [
            "net/minecraft/server/ServerFunctionManager"
          ],
          "handler": "resetWatches",
          "kind": "inject",
          "method": "executeTagFunctions",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ServerFunctionManager#executeTagFunctions HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/mcfunction_profiling/ServerFunctionManagerMixin",
          "targets": [
            "net/minecraft/server/ServerFunctionManager"
          ],
          "handler": "startWatch",
          "kind": "inject",
          "method": "executeTagFunctions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/ServerFunctionManager;execute(Lnet/minecraft/commands/functions/CommandFunction;Lnet/minecraft/commands/CommandSourceStack;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ServerFunctionManager#executeTagFunctions INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/mcfunction_profiling/ServerFunctionManagerMixin",
          "targets": [
            "net/minecraft/server/ServerFunctionManager"
          ],
          "handler": "stopWatch",
          "kind": "inject",
          "method": "executeTagFunctions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/ServerFunctionManager;execute(Lnet/minecraft/commands/functions/CommandFunction;Lnet/minecraft/commands/CommandSourceStack;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ServerFunctionManager#executeTagFunctions INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/mcfunction_profiling/ServerFunctionManagerMixin",
          "targets": [
            "net/minecraft/server/ServerFunctionManager"
          ],
          "handler": "pruneUnusedWatches",
          "kind": "inject",
          "method": "executeTagFunctions",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ServerFunctionManager#executeTagFunctions RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/measure_time/BootstrapMixin",
          "targets": [
            "net/minecraft/server/Bootstrap"
          ],
          "handler": "recordStartTime",
          "kind": "inject",
          "method": "bootStrap",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/server/Bootstrap;isBootstrapped:Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/Bootstrap#bootStrap FIELD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/measure_time/BootstrapMixin",
          "targets": [
            "net/minecraft/server/Bootstrap"
          ],
          "handler": "printStartTime",
          "kind": "inject",
          "method": "bootStrap",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/Bootstrap#bootStrap RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/measure_time/ConnectScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ConnectScreen"
          ],
          "handler": "recordConnectStartTime",
          "kind": "inject",
          "method": "connect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ConnectScreen#connect HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/measure_time/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onClientTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/measure_time/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "recordWorldLoadStart",
          "kind": "inject",
          "method": "doWorldLoad",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#doWorldLoad HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/measure_time/ProfiledReloadInstanceMixin",
          "targets": [
            "net/minecraft/server/packs/resources/ProfiledReloadInstance"
          ],
          "handler": "getWrappedListeners",
          "kind": "modify-variable",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/measure_time/ProfiledReloadInstanceMixin",
          "targets": [
            "net/minecraft/server/packs/resources/ProfiledReloadInstance"
          ],
          "handler": "sortStates",
          "kind": "modify-variable",
          "method": "finish",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/measure_time/SimpleReloadInstanceMixin",
          "targets": [
            "net/minecraft/server/packs/resources/SimpleReloadInstance"
          ],
          "handler": "enableDebugReloader",
          "kind": "modify-variable",
          "method": "create",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/measure_time/WorldLoaderMixin",
          "targets": [
            "net/minecraft/server/WorldLoader"
          ],
          "handler": "startStopwatch",
          "kind": "inject",
          "method": "load",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/WorldLoader#load HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/remove_chat_signing/ChatTrustLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatTrustLevel"
          ],
          "handler": "alwaysShowSecure",
          "kind": "inject",
          "method": "evaluate",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/ChatTrustLevel#evaluate HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/remove_chat_signing/ProfileKeyPairManagerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ProfileKeyPairManager"
          ],
          "handler": "create",
          "kind": "overwrite",
          "method": "create",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/remove_telemetry/ClientTelemetryManagerMixin",
          "targets": [
            "net/minecraft/client/telemetry/ClientTelemetryManager"
          ],
          "handler": "disableTelemetrySender",
          "kind": "inject",
          "method": "createEventSender",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/telemetry/ClientTelemetryManager#createEventSender HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/remove_telemetry/MinecraftMixin_Telemetry",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "markTelemetryNotAllowed",
          "kind": "inject",
          "method": "allowsTelemetry",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#allowsTelemetry HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/spark_profile_world_join/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "startProfiling",
          "kind": "inject",
          "method": "prepareForMultiplayer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#prepareForMultiplayer HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/spark_profile_world_join/WorldLoaderMixin",
          "targets": [
            "net/minecraft/server/WorldLoader"
          ],
          "handler": "startProfiling",
          "kind": "inject",
          "method": "load",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/WorldLoader#load HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/stalled_chunk_load_detection/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "bailIfServerDead",
          "kind": "inject",
          "method": "getChunk",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerChunkCache#getChunk HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/feature/suppress_narrator_stacktrace/GameNarratorMixin",
          "targets": [
            "net/minecraft/client/GameNarrator"
          ],
          "handler": "suppressStacktracePrinting",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/text2speech/Narrator;getNarrator()Lcom/mojang/text2speech/Narrator;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/attribute_supplier_dedup/AttributeSupplierMixin",
          "targets": [
            "net/minecraft/world/entity/ai/attributes/AttributeSupplier"
          ],
          "handler": "useCompactJavaMap",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/attributes/AttributeSupplier#<init> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/cache_blockstate_cache_arrays/AbstractBlockStateCacheMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase$Cache"
          ],
          "handler": "getVoxelShapeValues",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/SupportType;values()[Lnet/minecraft/world/level/block/SupportType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/cache_blockstate_cache_arrays/AbstractBlockStateCacheMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase$Cache"
          ],
          "handler": "getDirectionAxisValues",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction$Axis;values()[Lnet/minecraft/core/Direction$Axis;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/cache_profile_texture_url/SkinManagerMixin",
          "targets": [
            "net/minecraft/client/resources/SkinManager$TextureCache"
          ],
          "handler": "useCachedHash",
          "kind": "redirect",
          "method": "getOrLoad",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;getHash()Ljava/lang/String;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/cache_profile_texture_url/SkinManagerMixin",
          "targets": [
            "net/minecraft/client/resources/SkinManager$TextureCache"
          ],
          "handler": "useCachedHash",
          "kind": "redirect",
          "method": "registerTexture",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;getHash()Ljava/lang/String;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/cache_strongholds/ChunkGeneratorMixin",
          "targets": [
            "net/minecraft/world/level/chunk/ChunkGeneratorStructureState"
          ],
          "handler": "useDedicatedService",
          "kind": "redirect",
          "method": "generateRingPositions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;backgroundExecutor()Lnet/minecraft/TracingExecutor;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/cache_strongholds/ConcentricRingsStructurePlacementMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/placement/ConcentricRingsStructurePlacement"
          ],
          "handler": "mfix$computeRadiusBounds",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/placement/ConcentricRingsStructurePlacement#<init> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/cache_strongholds/ConcentricRingsStructurePlacementMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/placement/ConcentricRingsStructurePlacement"
          ],
          "handler": "mfix$earlyRejectByRadius",
          "kind": "inject",
          "method": "isPlacementChunk",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/placement/ConcentricRingsStructurePlacement#isPlacementChunk HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/cache_strongholds/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "setCachePath",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/ChunkGeneratorStructureState;ensureStructuresGenerated()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/chunk_meshing/RebuildTaskMixin",
          "targets": [
            "net/minecraft/client/renderer/chunk/SectionCompiler"
          ],
          "handler": "fastBetweenClosed",
          "kind": "redirect",
          "method": "compile",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos;betweenClosed(Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/BlockPos;)Ljava/lang/Iterable;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/compact_bit_storage/PalettedContainerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "validateData",
          "kind": "inject",
          "method": "read",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/chunk/PalettedContainer;data:Lnet/minecraft/world/level/chunk/PalettedContainer$Data;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/PalettedContainer#read FIELD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/compact_entity_models/CubeDefinitionMixin",
          "targets": [
            "net/minecraft/client/model/geom/builders/CubeDefinition"
          ],
          "handler": "modernfix$deduplicateCube",
          "kind": "wrap-operation",
          "method": "bake",
          "at": "NEW",
          "at_target": "(IIFFFFFFFFFZFFLjava/util/Set;)Lnet/minecraft/client/model/geom/ModelPart$Cube;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/compact_imposterprotochunks/ImposterProtoChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/ImposterProtoChunk"
          ],
          "handler": "replaceDuplicateObjects",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/ImposterProtoChunk#<init> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/compact_mojang_registries/BlockStateDataMixin",
          "targets": [
            "net/minecraft/util/datafix/fixes/BlockStateData"
          ],
          "handler": "clearInterner",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/datafix/fixes/BlockStateData#<clinit> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/compact_mojang_registries/MappedRegistryMixin",
          "targets": [
            "net/minecraft/core/MappedRegistry"
          ],
          "handler": "replaceStorage",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/MappedRegistry#<init> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/compress_unihex_font/UnihexProviderByteContentsMixin",
          "targets": [
            "net/minecraft/client/gui/font/providers/UnihexProvider$ByteContents"
          ],
          "handler": "useCompactIfPossible",
          "kind": "inject",
          "method": "read",
          "at": "NEW",
          "at_target": "([B)Lnet/minecraft/client/gui/font/providers/UnihexProvider$ByteContents;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/providers/UnihexProvider$ByteContents#read NEW"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/compress_unihex_font/UnihexProviderShortContentsMixin",
          "targets": [
            "net/minecraft/client/gui/font/providers/UnihexProvider$ShortContents"
          ],
          "handler": "useCompactIfPossible",
          "kind": "inject",
          "method": "read",
          "at": "NEW",
          "at_target": "([S)Lnet/minecraft/client/gui/font/providers/UnihexProvider$ShortContents;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/providers/UnihexProvider$ShortContents#read NEW"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/datapack_reload_exceptions/RecipeManagerMixin",
          "targets": [
            "net/minecraft/world/item/crafting/RecipeManager"
          ],
          "handler": "silenceException",
          "kind": "redirect",
          "method": "apply",
          "at": "INVOKE",
          "at_target": "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dedicated_reload_executor/CreateWorldScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/CreateWorldScreen"
          ],
          "handler": "getReloadExecutorService",
          "kind": "modify-arg",
          "method": "applyNewPackConfig",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/WorldLoader;load(Lnet/minecraft/server/WorldLoader$InitConfig;Lnet/minecraft/server/WorldLoader$WorldDataSupplier;Lnet/minecraft/server/WorldLoader$ResultFactory;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dedicated_reload_executor/CreateWorldScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/CreateWorldScreen"
          ],
          "handler": "getCreationExecutorService",
          "kind": "modify-arg",
          "method": "openCreateWorldScreen",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/WorldLoader;load(Lnet/minecraft/server/WorldLoader$InitConfig;Lnet/minecraft/server/WorldLoader$WorldDataSupplier;Lnet/minecraft/server/WorldLoader$ResultFactory;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dedicated_reload_executor/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "getResourceReloadExecutor",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;backgroundExecutor()Lnet/minecraft/TracingExecutor;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dedicated_reload_executor/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "getResourceReloadExecutor",
          "kind": "redirect",
          "method": "reloadResourcePacks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;backgroundExecutor()Lnet/minecraft/TracingExecutor;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dedicated_reload_executor/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "getReloadExecutor",
          "kind": "modify-arg",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/ReloadableServerResources;loadResources(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/core/LayeredRegistryAccess;Ljava/util/List;Lnet/minecraft/world/flag/FeatureFlagSet;Lnet/minecraft/commands/Commands$CommandSelection;Lnet/minecraft/server/permissions/PermissionSet;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dedicated_reload_executor/WorldOpenFlowsMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows"
          ],
          "handler": "getResourceReloadExecutor",
          "kind": "modify-arg",
          "method": "loadWorldDataBlocking",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/WorldLoader;load(Lnet/minecraft/server/WorldLoader$InitConfig;Lnet/minecraft/server/WorldLoader$WorldDataSupplier;Lnet/minecraft/server/WorldLoader$ResultFactory;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/deduplicate_climate_parameters/ParameterMixin",
          "targets": [
            "net/minecraft/world/level/biome/Climate$Parameter",
            "net/minecraft/world/level/biome/Climate$ParameterPoint"
          ],
          "handler": "internParameterStatic",
          "kind": "redirect",
          "method": "*",
          "at": "NEW",
          "at_target": "net/minecraft/world/level/biome/Climate$Parameter",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/deduplicate_location/MixinIdentifier",
          "targets": [
            "net/minecraft/resources/Identifier"
          ],
          "handler": "reinit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/resources/Identifier#<init> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/deduplicate_wall_shapes/WallBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/WallBlock"
          ],
          "handler": "memoizeColumn",
          "kind": "wrap-operation",
          "method": "makeShapes",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/Block;column(DDD)Lnet/minecraft/world/phys/shapes/VoxelShape;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/deduplicate_wall_shapes/WallBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/WallBlock"
          ],
          "handler": "memoizeBoxZ",
          "kind": "wrap-operation",
          "method": "makeShapes",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/Block;boxZ(DDDDD)Lnet/minecraft/world/phys/shapes/VoxelShape;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/deduplicate_wall_shapes/WallBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/WallBlock"
          ],
          "handler": "memoizeRotateHorizontal",
          "kind": "wrap-operation",
          "method": "makeShapes",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/shapes/Shapes;rotateHorizontal(Lnet/minecraft/world/phys/shapes/VoxelShape;)Ljava/util/Map;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/deduplicate_wall_shapes/WallBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/WallBlock"
          ],
          "handler": "memoizeOr",
          "kind": "wrap-operation",
          "method": "lambda$makeShapes$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/shapes/Shapes;or(Lnet/minecraft/world/phys/shapes/VoxelShape;Lnet/minecraft/world/phys/shapes/VoxelShape;)Lnet/minecraft/world/phys/shapes/VoxelShape;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_dfu/DataFixTypesMixin",
          "targets": [
            "net/minecraft/util/datafix/DataFixTypes"
          ],
          "handler": "kickOnUpdate",
          "kind": "inject",
          "method": "update",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/datafixers/DataFixer;update(Lcom/mojang/datafixers/DSL$TypeReference;Lcom/mojang/serialization/Dynamic;II)Lcom/mojang/serialization/Dynamic;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/datafix/DataFixTypes#update INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_entity_renderers/EntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "checkNullnessFromEntity",
          "kind": "inject",
          "method": "getRenderer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_entity_renderers/EntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "checkNullnessFromState",
          "kind": "inject",
          "method": "getRenderer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_entity_renderers/EntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "setRendererField",
          "kind": "redirect",
          "method": "onResourceManagerReload",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/renderer/entity/EntityRenderDispatcher;renderers:Ljava/util/Map;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_entity_renderers/EntityRenderersMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderers"
          ],
          "handler": "createDynamicRendererLoader",
          "kind": "inject",
          "method": "createEntityRenderers",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderers#createEntityRenderers HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_languages/ClientLanguageMixin",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "collectResources",
          "kind": "wrap-operation",
          "method": "loadFrom",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/resources/language/ClientLanguage;appendFrom(Ljava/lang/String;Ljava/util/List;Ljava/util/Map;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_languages/ClientLanguageMixin",
          "targets": [
            "net/minecraft/client/resources/language/ClientLanguage"
          ],
          "handler": "modifyLanguageMap",
          "kind": "modify-arg",
          "method": "loadFrom",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/resources/language/ClientLanguage;<init>(Ljava/util/Map;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinBlockStateModelLoader",
          "targets": [
            "net/minecraft/client/resources/model/BlockStateModelLoader"
          ],
          "handler": "skipAOTBlockStateLoad",
          "kind": "modify-arg",
          "method": "loadBlockStates",
          "at": "INVOKE",
          "at_target": "Ljava/util/concurrent/CompletableFuture;thenCompose(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinClientItemInfoLoader",
          "targets": [
            "net/minecraft/client/resources/model/ClientItemInfoLoader"
          ],
          "handler": "skipAOTClientItemLoad",
          "kind": "modify-arg",
          "method": "scheduleLoad",
          "at": "INVOKE",
          "at_target": "Ljava/util/concurrent/CompletableFuture;thenCompose(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery",
          "targets": [
            "net/minecraft/client/resources/model/ModelBakery"
          ],
          "handler": "dynamicallyBake",
          "kind": "redirect",
          "method": "bakeModels",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/thread/ParallelMapTransform;schedule(Ljava/util/Map;Ljava/util/function/BiFunction;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery",
          "targets": [
            "net/minecraft/client/resources/model/ModelBakery"
          ],
          "handler": "dynamicItemProperties",
          "kind": "redirect",
          "method": "bakeModels",
          "at": "INVOKE",
          "at_target": "Ljava/util/Map;forEach(Ljava/util/function/BiConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery",
          "targets": [
            "net/minecraft/client/resources/model/ModelBakery"
          ],
          "handler": "showFullException",
          "kind": "modify-constant",
          "method": "lambda$bakeModels$0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelManager",
          "targets": [
            "net/minecraft/client/resources/model/ModelManager"
          ],
          "handler": "skipAOTUnbakedModelLoad",
          "kind": "modify-arg",
          "method": "loadBlockModels",
          "at": "INVOKE",
          "at_target": "Ljava/util/concurrent/CompletableFuture;thenCompose(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelManager",
          "targets": [
            "net/minecraft/client/resources/model/ModelManager"
          ],
          "handler": "mfix$discoverModelDependencies",
          "kind": "inject",
          "method": "discoverModelDependencies",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/ModelManager#discoverModelDependencies HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelManager",
          "targets": [
            "net/minecraft/client/resources/model/ModelManager"
          ],
          "handler": "buildModelGroups",
          "kind": "overwrite",
          "method": "buildModelGroups",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelManager",
          "targets": [
            "net/minecraft/client/resources/model/ModelManager"
          ],
          "handler": "createBlockStateToModelDispatch",
          "kind": "overwrite",
          "method": "createBlockStateToModelDispatch",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinTextureSlots",
          "targets": [
            "net/minecraft/client/resources/model/sprite/TextureSlots"
          ],
          "handler": "mfix$handleEmptyTextureReference",
          "kind": "inject",
          "method": "isTextureReference",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/sprite/TextureSlots#isTextureReference HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/dynamic_structure_manager/StructureManagerMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager"
          ],
          "handler": "makeStructuresSafe",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager#<init> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/encoder_cache_leak/ClientConfigurationPacketListenerImplMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl"
          ],
          "handler": "resetEncoderCache",
          "kind": "inject",
          "method": "handleConfigurationFinished",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl#handleConfigurationFinished RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/encoder_cache_leak/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "clearEncoderCache",
          "kind": "inject",
          "method": "disconnect",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#disconnect RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/encoder_cache_leak/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "clearEncoderCache",
          "kind": "inject",
          "method": "clearClientLevel",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#clearClientLevel RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/faster_item_rendering/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "markRenderingLevel",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GameRenderer;renderLevel(Lnet/minecraft/client/DeltaTracker;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/faster_item_rendering/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "markNotRenderingLevel",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GameRenderer;renderLevel(Lnet/minecraft/client/DeltaTracker;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/faster_texture_stitching/StitcherMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/Stitcher"
          ],
          "handler": "stitchFast",
          "kind": "inject",
          "method": "stitch",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/Stitcher#stitch HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/faster_texture_stitching/StitcherMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/Stitcher"
          ],
          "handler": "gatherSpritesFast",
          "kind": "inject",
          "method": "gatherSprites",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/Stitcher#gatherSprites HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/lazy_search_tree_registry/SessionSearchTreesMixin",
          "targets": [
            "net/minecraft/client/multiplayer/SessionSearchTrees"
          ],
          "handler": "mfix$deferProcessing",
          "kind": "modify-arg",
          "method": "lambda$updateRecipes$0",
          "at": "INVOKE",
          "at_target": "Ljava/util/concurrent/CompletableFuture;supplyAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/model_optimizations/PropertyMixin",
          "targets": [
            "net/minecraft/world/level/block/state/properties/Property"
          ],
          "handler": "internName",
          "kind": "modify-variable",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/model_optimizations/PropertyMixin",
          "targets": [
            "net/minecraft/world/level/block/state/properties/Property"
          ],
          "handler": "equals",
          "kind": "overwrite",
          "method": "equals",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/model_optimizations/TransformationMatrixMixin",
          "targets": [
            "com/mojang/math/Transformation"
          ],
          "handler": "hashCode",
          "kind": "overwrite",
          "method": "hashCode",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/mojang_registry_size/ResourceKeyMixin",
          "targets": [
            "net/minecraft/resources/ResourceKey"
          ],
          "handler": "createEfficient",
          "kind": "inject",
          "method": "create",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/resources/ResourceKey#create HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/release_protochunks/ChunkHolderMixin",
          "targets": [
            "net/minecraft/server/level/ChunkHolder"
          ],
          "handler": "recheckSuspensionAfterNeighbor",
          "kind": "inject",
          "method": "addSaveDependency",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkHolder#addSaveDependency RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/release_protochunks/ChunkHolderMixin",
          "targets": [
            "net/minecraft/server/level/ChunkHolder"
          ],
          "handler": "markForSuspensionOnDemotion",
          "kind": "inject",
          "method": "updateFutures",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkHolder#updateFutures RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/release_protochunks/ChunkMapMixin",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "dropProtoChunks",
          "kind": "inject",
          "method": "processUnloads",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap#processUnloads RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/remove_biome_temperature_cache/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "getTemperature",
          "kind": "overwrite",
          "method": "getTemperature",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/resourcepacks/FilePackResourcesMixin",
          "targets": [
            "net/minecraft/server/packs/FilePackResources"
          ],
          "handler": "mf$getNamespaces",
          "kind": "inject",
          "method": "getNamespaces",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/FilePackResources#getNamespaces HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/resourcepacks/FilePackResourcesMixin",
          "targets": [
            "net/minecraft/server/packs/FilePackResources"
          ],
          "handler": "mf$listResources",
          "kind": "inject",
          "method": "listResources",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/FilePackResources#listResources HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/resourcepacks/FilePackResourcesMixin",
          "targets": [
            "net/minecraft/server/packs/FilePackResources"
          ],
          "handler": "mf$invalidateIndex",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/FilePackResources#close HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/resourcepacks/PathPackResourcesMixin",
          "targets": [
            "net/minecraft/server/packs/PathPackResources"
          ],
          "handler": "cacheResources",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/PathPackResources#<init> TAIL"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/state_definition_construct/StateDefinitionMixin",
          "targets": [
            "net/minecraft/world/level/block/state/StateDefinition"
          ],
          "handler": "useArrayMap",
          "kind": "modify-variable",
          "method": "createMultiPropertyStates",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/tag_id_caching/TagEntryMixin",
          "targets": [
            "net/minecraft/tags/TagEntry"
          ],
          "handler": "elementOrTag",
          "kind": "overwrite",
          "method": "elementOrTag",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/tag_id_caching/TagOrElementLocationMixin",
          "targets": [
            "net/minecraft/util/ExtraCodecs$TagOrElementLocation"
          ],
          "handler": "decoratedId",
          "kind": "overwrite",
          "method": "decoratedId",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/thread_priorities/IntegratedServerMixin",
          "targets": [
            "net/minecraft/client/server/IntegratedServer"
          ],
          "handler": "adjustServerPriority",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/server/IntegratedServer#<init> RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/thread_priorities/UtilMixin",
          "targets": [
            "net/minecraft/util/Util"
          ],
          "handler": "adjustPriorityOfThreadFactory",
          "kind": "modify-arg",
          "method": "makeExecutor",
          "at": "INVOKE",
          "at_target": "Ljava/util/concurrent/ForkJoinPool;<init>(ILjava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;Ljava/lang/Thread$UncaughtExceptionHandler;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/ticking_chunk_alloc/BatMixin",
          "targets": [
            "net/minecraft/world/entity/ambient/Bat"
          ],
          "handler": "useCachedLocalDate",
          "kind": "redirect",
          "method": "isHalloween",
          "at": "INVOKE",
          "at_target": "Ljava/time/LocalDate;now()Ljava/time/LocalDate;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/ticking_chunk_alloc/ChunkAccessMixin",
          "targets": [
            "net/minecraft/world/level/chunk/ChunkAccess"
          ],
          "handler": "getAllReferences",
          "kind": "overwrite",
          "method": "getAllReferences",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/worldgen_allocation/NoiseChunkMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/NoiseChunk"
          ],
          "handler": "wrap",
          "kind": "overwrite",
          "method": "wrap",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/worldgen_allocation/SequenceRuleMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/SurfaceRules$SequenceRule"
          ],
          "handler": "tryApply",
          "kind": "overwrite",
          "method": "tryApply",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/worldgen_allocation/SurfaceRulesContextMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/SurfaceRules$Context"
          ],
          "handler": "updateY",
          "kind": "overwrite",
          "method": "updateY",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/perf/worldgen_allocation/SurfaceRulesContextMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/SurfaceRules$Context"
          ],
          "handler": "getBiome",
          "kind": "overwrite",
          "method": "getBiome",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/safety/BlockColorsMixin",
          "targets": [
            "net/minecraft/client/color/block/BlockColors"
          ],
          "handler": "lockMapBeforeAccess",
          "kind": "inject",
          "method": "register",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/color/block/BlockColors#register HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/common/mixin/safety/BlockColorsMixin",
          "targets": [
            "net/minecraft/client/color/block/BlockColors"
          ],
          "handler": "unlockMap",
          "kind": "inject",
          "method": "register",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/color/block/BlockColors#register TAIL"
        },
        {
          "mixin": "org/embeddedt/modernfix/fabric/mixin/core/ClientCommonPacketListenerImplMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl"
          ],
          "handler": "signalTags",
          "kind": "inject",
          "method": "handleUpdateTags",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl#handleUpdateTags RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/fabric/mixin/core/ClientMinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "markServerStarted",
          "kind": "inject",
          "method": "runServer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;getNanos()J",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#runServer INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/fabric/mixin/core/MCMixin_Fabric",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onRenderTickEnd",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "org/embeddedt/modernfix/fabric/mixin/core/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "changeServerReference",
          "kind": "inject",
          "method": "runServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#runServer HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/fabric/mixin/core/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "hookServerStarted",
          "kind": "inject",
          "method": "runServer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;getNanos()J",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#runServer INVOKE"
        },
        {
          "mixin": "org/embeddedt/modernfix/fabric/mixin/core/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "hookServerShutdown",
          "kind": "inject",
          "method": "stopServer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#stopServer RETURN"
        },
        {
          "mixin": "org/embeddedt/modernfix/fabric/mixin/feature/measure_time/MinecraftMixin_Fabric",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "recordWorldLoadStart",
          "kind": "inject",
          "method": "doWorldLoad",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#doWorldLoad HEAD"
        },
        {
          "mixin": "org/embeddedt/modernfix/fabric/mixin/perf/faster_command_suggestions/SuggestionsBuilderMixin",
          "targets": [
            "com/mojang/brigadier/suggestion/SuggestionsBuilder"
          ],
          "handler": "addIfFits",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        }
      ],
      "listening": 53,
      "accessors": 14,
      "hooks": {
        "net_from_server": 1,
        "tick": 2
      },
      "wanted": {
        "com/lothrazar/cyclic/block/cable/ShapeCache#<clinit> @RETURN": 1,
        "com/refinedmods/refinedstorage/block/shape/ShapeCache#<clinit> @RETURN": 1,
        "net/minecraft/client/Minecraft#allowsTelemetry @HEAD": 1,
        "net/minecraft/client/Minecraft#clearClientLevel @RETURN": 1,
        "net/minecraft/client/Minecraft#disconnect @RETURN": 1,
        "net/minecraft/client/Minecraft#doWorldLoad @HEAD": 2,
        "net/minecraft/client/Minecraft#prepareForMultiplayer @HEAD": 1,
        "net/minecraft/client/color/block/BlockColors#register @HEAD": 1,
        "net/minecraft/client/color/block/BlockColors#register @TAIL": 1,
        "net/minecraft/client/gui/screens/ConnectScreen#connect @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl#handleConfigurationFinished @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl#handleUpdateTags @RETURN": 1,
        "net/minecraft/client/multiplayer/chat/ChatTrustLevel#evaluate @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer @RETURN": 2,
        "net/minecraft/client/renderer/entity/EntityRenderers#createEntityRenderers @HEAD": 1,
        "net/minecraft/client/renderer/texture/Stitcher#gatherSprites @HEAD": 1,
        "net/minecraft/client/renderer/texture/Stitcher#stitch @HEAD": 1,
        "net/minecraft/client/resources/model/ModelManager#discoverModelDependencies @HEAD": 1,
        "net/minecraft/client/resources/model/sprite/TextureSlots#isTextureReference @HEAD": 1,
        "net/minecraft/client/server/IntegratedServer#<init> @RETURN": 1,
        "net/minecraft/client/telemetry/ClientTelemetryManager#createEventSender @HEAD": 1,
        "net/minecraft/core/MappedRegistry#<init> @RETURN": 1,
        "net/minecraft/resources/Identifier#<init> @RETURN": 1,
        "net/minecraft/resources/ResourceKey#create @HEAD": 1,
        "net/minecraft/server/Bootstrap#bootStrap @HEAD": 1,
        "net/minecraft/server/Bootstrap#bootStrap @RETURN": 1,
        "net/minecraft/server/MinecraftServer#runServer @HEAD": 1,
        "net/minecraft/server/MinecraftServer#stopServer @RETURN": 1,
        "net/minecraft/server/ServerFunctionManager#executeTagFunctions @HEAD": 1,
        "net/minecraft/server/ServerFunctionManager#executeTagFunctions @RETURN": 1,
        "net/minecraft/server/WorldLoader#load @HEAD": 2,
        "net/minecraft/server/level/ChunkHolder#addSaveDependency @RETURN": 1,
        "net/minecraft/server/level/ChunkHolder#updateFutures @RETURN": 1,
        "net/minecraft/server/level/ChunkMap#processUnloads @RETURN": 1,
        "net/minecraft/server/level/ServerChunkCache#getChunk @HEAD": 1,
        "net/minecraft/server/packs/FilePackResources#close @HEAD": 1,
        "net/minecraft/server/packs/FilePackResources#getNamespaces @HEAD": 1,
        "net/minecraft/server/packs/FilePackResources#listResources @HEAD": 1,
        "net/minecraft/server/packs/PathPackResources#<init> @TAIL": 1,
        "net/minecraft/util/datafix/fixes/BlockStateData#<clinit> @RETURN": 1,
        "net/minecraft/world/entity/ai/attributes/AttributeSupplier#<init> @RETURN": 1,
        "net/minecraft/world/level/chunk/ChunkAccess#<init> @RETURN": 1,
        "net/minecraft/world/level/chunk/ImposterProtoChunk#<init> @RETURN": 1,
        "net/minecraft/world/level/chunk/LevelChunk#replaceWithPacketData @RETURN": 1,
        "net/minecraft/world/level/levelgen/structure/placement/ConcentricRingsStructurePlacement#<init> @RETURN": 1,
        "net/minecraft/world/level/levelgen/structure/placement/ConcentricRingsStructurePlacement#isPlacementChunk @HEAD": 1,
        "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager#<init> @RETURN": 1
      },
      "wanted_calls": {
        "com/mojang/authlib/minecraft/MinecraftProfileTexture#getHash @INVOKE (redirect)": 2,
        "com/mojang/math/Transformation#hashCode @OVERWRITE": 1,
        "com/mojang/text2speech/Narrator#getNarrator @INVOKE (redirect)": 1,
        "com/mojang/text2speech/Narrator#getNarrator @INVOKE (wrap-operation)": 1,
        "java/time/LocalDate#now @INVOKE (redirect)": 1,
        "java/util/List#add @INVOKE (redirect)": 1,
        "java/util/Map#forEach @INVOKE (redirect)": 1,
        "java/util/concurrent/CompletableFuture#supplyAsync @INVOKE (modify-arg)": 1,
        "java/util/concurrent/CompletableFuture#supplyAsync @INVOKE (redirect)": 1,
        "java/util/concurrent/CompletableFuture#thenCompose @INVOKE (modify-arg)": 3,
        "java/util/concurrent/ForkJoinPool#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/CrashReport#addCategory @INVOKE": 1,
        "net/minecraft/client/Minecraft#createUserApiService @OVERWRITE": 1,
        "net/minecraft/client/Minecraft#disconnect @FIELD": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntries#<clinit> @STORE (modify-variable)": 1,
        "net/minecraft/client/gui/font/providers/UnihexProvider$ByteContents#read @NEW": 1,
        "net/minecraft/client/gui/font/providers/UnihexProvider$ShortContents#read @NEW": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#createLevelFromExistingSettings @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry#* @INVOKE": 1,
        "net/minecraft/client/model/geom/builders/CubeDefinition#bake @NEW (wrap-operation)": 1,
        "net/minecraft/client/multiplayer/ProfileKeyPairManager#create @OVERWRITE": 1,
        "net/minecraft/client/renderer/GameRenderer#render @INVOKE": 2,
        "net/minecraft/client/renderer/chunk/SectionRenderDispatcher#<init>* @HEAD (modify-variable)": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#renderers:Ljava/util/Map; @FIELD (redirect)": 1,
        "net/minecraft/client/resources/language/ClientLanguage#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/client/resources/language/ClientLanguage#appendFrom @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/resources/model/ModelBakery#lambda$bakeModels$0 @HEAD (modify-constant)": 1,
        "net/minecraft/client/resources/model/ModelManager#buildModelGroups @OVERWRITE": 1,
        "net/minecraft/client/resources/model/ModelManager#createBlockStateToModelDispatch @OVERWRITE": 1,
        "net/minecraft/core/BlockPos#betweenClosed @INVOKE (redirect)": 1,
        "net/minecraft/core/Direction$Axis#values @INVOKE (redirect)": 1,
        "net/minecraft/server/Bootstrap#bootStrap @FIELD": 1,
        "net/minecraft/server/MinecraftServer#runServer @INVOKE": 3,
        "net/minecraft/server/ReloadableServerResources#loadResources @INVOKE (modify-arg)": 1,
        "net/minecraft/server/ServerFunctionManager#executeTagFunctions @INVOKE": 2,
        "net/minecraft/server/WorldLoader#load @INVOKE (modify-arg)": 3,
        "net/minecraft/server/packs/resources/ProfiledReloadInstance#<init> @HEAD (modify-variable)": 1,
        "net/minecraft/server/packs/resources/ProfiledReloadInstance#finish @HEAD (modify-variable)": 1,
        "net/minecraft/server/packs/resources/SimpleReloadInstance#create @HEAD (modify-variable)": 1,
        "net/minecraft/tags/TagEntry#elementOrTag @OVERWRITE": 1,
        "net/minecraft/util/ExtraCodecs$TagOrElementLocation#decoratedId @OVERWRITE": 1,
        "net/minecraft/util/Util#backgroundExecutor @INVOKE (redirect)": 3,
        "net/minecraft/util/datafix/DataFixTypes#update @INVOKE": 1,
        "net/minecraft/util/thread/ParallelMapTransform#schedule @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#gameEvent @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/biome/Biome#getTemperature @OVERWRITE": 1,
        "net/minecraft/world/level/biome/Climate$Parameter#* @NEW (redirect)": 1,
        "net/minecraft/world/level/block/Block#boxZ @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/Block#column @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/SupportType#values @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/state/StateDefinition#createMultiPropertyStates @STORE (modify-variable)": 1,
        "net/minecraft/world/level/block/state/properties/Property#<init> @HEAD (modify-variable)": 1,
        "net/minecraft/world/level/block/state/properties/Property#equals @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/ChunkAccess#getAllReferences @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/ChunkGeneratorStructureState#ensureStructuresGenerated @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#read @FIELD": 1,
        "net/minecraft/world/level/chunk/status/ChunkStatusTasks#lambda$full$0 @INVOKE": 1,
        "net/minecraft/world/level/levelgen/NoiseChunk#wrap @OVERWRITE": 1,
        "net/minecraft/world/level/levelgen/SurfaceRules$Context#getBiome @OVERWRITE": 1,
        "net/minecraft/world/level/levelgen/SurfaceRules$Context#updateY @OVERWRITE": 1,
        "net/minecraft/world/level/levelgen/SurfaceRules$SequenceRule#tryApply @OVERWRITE": 1,
        "net/minecraft/world/phys/Vec3#add @INVOKE (modify-arg)": 1,
        "net/minecraft/world/phys/shapes/Shapes#or @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/phys/shapes/Shapes#rotateHorizontal @INVOKE (wrap-operation)": 1,
        "org/slf4j/Logger#error @INVOKE (redirect)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PreLaunchEntrypoint",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 272,
        "features": {
          "screen": 6,
          "renderer": 1,
          "command": 1,
          "events": 1,
          "mixin": 124
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 272,
        "methods": 560,
        "tried": 560,
        "completed": 197,
        "handlers_tried": 3,
        "handlers_completed": 1,
        "missing": {
          "[Lorg/embeddedt/modernfix/annotation/FeatureLevel;#clone()Ljava/lang/Object;": 1,
          "[Lorg/embeddedt/modernfix/render/FastItemRenderType;#clone()Ljava/lang/Object;": 1,
          "com/google/common/base/Stopwatch#createStarted()Lcom/google/common/base/Stopwatch;": 2,
          "com/google/common/cache/Cache#getIfPresent(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/google/common/cache/CacheBuilder#newBuilder()Lcom/google/common/cache/CacheBuilder;": 4,
          "com/google/common/cache/LoadingCache#asMap()Ljava/util/concurrent/ConcurrentMap;": 2,
          "com/google/common/cache/LoadingCache#getIfPresent(Ljava/lang/Object;)Ljava/lang/Object;": 4,
          "com/google/common/cache/LoadingCache#invalidateAll()V": 1,
          "com/google/common/cache/LoadingCache#putAll(Ljava/util/Map;)V": 1,
          "com/google/common/collect/ImmutableList#of(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;": 3,
          "com/google/common/collect/ImmutableMap$Builder#put(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap$Builder;": 2,
          "com/google/common/collect/Maps#transformValues(Ljava/util/Map;Lcom/google/common/base/Function;)Ljava/util/Map;": 1,
          "com/google/common/collect/Multimaps#unmodifiableMultimap(Lcom/google/common/collect/Multimap;)Lcom/google/common/collect/Multimap;": 1,
          "com/llamalad7/mixinextras/sugar/ref/LocalRef#get()Ljava/lang/Object;": 4,
          "com/mojang/authlib/minecraft/UserApiService#OFFLINE": 1,
          "com/mojang/datafixers/util/Pair#of(Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/datafixers/util/Pair;": 1,
          "com/mojang/serialization/Lifecycle#stable()Lcom/mojang/serialization/Lifecycle;": 1,
          "com/mojang/text2speech/Narrator#EMPTY": 1,
          "it/unimi/dsi/fastutil/ints/IntSets#EMPTY_SET": 2,
          "it/unimi/dsi/fastutil/longs/Long2IntOpenHashMap#long2IntEntrySet()Lit/unimi/dsi/fastutil/longs/Long2IntMap$FastEntrySet;": 1,
          "it/unimi/dsi/fastutil/objects/AbstractObject2IntMap#<init>()V": 1,
          "it/unimi/dsi/fastutil/objects/ObjectLists#emptyList()Lit/unimi/dsi/fastutil/objects/ObjectList;": 2,
          "it/unimi/dsi/fastutil/objects/ObjectOpenCustomHashSet#addOrGet(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/ObjectOpenCustomHashSet#clear()V": 1,
          "it/unimi/dsi/fastutil/objects/ObjectSets#emptySet()Lit/unimi/dsi/fastutil/objects/ObjectSet;": 3,
          "it/unimi/dsi/fastutil/objects/Reference2ReferenceOpenHashMap#<init>()V": 1,
          "it/unimi/dsi/fastutil/objects/ReferenceSet#contains(Ljava/lang/Object;)Z": 1,
          "it/unimi/dsi/fastutil/objects/ReferenceSet#size()I": 1,
          "java/io/File#getParentFile()Ljava/io/File;": 1,
          "java/lang/Boolean#toString()Ljava/lang/String;": 2,
          "java/lang/Class#isInstance(Ljava/lang/Object;)Z": 2,
          "java/lang/Runnable#run()V": 1,
          "java/lang/Runtime#getRuntime()Ljava/lang/Runtime;": 1,
          "java/lang/String#intern()Ljava/lang/String;": 1,
          "java/lang/Thread#currentThread()Ljava/lang/Thread;": 15,
          "java/lang/Thread#setPriority(I)V": 1,
          "java/lang/invoke/MethodHandle#invokeExact(Lcom/mojang/datafixers/util/Either;)Ljava/lang/Object;": 2,
          "java/lang/invoke/MethodHandle#invokeExact(Lorg/lwjgl/stb/STBRPRect;)I": 2,
          "java/lang/ref/SoftReference#get()Ljava/lang/Object;": 4,
          "java/lang/ref/WeakReference#get()Ljava/lang/Object;": 2,
          "java/lang/reflect/Field#setAccessible(Z)V": 1,
          "java/nio/ByteBuffer#getShort(I)S": 1,
          "java/nio/file/Path#getFileName()Ljava/nio/file/Path;": 1,
          "java/nio/file/StandardOpenOption#READ": 1,
          "java/time/LocalDate#now()Ljava/time/LocalDate;": 1,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/Arrays#copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;": 1,
          "java/util/Arrays#hashCode([Ljava/lang/Object;)I": 1,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collections#emptyIterator()Ljava/util/Iterator;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 6,
          "java/util/Collections#emptyListIterator()Ljava/util/ListIterator;": 2,
          "java/util/Collections#emptyMap()Ljava/util/Map;": 1,
          "java/util/Collections#emptySet()Ljava/util/Set;": 5,
          "java/util/Collections#unmodifiableList(Ljava/util/List;)Ljava/util/List;": 1,
          "java/util/Collections#unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;": 1,
          "java/util/Collections#unmodifiableSet(Ljava/util/Set;)Ljava/util/Set;": 1,
          "java/util/HashMap#putAll(Ljava/util/Map;)V": 1,
          "java/util/List#of()Ljava/util/List;": 1,
          "java/util/Locale#ROOT": 2,
          "java/util/Map#containsValue(Ljava/lang/Object;)Z": 1,
          "java/util/Map#of()Ljava/util/Map;": 2,
          "java/util/Map#putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Objects#hashCode(Ljava/lang/Object;)I": 2,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "java/util/Set#hashCode()I": 1,
          "java/util/Set#remove(Ljava/lang/Object;)Z": 1,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 1,
          "java/util/concurrent/ConcurrentHashMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "java/util/concurrent/ConcurrentHashMap#put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "java/util/concurrent/ExecutorService#awaitTermination(JLjava/util/concurrent/TimeUnit;)Z": 1,
          "java/util/concurrent/ExecutorService#execute(Ljava/lang/Runnable;)V": 1,
          "java/util/concurrent/ExecutorService#isShutdown()Z": 1,
          "java/util/concurrent/ExecutorService#isTerminated()Z": 1,
          "java/util/concurrent/ExecutorService#shutdown()V": 1,
          "java/util/concurrent/ExecutorService#shutdownNow()Ljava/util/List;": 1,
          "java/util/concurrent/TimeUnit#DAYS": 2,
          "java/util/concurrent/atomic/AtomicLong#get()J": 1,
          "java/util/concurrent/atomic/AtomicLong#set(J)V": 1,
          "java/util/concurrent/locks/Lock#lock()V": 1,
          "java/util/concurrent/locks/Lock#unlock()V": 1,
          "java/util/function/BooleanSupplier#getAsBoolean()Z": 1,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 1,
          "java/util/stream/Stream#of([Ljava/lang/Object;)Ljava/util/stream/Stream;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 5,
          "net/minecraft/SharedConstants#getCurrentVersion()Lnet/minecraft/WorldVersion;": 1,
          "net/minecraft/client/gui/Gui#screen()Lnet/minecraft/client/gui/screens/Screen;": 2,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList#getRowWidth()I": 1,
          "net/minecraft/client/gui/font/providers/GlyphProviderDefinition#type()Lnet/minecraft/client/gui/font/providers/GlyphProviderType;": 1,
          "net/minecraft/client/gui/font/providers/GlyphProviderDefinition#unpack()Lcom/mojang/datafixers/util/Either;": 1,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/Screen#init()V": 1,
          "net/minecraft/client/multiplayer/ProfileKeyPairManager#EMPTY_KEY_MANAGER": 1,
          "net/minecraft/client/multiplayer/chat/ChatTrustLevel#SECURE": 1,
          "net/minecraft/client/telemetry/TelemetryEventSender#DISABLED": 1,
          "net/minecraft/core/BlockPos$MutableBlockPos#set(III)Lnet/minecraft/core/BlockPos$MutableBlockPos;": 5,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/resources/Identifier#toString()Ljava/lang/String;": 1,
          "net/minecraft/server/level/ServerLevel#getChunkSource()Lnet/minecraft/server/level/ServerChunkCache;": 4,
          "net/minecraft/server/level/ServerLevel#getHeight()I": 1,
          "net/minecraft/server/level/ServerLevel#getMaxY()I": 1,
          "net/minecraft/server/level/ServerLevel#getMinY()I": 1,
          "net/minecraft/server/packs/PackType#CLIENT_RESOURCES": 1,
          "net/minecraft/server/packs/resources/PreparableReloadListener#getName()Ljava/lang/String;": 1,
          "net/minecraft/server/packs/resources/PreparableReloadListener#prepareSharedState(Lnet/minecraft/server/packs/resources/PreparableReloadListener$SharedState;)V": 1,
          "net/minecraft/server/packs/resources/PreparableReloadListener#reload(Lnet/minecraft/server/packs/resources/PreparableReloadListener$SharedState;Ljava/util/concurrent/Executor;Lnet/minecraft/server/packs/resources/PreparableReloadListener$PreparationBarrier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;": 1,
          "net/minecraft/util/Util#getMillis()J": 1,
          "net/minecraft/world/level/block/Block#BLOCK_STATE_REGISTRY": 5,
          "net/minecraft/world/level/chunk/LevelChunk#getSections()[Lnet/minecraft/world/level/chunk/LevelChunkSection;": 1,
          "net/minecraft/world/level/chunk/status/WorldGenContext#level()Lnet/minecraft/server/level/ServerLevel;": 1,
          "net/minecraft/world/level/storage/LevelDataAndDimensions$WorldDataAndGenSettings#data()Lnet/minecraft/world/level/storage/WorldData;": 1,
          "new it/unimi/dsi/fastutil/objects/Object2ObjectOpenHashMap": 6,
          "new it/unimi/dsi/fastutil/objects/ObjectOpenHashSet": 2,
          "new net/minecraft/client/resources/model/ModelDiscovery": 1,
          "new net/minecraft/util/ExtraCodecs$TagOrElementLocation": 1,
          "new net/minecraft/world/level/biome/Climate$Parameter": 1,
          "new org/joml/Vector3d": 1,
          "org/apache/commons/lang3/tuple/Pair#getLeft()Ljava/lang/Object;": 2,
          "org/embeddedt/modernfix/annotation/FeatureLevel#ordinal()I": 1,
          "org/embeddedt/modernfix/common/mixin/perf/release_protochunks/ChunkHolderMixin#LOWEST_DROPPABLE_TICKET_LEVEL": 2,
          "org/embeddedt/modernfix/screen/OptionList#children()Ljava/util/List;": 1,
          "org/embeddedt/modernfix/util/ForwardingInclDefaultsMap#delegate()Ljava/util/Map;": 11,
          "org/embeddedt/modernfix/util/LRUMap#getAndMoveToLast(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "org/embeddedt/modernfix/util/LRUMap#putAndMoveToLast(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "org/embeddedt/modernfix/world/StrongholdLocationCache#setDirty()V": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#getReturnValue()Ljava/lang/Object;": 2,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#setReturnValue(Ljava/lang/Object;)V": 1
        },
        "runs": [
          {
            "class": "org/embeddedt/modernfix/util/SingleThreadedWorkerService",
            "method": "isForcedAsyncCommand",
            "desc": "(Ljava/lang/Runnable;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/DynamicRegistryMap$EntrySet$1",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/core/config/Option",
            "method": "getDepth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/core/config/Option",
            "method": "isEffectivelyDisabledByParent",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/core/config/Option",
            "method": "isOverridden",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/core/config/Option",
            "method": "isUserDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/core/config/Option",
            "method": "isModDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/common/mixin/perf/state_definition_construct/StateDefinitionMixin",
            "method": "useArrayMap",
            "desc": "(Ljava/util/Map;)Ljava/util/Map;",
            "value": "obj#72"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyServerConfiguration",
            "method": "wasModded",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyServerConfiguration",
            "method": "isHardcore",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyServerConfiguration",
            "method": "getVersion",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyServerConfiguration",
            "method": "isAllowCommands",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyServerConfiguration",
            "method": "isDifficultyLocked",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyServerConfiguration",
            "method": "isFlatWorld",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyServerConfiguration",
            "method": "isDebugWorld",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/LayeredForwardingMap",
            "method": "size",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/render/font/CompactUnihexContents$Shorts",
            "method": "line",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/render/font/CompactUnihexContents$Shorts",
            "method": "bitWidth",
            "desc": "()I",
            "value": "16"
          },
          {
            "class": "org/embeddedt/modernfix/screen/OptionList$CategoryEntry",
            "method": "changeFocus",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/resources/CachedResourcePath",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/screen/ModernFixDebugScreen$ModernFixDebugEntry",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/util/DynamicMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DynamicMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DynamicMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/util/DynamicMap",
            "method": "containsValue",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/util/blockpos/SectionBlockPosIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/util/DirectExecutorService",
            "method": "isShutdown",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DirectExecutorService",
            "method": "isTerminated",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DirectExecutorService",
            "method": "awaitTermination",
            "desc": "(JLjava/util/concurrent/TimeUnit;)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/world/StrongholdLocationCache",
            "method": "getChunkPosList",
            "desc": "()Ljava/util/List;",
            "value": "obj#220"
          },
          {
            "class": "org/embeddedt/modernfix/core/config/ModernFixEarlyConfig",
            "method": "getOptionCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/spark/SparkLaunchProfiler$ModernFixCommandSender",
            "method": "hasPermission",
            "desc": "(Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/DynamicRegistryMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/DynamicRegistryMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/DynamicRegistryMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/DynamicRegistryMap",
            "method": "containsValue",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/common/mixin/bugfix/paper_chunk_patches/SortedArraySetMixin",
            "method": "removeIf",
            "desc": "(Ljava/util/function/Predicate;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/core/config/OptionType",
            "method": "createEnumType",
            "desc": "(Ljava/lang/Class;)Lorg/embeddedt/modernfix/core/config/OptionType;",
            "value": "obj#318"
          },
          {
            "class": "org/embeddedt/modernfix/common/mixin/perf/model_optimizations/PropertyMixin",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/render/font/CompactUnihexContents",
            "method": "extractByte",
            "desc": "(JI)B",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/render/font/CompactUnihexContents",
            "method": "extractShort",
            "desc": "(JI)S",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DynamicInt2ObjectMap",
            "method": "containsKey",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/util/LambdaMap",
            "method": "size",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/util/LambdaMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/LambdaMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/util/LambdaMap",
            "method": "containsValue",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/BlockStateModelMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/BlockStateModelMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/core/config/OptionType$2",
            "method": "serialize",
            "desc": "(Ljava/lang/Enum;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "org/embeddedt/modernfix/core/config/OptionType$2",
            "method": "serialize",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/DynamicModelSystem$BlockGroupingMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/DynamicModelSystem$BlockGroupingMap",
            "method": "getInt",
            "desc": "(Ljava/lang/Object;)I",
            "value": "-1"
          },
          {
            "class": "org/embeddedt/modernfix/blockstate/FakeStateMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/blockstate/FakeStateMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/blockstate/FakeStateMap",
            "method": "keySet",
            "desc": "()Ljava/util/Set;",
            "value": "obj#448"
          },
          {
            "class": "org/embeddedt/modernfix/blockstate/FakeStateMap",
            "method": "entrySet",
            "desc": "()Ljava/util/Set;",
            "value": "obj#451"
          },
          {
            "class": "org/embeddedt/modernfix/entity/EntityRendererMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/entity/EntityRendererMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/entity/EntityRendererMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/entity/EntityRendererMap",
            "method": "containsValue",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/fabric/api/dynresources/ModelScanController",
            "method": "shouldScanAndTestWrapping",
            "desc": "(Lnet/minecraft/resources/Identifier;)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/common/mixin/feature/measure_time/SimpleReloadInstanceMixin",
            "method": "enableDebugReloader",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/render/font/CompactUnihexContents$Bytes",
            "method": "line",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/render/font/CompactUnihexContents$Bytes",
            "method": "bitWidth",
            "desc": "()I",
            "value": "8"
          },
          {
            "class": "org/embeddedt/modernfix/dedup/DeduplicationCache$1",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/platform/fabric/ModernFixPlatformHooksImpl",
            "method": "isEarlyLoadingNormally",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/platform/fabric/ModernFixPlatformHooksImpl",
            "method": "isLoadingNormally",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/common/mixin/bugfix/restore_old_dragon_movement/EnderDragonMixin",
            "method": "fixVerticalVelocityScale",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/blockstate/FakeStateMap$2",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#511"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "contains",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "toArray",
            "desc": "()[Ljava/lang/Object;",
            "value": "obj#545"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "add",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "remove",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "containsAll",
            "desc": "(Ljava/util/Collection;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "addAll",
            "desc": "(Ljava/util/Collection;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "addAll",
            "desc": "(ILjava/util/Collection;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "removeAll",
            "desc": "(Ljava/util/Collection;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "retainAll",
            "desc": "(Ljava/util/Collection;)Z",
            "value": "0"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "indexOf",
            "desc": "(Ljava/lang/Object;)I",
            "value": "-1"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "lastIndexOf",
            "desc": "(Ljava/lang/Object;)I",
            "value": "-1"
          },
          {
            "class": "org/embeddedt/modernfix/util/DummyList",
            "method": "subList",
            "desc": "(II)Ljava/util/List;",
            "value": "obj#564"
          },
          {
            "class": "org/embeddedt/modernfix/dynresources/DisjointSetUnion",
            "method": "size",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 3559
      },
      "verdict": "no",
      "summary": "only 3 of 53 listening patch sites have a hook (5%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "modmenu",
      "name": "Mod Menu",
      "version": "21.0.0",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/terraformersmc/modmenu/ModMenu"
        },
        {
          "kind": "modmenu",
          "value": "com/terraformersmc/modmenu/ModMenuModMenuCompat"
        }
      ],
      "mixin_configs": [
        "mixins.modmenu.json"
      ],
      "depends": [],
      "classes": 71,
      "methods": 504,
      "sites": [
        {
          "mixin": "com/terraformersmc/modmenu/mixin/MixinPauseScreen",
          "targets": [
            "net/minecraft/client/gui/screens/PauseScreen"
          ],
          "handler": "insertModMenuFullButton",
          "kind": "inject",
          "method": "createPauseMenu",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/layouts/GridLayout$RowHelper;addChild(Lnet/minecraft/client/gui/layouts/LayoutElement;ILnet/minecraft/client/gui/layouts/LayoutSettings;)Lnet/minecraft/client/gui/layouts/LayoutElement;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/PauseScreen#createPauseMenu INVOKE"
        },
        {
          "mixin": "com/terraformersmc/modmenu/mixin/MixinTitleScreen",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "adjustRealmsHeight",
          "kind": "modify-arg",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/realmsclient/gui/screens/RealmsNotificationsScreen;init(II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/terraformersmc/modmenu/mixin/MixinTitleScreen",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "replaceInlinedConstant",
          "kind": "wrap-operation",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/TitleScreen;getHorizontalPosition(III)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/terraformersmc/modmenu/mixin/MixinTitleScreen",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "modifyModdedVersionString",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/resources/language/I18n;get(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen#init @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/screens/PauseScreen#createPauseMenu @INVOKE": 1,
        "net/minecraft/client/gui/screens/TitleScreen#getHorizontalPosition @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/resources/language/I18n#get @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 8
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 7
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 7
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ContactInformation",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModOrigin",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModOrigin$Kind",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Screens",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CustomValue$CvArray",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModEnvironment",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Person",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SemanticVersion",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "VersionParsingException",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 71,
        "features": {
          "screen": 15,
          "events": 1,
          "mixin": 2
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 71,
        "methods": 269,
        "tried": 269,
        "completed": 118,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/terraformersmc/modmenu/api/UpdateChannel;#clone()Ljava/lang/Object;": 1,
          "[Lcom/terraformersmc/modmenu/config/ModMenuConfig$GameMenuButtonStyle;#clone()Ljava/lang/Object;": 1,
          "[Lcom/terraformersmc/modmenu/config/ModMenuConfig$LibraryVisibility;#clone()Ljava/lang/Object;": 1,
          "[Lcom/terraformersmc/modmenu/config/ModMenuConfig$ModCountLocation;#clone()Ljava/lang/Object;": 1,
          "[Lcom/terraformersmc/modmenu/config/ModMenuConfig$Sorting;#clone()Ljava/lang/Object;": 1,
          "[Lcom/terraformersmc/modmenu/config/ModMenuConfig$TitleMenuButtonStyle;#clone()Ljava/lang/Object;": 1,
          "[Lcom/terraformersmc/modmenu/util/mod/Mod$Badge;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/ListMultimap#get(Ljava/lang/Object;)Ljava/util/List;": 1,
          "com/google/gson/JsonNull#INSTANCE": 2,
          "com/google/gson/JsonObject#has(Ljava/lang/String;)Z": 2,
          "com/terraformersmc/modmenu/config/ModMenuConfig$LibraryVisibility#ordinal()I": 1,
          "com/terraformersmc/modmenu/gui/ModsScreen#getFocused()Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "com/terraformersmc/modmenu/gui/widget/DescriptionListWidget#clearEntries()V": 1,
          "com/terraformersmc/modmenu/gui/widget/DescriptionListWidget#enableScissor(Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V": 1,
          "com/terraformersmc/modmenu/gui/widget/ModListWidget#children()Ljava/util/List;": 5,
          "com/terraformersmc/modmenu/gui/widget/ModListWidget#getSelected()Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;": 1,
          "com/terraformersmc/modmenu/gui/widget/ModListWidget#getX()I": 3,
          "com/terraformersmc/modmenu/gui/widget/ModListWidget#getY()I": 2,
          "com/terraformersmc/modmenu/gui/widget/entries/ModListEntry#setX(I)V": 1,
          "java/lang/Class#getEnumConstants()[Ljava/lang/Object;": 4,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 2,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/Locale#ROOT": 1,
          "java/util/Map#of()Ljava/util/Map;": 3,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 1,
          "net/fabricmc/loader/api/ModContainer#getContainingMod()Ljava/util/Optional;": 1,
          "net/fabricmc/loader/api/Version#compareTo(Ljava/lang/Object;)I": 1,
          "net/fabricmc/loader/api/metadata/CustomValue$CvObject#containsKey(Ljava/lang/String;)Z": 5,
          "net/fabricmc/loader/api/metadata/ModMetadata#containsCustomValue(Ljava/lang/String;)Z": 3,
          "net/fabricmc/loader/api/metadata/ModMetadata#getAuthors()Ljava/util/Collection;": 1,
          "net/fabricmc/loader/api/metadata/ModMetadata#getDescription()Ljava/lang/String;": 1,
          "net/fabricmc/loader/api/metadata/ModMetadata#getId()Ljava/lang/String;": 1,
          "net/fabricmc/loader/api/metadata/ModMetadata#getName()Ljava/lang/String;": 1,
          "net/minecraft/client/KeyMapping#consumeClick()Z": 1,
          "net/minecraft/client/gui/components/Button$Plain#extractContents(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList$Entry#isMouseOver(DD)Z": 1,
          "net/minecraft/client/gui/components/EditBox#charTyped(Lnet/minecraft/client/input/CharacterEvent;)Z": 1,
          "net/minecraft/client/gui/components/EditBox#getValue()Ljava/lang/String;": 1,
          "net/minecraft/client/gui/components/ObjectSelectionList#contentHeight()I": 1,
          "net/minecraft/client/gui/components/ObjectSelectionList#setScrollAmount(D)V": 1,
          "net/minecraft/client/gui/components/ObjectSelectionList#setSelected(Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;)V": 5,
          "net/minecraft/client/gui/components/SpriteIconButton$CenteredIcon#extractContents(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/Screen#<init>(Lnet/minecraft/network/chat/Component;)V": 1,
          "net/minecraft/client/gui/screens/Screen#keyPressed(Lnet/minecraft/client/input/KeyEvent;)Z": 1,
          "net/minecraft/client/input/KeyEvent#isLeft()Z": 1,
          "net/minecraft/client/input/KeyEvent#isUp()Z": 1,
          "net/minecraft/client/input/MouseButtonEvent#x()D": 3,
          "net/minecraft/client/renderer/RenderPipelines#GUI_TEXTURED": 1,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 3,
          "new net/minecraft/client/OptionInstance": 1,
          "org/quiltmc/loader/api/ModMetadata#contributors()Ljava/util/Collection;": 2,
          "org/quiltmc/loader/api/Version$Semantic#compareTo(Lorg/quiltmc/loader/api/Version$Semantic;)I": 1,
          "org/quiltmc/loader/api/Version$Semantic#preRelease()Ljava/lang/String;": 1
        },
        "runs": [
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricLoaderUpdateChecker$FabricLoaderUpdateInfo",
            "method": "isUpdateAvailable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricLoaderUpdateChecker$FabricLoaderUpdateInfo",
            "method": "getUpdateChannel",
            "desc": "()Lcom/terraformersmc/modmenu/api/UpdateChannel;",
            "value": "obj#1"
          },
          {
            "class": "com/terraformersmc/modmenu/gui/widget/DescriptionListWidget$DescriptionEntry",
            "method": "setUpdateTextEntry",
            "desc": "()Lcom/terraformersmc/modmenu/gui/widget/DescriptionListWidget$DescriptionEntry;",
            "value": "obj#26"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/ModSearch",
            "method": "validSearchQuery",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/util/OptionalUtil",
            "method": "isPresentAndTrue",
            "desc": "(Ljava/util/Optional;)Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/quilt/QuiltLoaderUpdateChecker$QuiltLoaderUpdateInfo",
            "method": "isUpdateAvailable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/Mod$Badge",
            "method": "getOutlineColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/Mod$Badge",
            "method": "getFillColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/util/UpdateCheckerUtil$VersionUpdate",
            "method": "asUpdateInfo",
            "desc": "()Lcom/terraformersmc/modmenu/api/UpdateInfo;",
            "value": "obj#95"
          },
          {
            "class": "com/terraformersmc/modmenu/event/ModMenuEventHandler",
            "method": "buttonHasText",
            "desc": "(Lnet/minecraft/client/gui/layouts/LayoutElement;[Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/gui/widget/entries/ChildEntry",
            "method": "getXOffset",
            "desc": "()I",
            "value": "13"
          },
          {
            "class": "com/terraformersmc/modmenu/gui/widget/entries/ModListEntry",
            "method": "getXOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/gui/widget/entries/ModListEntry",
            "method": "getYOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricMod",
            "method": "isReal",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricMod",
            "method": "getChildHasUpdate",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/ModrinthUpdateInfo",
            "method": "isUpdateAvailable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricDummyParentMod",
            "method": "getAuthors",
            "desc": "()Ljava/util/List;",
            "value": "obj#177"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricDummyParentMod",
            "method": "getCredits",
            "desc": "()Ljava/util/SortedMap;",
            "value": "obj#182"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricDummyParentMod",
            "method": "getLicense",
            "desc": "()Ljava/util/Set;",
            "value": "obj#188"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricDummyParentMod",
            "method": "getLinks",
            "desc": "()Ljava/util/Map;",
            "value": "obj#190"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricDummyParentMod",
            "method": "isReal",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricDummyParentMod",
            "method": "allowsUpdateChecks",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/util/mod/fabric/FabricDummyParentMod",
            "method": "getChildHasUpdate",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/config/option/BooleanConfigOption",
            "method": "getDefaultValue",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/config/ModMenuConfig$LibraryVisibility",
            "method": "isTrue",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/config/option/ConfigOptionStorage",
            "method": "getBoolean",
            "desc": "(Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "com/terraformersmc/modmenu/api/ModMenuApi",
            "method": "getModConfigScreenFactory",
            "desc": "()Lcom/terraformersmc/modmenu/api/ConfigScreenFactory;",
            "value": "obj#218"
          },
          {
            "class": "com/terraformersmc/modmenu/config/ModMenuConfig$ModCountLocation",
            "method": "isOnTitleScreen",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/terraformersmc/modmenu/config/ModMenuConfig$ModCountLocation",
            "method": "isOnModsButton",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 1483
      },
      "verdict": "no",
      "summary": "none of its 4 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "morechathistory",
      "name": "More Chat History",
      "version": "2.0.0",
      "license": "CC0-1.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [],
      "mixin_configs": [
        "morechathistory.client.mixins.json"
      ],
      "depends": [],
      "classes": 1,
      "methods": 3,
      "sites": [
        {
          "mixin": "red/jackf/morechathistory/mixins/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "expandQueue",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "NEW",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/gui/components/ChatComponent#<init> @NEW (wrap-operation)": 1
      },
      "api": [],
      "code": {
        "classes": 1,
        "features": {
          "mixin": 1
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 1,
        "methods": 2,
        "tried": 2,
        "completed": 1,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 1
        },
        "runs": [
          {
            "class": "red/jackf/morechathistory/mixins/ChatComponentMixin",
            "method": "increaseMaxHistory",
            "desc": "(I)I",
            "value": "16384"
          }
        ],
        "insns": 17
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "mousetweaks",
      "name": "Mouse Tweaks",
      "version": "2.31",
      "license": "BSD-3-Clause",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "yalter/mousetweaks/fabric/MouseTweaksFabric"
        },
        {
          "kind": "modmenu",
          "value": "yalter/mousetweaks/ModMenuApiImpl"
        }
      ],
      "mixin_configs": [
        "mousetweaks.mixins.json"
      ],
      "depends": [],
      "classes": 22,
      "methods": 120,
      "sites": [],
      "listening": 0,
      "accessors": 8,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$BeforeInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents$AfterMouseScroll",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents$AllowMouseClick",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents$AllowMouseDrag",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents$AllowMouseRelease",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 22,
        "features": {
          "screen": 1,
          "events": 1,
          "mixin": 1
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 22,
        "methods": 53,
        "tried": 53,
        "completed": 20,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lyalter/mousetweaks/MouseButton;#clone()Ljava/lang/Object;": 1,
          "[Lyalter/mousetweaks/ScrollHandling;#clone()Ljava/lang/Object;": 1,
          "[Lyalter/mousetweaks/ScrollItemScaling;#clone()Ljava/lang/Object;": 1,
          "[Lyalter/mousetweaks/WheelScrollDirection;#clone()Ljava/lang/Object;": 1,
          "[Lyalter/mousetweaks/WheelSearchOrder;#clone()Ljava/lang/Object;": 1,
          "java/lang/System#out": 1,
          "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#getMenu()Lnet/minecraft/world/inventory/AbstractContainerMenu;": 1,
          "net/minecraft/world/inventory/Slot#getItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 1,
          "yalter/mousetweaks/ScrollItemScaling#ordinal()I": 1
        },
        "runs": [
          {
            "class": "yalter/mousetweaks/WheelScrollDirection",
            "method": "getValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/WheelScrollDirection",
            "method": "fromId",
            "desc": "(I)Lyalter/mousetweaks/WheelScrollDirection;",
            "value": "obj#9"
          },
          {
            "class": "yalter/mousetweaks/WheelScrollDirection",
            "method": "isInverted",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/WheelScrollDirection",
            "method": "isPositionAware",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/MouseButton",
            "method": "getValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/WheelSearchOrder",
            "method": "getValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/WheelSearchOrder",
            "method": "fromId",
            "desc": "(I)Lyalter/mousetweaks/WheelSearchOrder;",
            "value": "obj#24"
          },
          {
            "class": "yalter/mousetweaks/handlers/GuiContainerHandler",
            "method": "isCraftingOutput",
            "desc": "(Lnet/minecraft/world/inventory/Slot;)Z",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/handlers/GuiContainerHandler",
            "method": "isIgnored",
            "desc": "(Lnet/minecraft/world/inventory/Slot;)Z",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/Config",
            "method": "parseIntOrDefault",
            "desc": "(Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/ScrollItemScaling",
            "method": "getValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/ScrollItemScaling",
            "method": "fromId",
            "desc": "(I)Lyalter/mousetweaks/ScrollItemScaling;",
            "value": "obj#37"
          },
          {
            "class": "yalter/mousetweaks/ScrollHandling",
            "method": "getValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "yalter/mousetweaks/ScrollHandling",
            "method": "fromId",
            "desc": "(I)Lyalter/mousetweaks/ScrollHandling;",
            "value": "obj#42"
          }
        ],
        "insns": 455
      },
      "verdict": "no",
      "summary": "no patch sites and no content: nothing to convert"
    },
    {
      "mod_id": "naturescompass",
      "name": "Nature's Compass",
      "version": "26.3-2.5.1-fabric",
      "license": "CC BY-NC-SA 4.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/chaosthedude/naturescompass/NaturesCompassClient"
        },
        {
          "kind": "main",
          "value": "com/chaosthedude/naturescompass/NaturesCompass"
        }
      ],
      "mixin_configs": [
        "naturescompass.mixins.json"
      ],
      "depends": [],
      "classes": 39,
      "methods": 270,
      "sites": [
        {
          "mixin": "com/chaosthedude/naturescompass/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "renderCompassInfo",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "com/chaosthedude/naturescompass/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "startTick",
          "kind": "inject",
          "method": "tickServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "server_tick",
          "why": "ServerTickEvent.Pre/Post"
        },
        {
          "mixin": "com/chaosthedude/naturescompass/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "endTick",
          "kind": "inject",
          "method": "tickServer",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#tickServer TAIL"
        },
        {
          "mixin": "com/chaosthedude/naturescompass/mixin/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "onShutdown",
          "kind": "inject",
          "method": "stopServer",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/MinecraftServer#stopServer TAIL"
        },
        {
          "mixin": "com/chaosthedude/naturescompass/mixin/RangeSelectItemModelPropertiesMixin",
          "targets": [
            "net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties"
          ],
          "handler": "registerCompassProperty",
          "kind": "inject",
          "method": "bootstrap",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties#bootstrap TAIL"
        }
      ],
      "listening": 5,
      "accessors": 0,
      "hooks": {
        "hud": 1,
        "server_tick": 1
      },
      "wanted": {
        "net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties#bootstrap @TAIL": 1,
        "net/minecraft/server/MinecraftServer#stopServer @TAIL": 1,
        "net/minecraft/server/MinecraftServer#tickServer @TAIL": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 5
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 4
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents$ModifyOutput",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricCreativeModeTabOutput",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        }
      ],
      "code": {
        "classes": 39,
        "features": {
          "item-behaviour": 1,
          "screen": 5,
          "renderer": 1,
          "network": 4,
          "events": 1,
          "mixin": 3
        },
        "events": [
          "Event"
        ],
        "examples": {
          "NaturesCompassItem": [
            "allowComponentsUpdateAnimation",
            "clearSearchData",
            "damageCompass",
            "fail",
            "getCompassState",
            "isBarVisible",
            "isBroken",
            "search",
            "searchForBiome",
            "searchForNextBiome",
            "setCompassState",
            "succeed",
            "use"
          ]
        }
      },
      "interp": {
        "classes": 39,
        "methods": 167,
        "tried": 167,
        "completed": 50,
        "handlers_tried": 2,
        "handlers_completed": 1,
        "missing": {
          "[Lcom/chaosthedude/naturescompass/util/CompassState;#clone()Ljava/lang/Object;": 2,
          "[Lcom/chaosthedude/naturescompass/util/OverlaySide;#clone()Ljava/lang/Object;": 1,
          "com/chaosthedude/naturescompass/gui/BiomeSearchList#clearEntries()V": 2,
          "com/chaosthedude/naturescompass/gui/BiomeSearchList#enableScissor(Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V": 1,
          "com/chaosthedude/naturescompass/gui/BiomeSearchList#getItemCount()I": 1,
          "com/chaosthedude/naturescompass/gui/BiomeSearchList#getRowLeft()I": 1,
          "com/chaosthedude/naturescompass/gui/BiomeSearchList#getSelected()Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;": 2,
          "com/chaosthedude/naturescompass/gui/BiomeSearchList#getWidth()I": 1,
          "com/chaosthedude/naturescompass/gui/BiomeSearchList#scrollable()Z": 1,
          "com/chaosthedude/naturescompass/gui/TransparentEditBox#getWidth()I": 1,
          "com/chaosthedude/naturescompass/gui/TransparentEditBox#isVisible()Z": 1,
          "com/chaosthedude/naturescompass/util/NaturesCompassAngleState#get(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/world/entity/ItemOwner;I)F": 1,
          "com/google/common/collect/ArrayListMultimap#create()Lcom/google/common/collect/ArrayListMultimap;": 1,
          "java/util/Collections#sort(Ljava/util/List;Ljava/util/Comparator;)V": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayNetworking#send(Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload;)V": 2,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayNetworking$Context#client()Lnet/minecraft/client/Minecraft;": 1,
          "net/fabricmc/fabric/api/networking/v1/ServerPlayNetworking$Context#server()Lnet/minecraft/server/MinecraftServer;": 3,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/components/ObjectSelectionList#setSelected(Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;)V": 2,
          "net/minecraft/client/gui/screens/Screen#charTyped(Lnet/minecraft/client/input/CharacterEvent;)Z": 1,
          "net/minecraft/client/gui/screens/Screen#keyPressed(Lnet/minecraft/client/input/KeyEvent;)Z": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getRespawnData()Lnet/minecraft/world/level/storage/LevelData$RespawnData;": 1,
          "net/minecraft/client/renderer/item/properties/numeric/NeedleDirectionHelper$Wobbler#shouldUpdate(J)Z": 1,
          "net/minecraft/core/Direction#UP": 1,
          "net/minecraft/network/FriendlyByteBuf#readBoolean()Z": 1,
          "net/minecraft/network/FriendlyByteBuf#readIdentifier()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/network/FriendlyByteBuf#writeBoolean(Z)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/network/FriendlyByteBuf#writeIdentifier(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/world/entity/Entity#getVisualRotationYInDegrees()F": 1,
          "net/minecraft/world/entity/player/Player#blockPosition()Lnet/minecraft/core/BlockPos;": 2,
          "net/minecraft/world/entity/player/Player#getMainHandItem()Lnet/minecraft/world/item/ItemStack;": 2,
          "net/minecraft/world/entity/player/Player#hasInfiniteMaterials()Z": 1,
          "net/minecraft/world/entity/player/Player#isCrouching()Z": 1,
          "net/minecraft/world/item/ItemStack#getOrDefault(Lnet/minecraft/core/component/DataComponentType;Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "net/minecraft/world/item/ItemStack#has(Lnet/minecraft/core/component/DataComponentType;)Z": 2,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 2,
          "net/minecraft/world/item/ItemStack#remove(Lnet/minecraft/core/component/DataComponentType;)Ljava/lang/Object;": 3,
          "net/minecraft/world/level/Level#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 2,
          "net/minecraft/world/level/Level#getSeaLevel()I": 1,
          "net/minecraft/world/level/Level#registryAccess()Lnet/minecraft/core/RegistryAccess;": 6,
          "net/minecraft/world/phys/Vec3#atCenterOf(Lnet/minecraft/core/Vec3i;)Lnet/minecraft/world/phys/Vec3;": 2,
          "new net/minecraft/core/BlockPos": 4
        },
        "runs": [
          {
            "class": "com/chaosthedude/naturescompass/network/TeleportPacket",
            "method": "read",
            "desc": "(Lnet/minecraft/network/FriendlyByteBuf;)Lcom/chaosthedude/naturescompass/network/TeleportPacket;",
            "value": "obj#13"
          },
          {
            "class": "com/chaosthedude/naturescompass/util/RenderUtils",
            "method": "getBackgroundColor",
            "desc": "(ZZ)I",
            "value": "721420288"
          },
          {
            "class": "com/chaosthedude/naturescompass/sorting/XpLevelsSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/naturescompass/sorting/ISorting;",
            "value": "obj#22"
          },
          {
            "class": "com/chaosthedude/naturescompass/util/CompassState",
            "method": "getID",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/sorting/TagsSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/naturescompass/sorting/ISorting;",
            "value": "obj#37"
          },
          {
            "class": "com/chaosthedude/naturescompass/item/NaturesCompassItem",
            "method": "isBarVisible",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/item/NaturesCompassItem",
            "method": "getBarWidth",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)I",
            "value": "13"
          },
          {
            "class": "com/chaosthedude/naturescompass/item/NaturesCompassItem",
            "method": "isBroken",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/util/OverlaySide",
            "method": "fromString",
            "desc": "(Ljava/lang/String;)Lcom/chaosthedude/naturescompass/util/OverlaySide;",
            "value": "obj#58"
          },
          {
            "class": "com/chaosthedude/naturescompass/worker/BiomeSearchWorker",
            "method": "hasWork",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/sorting/DimensionSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/naturescompass/sorting/ISorting;",
            "value": "obj#72"
          },
          {
            "class": "com/chaosthedude/naturescompass/sorting/NameSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/naturescompass/sorting/ISorting;",
            "value": "obj#77"
          },
          {
            "class": "com/chaosthedude/naturescompass/util/NaturesCompassAngleState",
            "method": "isValidCompassTargetPos",
            "desc": "(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/GlobalPos;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/util/NaturesCompassAngleState",
            "method": "hash",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/network/SearchForNextPacket",
            "method": "read",
            "desc": "(Lnet/minecraft/network/FriendlyByteBuf;)Lcom/chaosthedude/naturescompass/network/SearchForNextPacket;",
            "value": "obj#83"
          },
          {
            "class": "com/chaosthedude/naturescompass/sorting/RainfallSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/naturescompass/sorting/ISorting;",
            "value": "obj#101"
          },
          {
            "class": "com/chaosthedude/naturescompass/sorting/SourceSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/naturescompass/sorting/ISorting;",
            "value": "obj#107"
          },
          {
            "class": "com/chaosthedude/naturescompass/util/BiomeUtils",
            "method": "getBiomeSize",
            "desc": "(Lnet/minecraft/world/level/Level;)I",
            "value": "4"
          },
          {
            "class": "com/chaosthedude/naturescompass/sorting/TemperatureSorting",
            "method": "next",
            "desc": "()Lcom/chaosthedude/naturescompass/sorting/ISorting;",
            "value": "obj#119"
          },
          {
            "class": "com/chaosthedude/naturescompass/util/PlayerUtils",
            "method": "canTeleport",
            "desc": "(Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/util/PlayerUtils",
            "method": "cheatModeEnabled",
            "desc": "(Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/util/PlayerUtils",
            "method": "isOp",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/network/SyncPacket",
            "method": "canTeleport",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/network/SyncPacket",
            "method": "maxNextSearches",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/chaosthedude/naturescompass/network/SyncPacket",
            "method": "infiniteXp",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 1186
      },
      "verdict": "partly",
      "summary": "2 of 5 listening patch sites land on a Horizon hook (40%); of 5 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "netherportalfix",
      "name": "NetherPortalFix",
      "version": "26.3.0.1",
      "license": "All Rights Reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "net/blay09/mods/netherportalfix/fabric/FabricNetherPortalFix"
        }
      ],
      "mixin_configs": [
        "netherportalfix.mixins.json",
        "netherportalfix.fabric.mixins.json"
      ],
      "depends": [
        "balm-fabric"
      ],
      "classes": 10,
      "methods": 20,
      "sites": [],
      "listening": 0,
      "accessors": 1,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 10,
        "features": {
          "mixin": 2
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 10,
        "methods": 6,
        "tried": 6,
        "completed": 2,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "net/minecraft/world/entity/player/Player#level()Lnet/minecraft/world/level/Level;": 1
        },
        "runs": [],
        "insns": 15
      },
      "verdict": "works",
      "summary": "no patch sites: its content is carried over as a content mod"
    },
    {
      "mod_id": "nochatreports",
      "name": "No Chat Reports",
      "version": "26.3-v2.21.0",
      "license": "WTFPL",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/aizistral/nochatreports/fabric/NoChatReportsClient"
        },
        {
          "kind": "main",
          "value": "com/aizistral/nochatreports/fabric/NoChatReports"
        },
        {
          "kind": "modmenu",
          "value": "com/aizistral/nochatreports/fabric/config/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "mixins/common/nochatreports.mixins.json",
        "mixins/fabric/nochatreports-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 60,
      "methods": 269,
      "sites": [
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinChatListener",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "onHandleSystemMessage",
          "kind": "inject",
          "method": "handleSystemMessage",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/ChatListener#handleSystemMessage HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinChatListener",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "onEvaluateTrustLevel",
          "kind": "inject",
          "method": "evaluateTrustLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/ChatListener#evaluateTrustLevel HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinChatScreen",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "onHandleChatInput",
          "kind": "inject",
          "method": "handleChatInput",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ChatScreen#handleChatInput HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinChatScreen",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "onBeforeMessage",
          "kind": "inject",
          "method": "normalizeChatMessage",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ChatScreen#normalizeChatMessage RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinChatScreen",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ChatScreen#init HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl"
          ],
          "handler": "onSend",
          "kind": "inject",
          "method": "send",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl#send HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinConnectScreen",
          "targets": [
            "net/minecraft/client/gui/screens/ConnectScreen"
          ],
          "handler": "onStartConnecting",
          "kind": "inject",
          "method": "startConnecting",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/ConnectScreen#startConnecting HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinGuiMessageTag",
          "targets": [
            "net/minecraft/client/multiplayer/chat/GuiMessageTag"
          ],
          "handler": "onSystem",
          "kind": "inject",
          "method": "system",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/GuiMessageTag#system HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinGuiMessageTag",
          "targets": [
            "net/minecraft/client/multiplayer/chat/GuiMessageTag"
          ],
          "handler": "onSystem",
          "kind": "inject",
          "method": "systemSinglePlayer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/GuiMessageTag#systemSinglePlayer HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinJoinMultiplayerScreen",
          "targets": [
            "net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen#init HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onConstructed",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "client_start",
          "why": "the client object is built"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onGetProfileKeyPairManager",
          "kind": "inject",
          "method": "getProfileKeyPairManager",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#getProfileKeyPairManager HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onAllowsTelemetry",
          "kind": "inject",
          "method": "allowsTelemetry",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#allowsTelemetry HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinMinecraftServicesUserApiService",
          "targets": [
            "com/mojang/authlib/services/MinecraftServicesUserApiService"
          ],
          "handler": "onCreateTelemetrySession",
          "kind": "inject",
          "method": "newTelemetrySession",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/authlib/services/MinecraftServicesUserApiService#newTelemetrySession HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinOnlineServerEntry",
          "targets": [
            "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$OnlineServerEntry"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "extractContent",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$OnlineServerEntry#extractContent RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinOptions",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "onlyShowSecureChat",
          "kind": "inject",
          "method": "onlyShowSecureChat",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#onlyShowSecureChat RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinPlayerEntry",
          "targets": [
            "net/minecraft/client/gui/screens/social/PlayerEntry"
          ],
          "handler": "onConstructed",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/social/PlayerEntry#<init> RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinRealmsConnect",
          "targets": [
            "net/minecraft/realms/RealmsConnect"
          ],
          "handler": "onConnect",
          "kind": "inject",
          "method": "connect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/realms/RealmsConnect#connect HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinRowHelper",
          "targets": [
            "net/minecraft/client/gui/layouts/GridLayout$RowHelper"
          ],
          "handler": "onAddChild",
          "kind": "inject",
          "method": "addChild",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/layouts/GridLayout$RowHelper#addChild HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinServerData",
          "targets": [
            "net/minecraft/client/multiplayer/ServerData"
          ],
          "handler": "onWrite",
          "kind": "inject",
          "method": "write",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ServerData#write RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinServerData",
          "targets": [
            "net/minecraft/client/multiplayer/ServerData"
          ],
          "handler": "onRead",
          "kind": "inject",
          "method": "read",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ServerData#read RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinServerStatusPinger$1",
          "targets": [
            "net/minecraft/client/multiplayer/ServerStatusPinger$1"
          ],
          "handler": "captureServerData",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ServerStatusPinger$1#<init> RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinServerStatusPinger$1",
          "targets": [
            "net/minecraft/client/multiplayer/ServerStatusPinger$1"
          ],
          "handler": "getNoChatReports",
          "kind": "inject",
          "method": "handleStatusResponse",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/status/ServerStatus;description()Lnet/minecraft/network/chat/Component;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ServerStatusPinger$1#handleStatusResponse INVOKE"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinTitleScreen",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "onRealmsButtonClicked",
          "kind": "inject",
          "method": "lambda$createNormalMenuOptions$4",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/TitleScreen#lambda$createNormalMenuOptions$4 HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/client/MixinToastComponent",
          "targets": [
            "net/minecraft/client/gui/components/toasts/ToastManager"
          ],
          "handler": "onAddToast",
          "kind": "inject",
          "method": "addToast",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/toasts/ToastManager#addToast HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/common/MixinJsonByteBufCodec",
          "targets": [
            "net/minecraft/network/codec/ByteBufCodecs$37"
          ],
          "handler": "onEncode",
          "kind": "inject",
          "method": "encode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/codec/ByteBufCodecs$37#encode HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/common/MixinJsonByteBufCodec",
          "targets": [
            "net/minecraft/network/codec/ByteBufCodecs$37"
          ],
          "handler": "onDecode",
          "kind": "inject",
          "method": "decode",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/codec/ByteBufCodecs$37#decode RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/server/MixinDedicatedServer",
          "targets": [
            "net/minecraft/server/dedicated/DedicatedServer"
          ],
          "handler": "onEnforceSecureProfile",
          "kind": "inject",
          "method": "enforceSecureProfile",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/dedicated/DedicatedServer#enforceSecureProfile RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/server/MixinPlayerList",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "onVerifyChatTrusted",
          "kind": "inject",
          "method": "verifyChatTrusted",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#verifyChatTrusted HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/server/MixinServerCommonPacketListenerImpl",
          "targets": [
            "net/minecraft/server/network/ServerCommonPacketListenerImpl"
          ],
          "handler": "onSend",
          "kind": "inject",
          "method": "send",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerCommonPacketListenerImpl#send HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/server/MixinServerCommonPacketListenerImpl",
          "targets": [
            "net/minecraft/server/network/ServerCommonPacketListenerImpl"
          ],
          "handler": "onSend",
          "kind": "inject",
          "method": "Lnet/minecraft/server/network/ServerCommonPacketListenerImpl;send",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerCommonPacketListenerImpl#Lnet/minecraft/server/network/ServerCommonPacketListenerImpl;send HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/server/MixinServerboundChatCommandSignedPacket",
          "targets": [
            "net/minecraft/network/protocol/game/ServerboundChatCommandSignedPacket"
          ],
          "handler": "onGetSignatures",
          "kind": "inject",
          "method": "argumentSignatures",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/protocol/game/ServerboundChatCommandSignedPacket#argumentSignatures RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/server/MixinServerboundChatPacket",
          "targets": [
            "net/minecraft/network/protocol/game/ServerboundChatPacket"
          ],
          "handler": "onGetSignature",
          "kind": "inject",
          "method": "signature",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/protocol/game/ServerboundChatPacket#signature RETURN"
        },
        {
          "mixin": "com/aizistral/nochatreports/common/mixins/server/MixinServerboundChatSessionUpdatePacket",
          "targets": [
            "net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket"
          ],
          "handler": "onHandle",
          "kind": "inject",
          "method": "handle",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket#handle HEAD"
        },
        {
          "mixin": "com/aizistral/nochatreports/fabric/mixins/client/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onRun",
          "kind": "inject",
          "method": "run",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_start",
          "why": "the client starts"
        }
      ],
      "listening": 34,
      "accessors": 3,
      "hooks": {
        "client_start": 2
      },
      "wanted": {
        "com/mojang/authlib/services/MinecraftServicesUserApiService#newTelemetrySession @HEAD": 1,
        "net/minecraft/client/Minecraft#allowsTelemetry @HEAD": 1,
        "net/minecraft/client/Minecraft#getProfileKeyPairManager @HEAD": 1,
        "net/minecraft/client/Options#onlyShowSecureChat @RETURN": 1,
        "net/minecraft/client/gui/components/toasts/ToastManager#addToast @HEAD": 1,
        "net/minecraft/client/gui/layouts/GridLayout$RowHelper#addChild @HEAD": 1,
        "net/minecraft/client/gui/screens/ChatScreen#handleChatInput @HEAD": 1,
        "net/minecraft/client/gui/screens/ChatScreen#init @HEAD": 1,
        "net/minecraft/client/gui/screens/ChatScreen#normalizeChatMessage @RETURN": 1,
        "net/minecraft/client/gui/screens/ConnectScreen#startConnecting @HEAD": 1,
        "net/minecraft/client/gui/screens/TitleScreen#lambda$createNormalMenuOptions$4 @HEAD": 1,
        "net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen#init @HEAD": 1,
        "net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$OnlineServerEntry#extractContent @RETURN": 1,
        "net/minecraft/client/gui/screens/social/PlayerEntry#<init> @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl#send @HEAD": 1,
        "net/minecraft/client/multiplayer/ServerData#read @RETURN": 1,
        "net/minecraft/client/multiplayer/ServerData#write @RETURN": 1,
        "net/minecraft/client/multiplayer/ServerStatusPinger$1#<init> @RETURN": 1,
        "net/minecraft/client/multiplayer/chat/ChatListener#evaluateTrustLevel @HEAD": 1,
        "net/minecraft/client/multiplayer/chat/ChatListener#handleSystemMessage @HEAD": 1,
        "net/minecraft/client/multiplayer/chat/GuiMessageTag#system @HEAD": 1,
        "net/minecraft/client/multiplayer/chat/GuiMessageTag#systemSinglePlayer @HEAD": 1,
        "net/minecraft/network/codec/ByteBufCodecs$37#decode @RETURN": 1,
        "net/minecraft/network/codec/ByteBufCodecs$37#encode @HEAD": 1,
        "net/minecraft/network/protocol/game/ServerboundChatCommandSignedPacket#argumentSignatures @RETURN": 1,
        "net/minecraft/network/protocol/game/ServerboundChatPacket#signature @RETURN": 1,
        "net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket#handle @HEAD": 1,
        "net/minecraft/realms/RealmsConnect#connect @HEAD": 1,
        "net/minecraft/server/dedicated/DedicatedServer#enforceSecureProfile @RETURN": 1,
        "net/minecraft/server/network/ServerCommonPacketListenerImpl#Lnet/minecraft/server/network/ServerCommonPacketListenerImpl;send @HEAD": 1,
        "net/minecraft/server/network/ServerCommonPacketListenerImpl#send @HEAD": 1,
        "net/minecraft/server/players/PlayerList#verifyChatTrusted @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/multiplayer/ServerStatusPinger$1#handleStatusResponse @INVOKE": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 60,
        "features": {
          "screen": 3,
          "command": 1,
          "events": 1,
          "mixin": 27
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 60,
        "methods": 137,
        "tried": 137,
        "completed": 62,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/aizistral/nochatreports/common/core/ServerSafetyLevel;#clone()Ljava/lang/Object;": 1,
          "[Lcom/aizistral/nochatreports/common/core/SigningMode;#clone()Ljava/lang/Object;": 1,
          "[Lcom/aizistral/nochatreports/common/platform/Platform;#clone()Ljava/lang/Object;": 1,
          "com/aizistral/nochatreports/common/core/ServerSafetyLevel#name()Ljava/lang/String;": 1,
          "com/aizistral/nochatreports/common/core/SigningMode#name()Ljava/lang/String;": 4,
          "com/aizistral/nochatreports/common/core/SigningMode#ordinal()I": 4,
          "com/google/gson/stream/JsonReader#nextString()Ljava/lang/String;": 2,
          "java/util/Collection#add(Ljava/lang/Object;)Z": 1,
          "java/util/concurrent/atomic/AtomicBoolean#compareAndSet(ZZ)Z": 1,
          "java/util/concurrent/atomic/AtomicBoolean#get()Z": 2,
          "java/util/concurrent/atomic/AtomicBoolean#set(Z)V": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayConnectionEvents#JOIN": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 4,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/ComponentPath#component()Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "net/minecraft/client/gui/Font#width(Ljava/lang/String;)I": 2,
          "net/minecraft/client/gui/layouts/LinearLayout#horizontal()Lnet/minecraft/client/gui/layouts/LinearLayout;": 1,
          "net/minecraft/client/gui/screens/options/OptionsSubScreen#init()V": 1,
          "net/minecraft/client/multiplayer/ProfileKeyPairManager#prepareKeyPair()Ljava/util/concurrent/CompletableFuture;": 2,
          "net/minecraft/client/multiplayer/resolver/ServerAddress#toString()Ljava/lang/String;": 2,
          "net/minecraft/commands/arguments/ArgumentSignatures#EMPTY": 1,
          "net/minecraft/locale/Language#getInstance()Lnet/minecraft/locale/Language;": 2,
          "net/minecraft/nbt/CompoundTag#getBooleanOr(Ljava/lang/String;Z)Z": 1,
          "net/minecraft/server/network/ServerGamePacketListenerImpl#getPlayer()Lnet/minecraft/server/level/ServerPlayer;": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#getReturnValue()Ljava/lang/Object;": 2,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#setReturnValue(Ljava/lang/Object;)V": 3
        },
        "runs": [
          {
            "class": "com/aizistral/nochatreports/common/gui/FontHelper",
            "method": "isFormatColor",
            "desc": "(C)Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/gui/FontHelper",
            "method": "isFormatSpecial",
            "desc": "(C)Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/gui/UnsafeServerScreen",
            "method": "hideThisSession",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "demandOnServer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "showServerSafety",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "hideInsecureMessageIndicators",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "hideModifiedMessageIndicators",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "hideSystemMessageIndicators",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "hideWarningToast",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "alwaysHideReportButton",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "disableTelemetry",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "showReloadButton",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "verifiedIconEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "getVerifiedIconOffsetX",
            "desc": "()I",
            "value": "16"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "getVerifiedIconOffsetY",
            "desc": "()I",
            "value": "12"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "showNCRButton",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "enableMod",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "skipRealmsWarning",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "hideSigningRequestMessage",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigClient",
            "method": "removeTelemetryButton",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/core/SigningMode",
            "method": "isSelectable",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/aizistral/nochatreports/common/core/SigningMode",
            "method": "isSelectableGlobally",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/aizistral/nochatreports/common/core/SigningMode",
            "method": "nullable",
            "desc": "(Lcom/aizistral/nochatreports/common/core/SigningMode;)Lcom/aizistral/nochatreports/common/core/SigningMode;",
            "value": "obj#32"
          },
          {
            "class": "com/aizistral/nochatreports/common/NCRClient",
            "method": "areSigningKeysPresent",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/JSONConfig$1",
            "method": "shouldSkipClass",
            "desc": "(Ljava/lang/Class;)Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/platform/events/PlatformEvent",
            "method": "create",
            "desc": "(Ljava/util/function/Function;)Lcom/aizistral/nochatreports/common/platform/events/PlatformEvent;",
            "value": "obj#65"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigCommon",
            "method": "demandOnClient",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigCommon",
            "method": "convertToGameMessage",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigCommon",
            "method": "enableDebugLog",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRConfigCommon",
            "method": "addQueryData",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/core/ServerStatusCache",
            "method": "doesPreventReports",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/config/NCRServerPreferences",
            "method": "getModeUnresolved",
            "desc": "(Lnet/minecraft/client/multiplayer/resolver/ServerAddress;)Lcom/aizistral/nochatreports/common/core/SigningMode;",
            "value": "obj#37"
          },
          {
            "class": "com/aizistral/nochatreports/common/core/ServerSafetyLevel",
            "method": "isSecure",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/mixins/client/MixinServerData",
            "method": "preventsChatReports",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/core/ServerSafetyState",
            "method": "isOnRealms",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/core/ServerSafetyState",
            "method": "isInSingleplayer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/aizistral/nochatreports/common/core/ServerSafetyState",
            "method": "isDetermined",
            "desc": "()Z",
            "value": "1"
          }
        ],
        "insns": 934
      },
      "verdict": "no",
      "summary": "only 2 of 34 listening patch sites have a hook (5%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "notenoughanimations",
      "name": "NotEnoughAnimations",
      "version": "1.12.7",
      "license": "tr7zw Protective License",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/tr7zw/notenoughanimations/NEAnimationsMod"
        },
        {
          "kind": "modmenu",
          "value": "dev/tr7zw/notenoughanimations/NEAModMenu"
        }
      ],
      "mixin_configs": [
        "notenoughanimations.mixins.json"
      ],
      "depends": [],
      "classes": 79,
      "methods": 391,
      "sites": [
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "startWorldTick",
          "kind": "inject",
          "method": "tickEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickEntities HEAD"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/ItemInHandLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/ItemInHandLayer"
          ],
          "handler": "submitArmWithItem",
          "kind": "inject",
          "method": "submitArmWithItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/layers/ItemInHandLayer#submitArmWithItem HEAD"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/ItemInHandRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer"
          ],
          "handler": "renderPlayerArm",
          "kind": "inject",
          "method": "renderPlayerArm",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#renderPlayerArm HEAD"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/ItemInHandRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer"
          ],
          "handler": "renderPlayerArmEnd",
          "kind": "inject",
          "method": "renderPlayerArm",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#renderPlayerArm RETURN"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "render_needs",
          "why": "the level's drawing starts: what it needs drawn is decided here"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "tickHeadTurn",
          "kind": "inject",
          "method": "tickHeadTurn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#tickHeadTurn HEAD"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/LivingEntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "addEntityToRenderState",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/LivingEntityRenderer#extractRenderState HEAD"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#tick RETURN"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "blockingMaxHeadRotationRelativeToBody",
          "kind": "modify-constant",
          "method": "getMaxHeadRotationRelativeToBody",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "normalMaxHeadRotationRelativeToBody",
          "kind": "redirect",
          "method": "getMaxHeadRotationRelativeToBody",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Avatar;getMaxHeadRotationRelativeToBody()F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityModelMixin",
          "targets": [
            "net/minecraft/client/model/player/PlayerModel"
          ],
          "handler": "setupAnimHEAD",
          "kind": "inject",
          "method": "setupAnim",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/player/PlayerModel#setupAnim HEAD"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityModelMixin",
          "targets": [
            "net/minecraft/client/model/player/PlayerModel"
          ],
          "handler": "setupAnim",
          "kind": "inject",
          "method": "setupAnim",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/player/PlayerModel#setupAnim RETURN"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityModelMixin",
          "targets": [
            "net/minecraft/client/model/player/PlayerModel"
          ],
          "handler": "setupAnimEnd",
          "kind": "inject",
          "method": "setupAnim",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/player/PlayerModel#setupAnim RETURN"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/PlayerRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "onCreate",
          "kind": "inject",
          "method": "<init>*",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/player/AvatarRenderer#<init>* RETURN"
        },
        {
          "mixin": "dev/tr7zw/notenoughanimations/mixins/PlayerRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "includeData",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/player/AvatarRenderer#extractRenderState HEAD"
        }
      ],
      "listening": 13,
      "accessors": 2,
      "hooks": {
        "render_needs": 1
      },
      "wanted": {
        "net/minecraft/client/model/player/PlayerModel#setupAnim @HEAD": 1,
        "net/minecraft/client/model/player/PlayerModel#setupAnim @RETURN": 2,
        "net/minecraft/client/multiplayer/ClientLevel#tickEntities @HEAD": 1,
        "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#renderPlayerArm @HEAD": 1,
        "net/minecraft/client/renderer/FirstPersonHandsAndItemsRenderer#renderPlayerArm @RETURN": 1,
        "net/minecraft/client/renderer/entity/LivingEntityRenderer#extractRenderState @HEAD": 1,
        "net/minecraft/client/renderer/entity/layers/ItemInHandLayer#submitArmWithItem @HEAD": 1,
        "net/minecraft/client/renderer/entity/player/AvatarRenderer#<init>* @RETURN": 1,
        "net/minecraft/client/renderer/entity/player/AvatarRenderer#extractRenderState @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#tickHeadTurn @HEAD": 1,
        "net/minecraft/world/entity/player/Player#tick @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/world/entity/Avatar#getMaxHeadRotationRelativeToBody @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/player/Player#getMaxHeadRotationRelativeToBody @HEAD (modify-constant)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 79,
        "features": {
          "renderer": 1,
          "mixin": 13
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 79,
        "methods": 218,
        "tried": 218,
        "completed": 110,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Ldev/tr7zw/notenoughanimations/versionless/RotationLock;#clone()Ljava/lang/Object;": 1,
          "[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;#clone()Ljava/lang/Object;": 7,
          "[Ldev/tr7zw/notenoughanimations/versionless/animations/BowAnimation;#clone()Ljava/lang/Object;": 1,
          "[Ldev/tr7zw/notenoughanimations/versionless/animations/HoldUpModes;#clone()Ljava/lang/Object;": 1,
          "[Ldev/tr7zw/notenoughanimations/versionless/animations/HoldUpTarget;#clone()Ljava/lang/Object;": 1,
          "com/mojang/blaze3d/vertex/PoseStack#last()Lcom/mojang/blaze3d/vertex/PoseStack$Pose;": 1,
          "dev/tr7zw/notenoughanimations/NEAnimationsMod#INSTANCE": 3,
          "java/io/File#exists()Z": 1,
          "java/util/EnumSet#contains(Ljava/lang/Object;)Z": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 2,
          "java/util/Set#clear()V": 5,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/client/model/HumanoidModel$ArmPose#BLOCK": 1,
          "net/minecraft/client/model/HumanoidModel$ArmPose#BOW_AND_ARROW": 1,
          "net/minecraft/client/player/AbstractClientPlayer#canFreeze()Z": 1,
          "net/minecraft/client/player/AbstractClientPlayer#getCurrentSwing()Lnet/minecraft/world/entity/LivingEntity$SwingDescription;": 1,
          "net/minecraft/client/player/AbstractClientPlayer#getItemInHand(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/client/player/AbstractClientPlayer#getMainArm()Lnet/minecraft/world/entity/HumanoidArm;": 6,
          "net/minecraft/client/player/AbstractClientPlayer#getPose()Lnet/minecraft/world/entity/Pose;": 5,
          "net/minecraft/client/player/AbstractClientPlayer#getUseItemRemainingTicks()I": 2,
          "net/minecraft/client/player/AbstractClientPlayer#isAutoSpinAttack()Z": 1,
          "net/minecraft/client/player/AbstractClientPlayer#isCrouching()Z": 4,
          "net/minecraft/client/player/AbstractClientPlayer#isFallFlying()Z": 1,
          "net/minecraft/client/player/AbstractClientPlayer#isOnFire()Z": 1,
          "net/minecraft/client/player/AbstractClientPlayer#isPassenger()Z": 3,
          "net/minecraft/client/player/AbstractClientPlayer#isSleeping()Z": 1,
          "net/minecraft/client/player/AbstractClientPlayer#isSprinting()Z": 1,
          "net/minecraft/client/player/AbstractClientPlayer#isSwinging()Z": 2,
          "net/minecraft/client/player/AbstractClientPlayer#onClimbable()Z": 1,
          "net/minecraft/resources/ResourceKey#identifier()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/world/InteractionHand#MAIN_HAND": 2,
          "net/minecraft/world/entity/Entity#onGround()Z": 1,
          "net/minecraft/world/entity/player/Player#getMainHandItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/item/CrossbowItem#isCharged(Lnet/minecraft/world/item/ItemStack;)Z": 1,
          "net/minecraft/world/item/ItemStack#getComponents()Lnet/minecraft/core/component/DataComponentMap;": 1,
          "net/minecraft/world/item/ItemStack#getUseAnimation()Lnet/minecraft/world/item/ItemUseAnimation;": 1
        },
        "runs": [
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/SwimAnimation",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/SwimAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3600"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/FallingAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "400"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/PetAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "2100"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/SleepAnimation",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/SleepAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3600"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/VanillaProjectileWeaponAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#54"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/VanillaProjectileWeaponAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3200"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/MapHoldingAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#66"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/MapHoldingAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "300"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/VanillaShieldAnimation",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/VanillaShieldAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3100"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/VanillaTwoHandedAnimation",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/VanillaTwoHandedAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3100"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/ElytraAnimation",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/ElytraAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3000"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/PassengerAnimation",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/PassengerAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#100"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/PassengerAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3500"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/FreezingAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#113"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/FreezingAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "400"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/ItemSwapAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#121"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/ItemSwapAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3500"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/LookAtItemAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#146"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/LookAtItemAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "300"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/api/HeldAnimation$HeldAnimationData",
            "method": "getLight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/ActionRotationLockAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#209"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/ActionRotationLockAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "1250"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
            "method": "isUpdated",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
            "method": "shouldSkipNextTickHeadTurn",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
            "method": "getItemSwapAnimationTimer",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
            "method": "getLastAnimationSwapTick",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
            "method": "getLastRotations",
            "desc": "()[F",
            "value": "obj#246"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
            "method": "isDisableBodyRotation",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/mixins/PlayerEntityMixin",
            "method": "isRotateBodyToHead",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/LadderAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "1400"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/util/AnimationUtil",
            "method": "interpolateRotation",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/util/AnimationUtil",
            "method": "interpolateRotation2",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/util/AnimationUtil",
            "method": "lerpAngle",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/util/AnimationUtil",
            "method": "wrapDegrees",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/util/AnimationUtil",
            "method": "wrapDegrees2",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/util/AnimationUtil",
            "method": "legacyWrapDegrees",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/RiptideAnimation",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/RiptideAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3600"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/VanillaSingleHandedAnimation",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/VanillaSingleHandedAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3100"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/BurningAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#303"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/BurningAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "400"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/EatDrinkAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "2500"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/BoatAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#323"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/BoatAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "1500"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/NarutoRunningAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#331"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/NarutoRunningAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "500"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/HorseAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "1500"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/DeathAnimation",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/vanilla/DeathAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "3600"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/HugAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#360"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/hands/HugAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "2100"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/CrawlingAnimation",
            "method": "getBodyParts",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)[Ldev/tr7zw/notenoughanimations/versionless/animations/BodyPart;",
            "value": "obj#379"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/CrawlingAnimation",
            "method": "getPriority",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;Ldev/tr7zw/notenoughanimations/access/PlayerData;)I",
            "value": "350"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/CrawlingAnimation",
            "method": "rotlerpRad",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/notenoughanimations/animations/fullbody/CrawlingAnimation",
            "method": "quadraticArmUpdate",
            "desc": "(F)F",
            "value": "0f"
          }
        ],
        "insns": 4396
      },
      "verdict": "no",
      "summary": "only 1 of 13 listening patch sites have a hook (7%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "notenoughcrashes",
      "name": "Not Enough Crashes",
      "version": "4.5.1+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "fudge/notenoughcrashes/fabric/NotEnoughCrashesFabric"
        },
        {
          "kind": "modmenu",
          "value": "fudge/notenoughcrashes/fabric/config/ModMenuConfigIntegration"
        }
      ],
      "mixin_configs": [
        "notenoughcrashes.mixins.json",
        "notenoughcrashes.fabric.mixins.json"
      ],
      "depends": [],
      "classes": 75,
      "methods": 359,
      "sites": [
        {
          "mixin": "fudge/notenoughcrashes/fabric/mixins/MixinMain",
          "targets": [
            "net/minecraft/server/Main"
          ],
          "handler": "createPlatformInstanceAsSoonAsPossibleOnClient",
          "kind": "inject",
          "method": "main",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/Main#main HEAD"
        },
        {
          "mixin": "fudge/notenoughcrashes/fabric/mixins/MixinStructureTemplateDiagnostics",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate"
          ],
          "handler": "describeProcessor",
          "kind": "wrap-operation",
          "method": "processBlockInfos",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor;processBlock(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$StructureBlockInfo;Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructurePlaceSettings;)Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$StructureBlockInfo;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "fudge/notenoughcrashes/fabric/mixins/MixinStructureTemplateDiagnostics",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate"
          ],
          "handler": "describeFinalizer",
          "kind": "wrap-operation",
          "method": "processBlockInfos",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor;finalizeProcessing(Lnet/minecraft/world/level/ServerLevelAccessor;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/BlockPos;Ljava/util/List;Ljava/util/List;Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructurePlaceSettings;)Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "fudge/notenoughcrashes/fabric/mixins/client/CatchInitMinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "catchFabricInit",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/fabricmc/loader/impl/game/minecraft/Hooks;startClient(Ljava/io/File;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "fudge/notenoughcrashes/fabric/mixins/client/CatchInitMinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "catchQuiltInit",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lorg/quiltmc/loader/impl/entrypoint/minecraft/hooks/EntrypointClient;start(Ljava/io/File;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "fudge/notenoughcrashes/fabric/mixins/client/MixinMain",
          "targets": [
            "net/minecraft/client/main/Main"
          ],
          "handler": "asSoonAsPossible",
          "kind": "inject",
          "method": "main",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/main/Main#main HEAD"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/MixinCrashReport",
          "targets": [
            "net/minecraft/CrashReport"
          ],
          "handler": "translateMixinSources",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/CrashReport#<init> RETURN"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/MixinCrashReport",
          "targets": [
            "net/minecraft/CrashReport"
          ],
          "handler": "beforeSystemDetailsAreWritten",
          "kind": "inject",
          "method": "getDetails",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/SystemReport;appendToCrashReportString(Ljava/lang/StringBuilder;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/CrashReport#getDetails INVOKE"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/MixinTileEntity",
          "targets": [
            "net/minecraft/world/level/block/entity/BlockEntity"
          ],
          "handler": "onFillCrashReportCategory",
          "kind": "inject",
          "method": "fillCrashReportCategory",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BlockEntity#fillCrashReportCategory TAIL"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/client/MixinGui",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "setScreenDontResetCrashScreen",
          "kind": "inject",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "screen_opening",
          "why": "ScreenEvent.Opening: a screen opens"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/client/MixinIntegratedServer",
          "targets": [
            "net/minecraft/client/server/IntegratedServer"
          ],
          "handler": "handleIntegratedServerCrash",
          "kind": "inject",
          "method": "onServerCrash",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/server/IntegratedServer#onServerCrash HEAD"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/client/MixinKeyboard",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "tickDontCrashInfinitely",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#tick HEAD"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/client/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "beforeRun",
          "kind": "inject",
          "method": "run",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_start",
          "why": "the client starts"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/client/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "recoverTick",
          "kind": "wrap-operation",
          "method": "run",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;runTick(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/client/MixinMinecraftServerClientOnly",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "disableIntegratedServerWriteToFileOnCrash",
          "kind": "redirect",
          "method": "runServer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/CrashReport;saveToFile(Ljava/nio/file/Path;Lnet/minecraft/ReportType;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/diagnostics/MixinLootRegistry",
          "targets": [
            "net/minecraft/server/ReloadableServerRegistries$Holder"
          ],
          "handler": "missingLoot",
          "kind": "inject",
          "method": "getLootTable",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ReloadableServerRegistries$Holder#getLootTable RETURN"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/diagnostics/MixinMobSpawnSettings",
          "targets": [
            "net/minecraft/world/level/biome/MobSpawnSettings"
          ],
          "handler": "validateSpawns",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/biome/MobSpawnSettings#<init> RETURN"
        },
        {
          "mixin": "fudge/notenoughcrashes/mixins/diagnostics/MixinStructureTemplateManager",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager"
          ],
          "handler": "missingStructure",
          "kind": "inject",
          "method": "tryLoad",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager#tryLoad RETURN"
        }
      ],
      "listening": 11,
      "accessors": 1,
      "hooks": {
        "client_start": 1,
        "screen_opening": 1
      },
      "wanted": {
        "net/minecraft/CrashReport#<init> @RETURN": 1,
        "net/minecraft/client/KeyboardHandler#tick @HEAD": 1,
        "net/minecraft/client/main/Main#main @HEAD": 1,
        "net/minecraft/client/server/IntegratedServer#onServerCrash @HEAD": 1,
        "net/minecraft/server/Main#main @HEAD": 1,
        "net/minecraft/server/ReloadableServerRegistries$Holder#getLootTable @RETURN": 1,
        "net/minecraft/world/level/biome/MobSpawnSettings#<init> @RETURN": 1,
        "net/minecraft/world/level/block/entity/BlockEntity#fillCrashReportCategory @TAIL": 1,
        "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager#tryLoad @RETURN": 1
      },
      "wanted_calls": {
        "net/fabricmc/loader/impl/game/minecraft/Hooks#startClient @INVOKE (redirect)": 1,
        "net/minecraft/CrashReport#getDetails @INVOKE": 1,
        "net/minecraft/CrashReport#saveToFile @INVOKE (redirect)": 1,
        "net/minecraft/client/Minecraft#runTick @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor#finalizeProcessing @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor#processBlock @INVOKE (wrap-operation)": 1,
        "org/quiltmc/loader/impl/entrypoint/minecraft/hooks/EntrypointClient#start @INVOKE (redirect)": 1
      },
      "api": [
        {
          "class": "ContactInformation",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Person",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 75,
        "features": {
          "screen": 9,
          "mixin": 19
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 75,
        "methods": 169,
        "tried": 169,
        "completed": 57,
        "handlers_tried": 2,
        "handlers_completed": 2,
        "missing": {
          "[Lfudge/notenoughcrashes/upload/CrashyUpload$CrashyMode;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/Lists#newArrayList(Ljava/lang/Iterable;)Ljava/util/ArrayList;": 2,
          "com/google/gson/stream/JsonReader#nextString()Ljava/lang/String;": 2,
          "com/mojang/renderpearl/api/device/GpuSurface#isAcquired()Z": 1,
          "fudge/notenoughcrashes/config/MidnightConfigListWidget#clearEntries()V": 1,
          "java/lang/Class#getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;": 1,
          "java/lang/StackTraceElement#getClassName()Ljava/lang/String;": 1,
          "java/lang/reflect/Field#get(Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "java/net/URI#toString()Ljava/lang/String;": 1,
          "java/nio/charset/StandardCharsets#UTF_8": 1,
          "java/nio/file/Files#createDirectories(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;": 1,
          "java/nio/file/Files#isSymbolicLink(Ljava/nio/file/Path;)Z": 2,
          "java/nio/file/LinkOption#NOFOLLOW_LINKS": 1,
          "java/nio/file/Path#toUri()Ljava/net/URI;": 2,
          "java/util/Collections#newSetFromMap(Ljava/util/Map;)Ljava/util/Set;": 1,
          "java/util/zip/ZipOutputStream#putNextEntry(Ljava/util/zip/ZipEntry;)V": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 10,
          "net/fabricmc/loader/api/ModContainer#getMetadata()Lnet/fabricmc/loader/api/metadata/ModMetadata;": 1,
          "net/fabricmc/loader/impl/game/minecraft/Hooks#startClient(Ljava/io/File;Ljava/lang/Object;)V": 1,
          "net/minecraft/CrashReport#getException()Ljava/lang/Throwable;": 1,
          "net/minecraft/CrashReport#getSaveFile()Ljava/nio/file/Path;": 1,
          "net/minecraft/CrashReport#saveToFile(Ljava/nio/file/Path;Lnet/minecraft/ReportType;)Z": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 6,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList$Entry#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "net/minecraft/client/gui/components/tabs/TabNavigationBar#keyPressed(Lnet/minecraft/client/input/KeyEvent;)Z": 1,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/Screen#init()V": 1,
          "net/minecraft/client/gui/screens/Screen#tick()V": 1,
          "net/minecraft/client/renderer/RenderPipelines#GUI_TEXTURED": 1,
          "net/minecraft/client/resources/language/I18n#get(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 1,
          "net/minecraft/network/chat/Component#copy()Lnet/minecraft/network/chat/MutableComponent;": 2,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 2,
          "net/minecraft/resources/Identifier#toString()Ljava/lang/String;": 2,
          "new net/minecraft/client/gui/components/StringWidget": 1,
          "org/quiltmc/loader/impl/game/minecraft/Hooks#startClient(Ljava/io/File;Ljava/lang/Object;)V": 1,
          "org/spongepowered/asm/mixin/MixinEnvironment#getCurrentEnvironment()Lorg/spongepowered/asm/mixin/MixinEnvironment;": 1,
          "org/spongepowered/asm/mixin/extensibility/IMixinInfo#getConfig()Lorg/spongepowered/asm/mixin/extensibility/IMixinConfig;": 1,
          "org/spongepowered/asm/mixin/transformer/ext/ITargetClassContext#getClassNode()Lorg/objectweb/asm/tree/ClassNode;": 1
        },
        "runs": [
          {
            "class": "fudge/notenoughcrashes/gui/ProblemScreen",
            "method": "shouldCloseOnEsc",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/config/MidnightConfig$2",
            "method": "shouldSkipClass",
            "desc": "(Ljava/lang/Class;)Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/config/MidnightConfigListWidget",
            "method": "getRowWidth",
            "desc": "()I",
            "value": "10000"
          },
          {
            "class": "fudge/notenoughcrashes/stacktrace/MixinSourceMap$Range",
            "method": "input",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/stacktrace/MixinSourceMap$Range",
            "method": "count",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/stacktrace/MixinSourceMap$Range",
            "method": "output",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/stacktrace/MixinSourceMap$Range",
            "method": "increment",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/NotEnoughCrashes",
            "method": "enableGameloopCatching",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/stacktrace/SourceMapPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "fudge/notenoughcrashes/fabric/platform/FabricPlatform",
            "method": "isForge",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/fabric/platform/FabricPlatform",
            "method": "irisExists",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/mixinhandlers/EntryPointCatcher",
            "method": "crashedDuringStartup",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/mixins/diagnostics/MixinCommands",
            "method": "logCommandExceptions",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "fudge/notenoughcrashes/mixins/MixinCrashReport",
            "method": "getThis",
            "desc": "()Lnet/minecraft/CrashReport;",
            "value": "obj#105"
          },
          {
            "class": "fudge/notenoughcrashes/platform/ModsByLocation",
            "method": "removeSuffix",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "fudge/notenoughcrashes/platform/ModsByLocation",
            "method": "removePrefix",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "fudge/notenoughcrashes/platform/ModsByLocation",
            "method": "removeAndBefore",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "fudge/notenoughcrashes/platform/ModsByLocation",
            "method": "removeAndAfter",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "fudge/notenoughcrashes/stacktrace/SourceMapPlugin$Capture",
            "method": "checkActive",
            "desc": "(Lorg/spongepowered/asm/mixin/MixinEnvironment;)Z",
            "value": "1"
          },
          {
            "class": "fudge/notenoughcrashes/platform/NecPlatform",
            "method": "instance",
            "desc": "()Lfudge/notenoughcrashes/platform/NecPlatform;",
            "value": "obj#114"
          },
          {
            "class": "fudge/notenoughcrashes/platform/NecPlatform",
            "method": "irisExists",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/config/NecConfig",
            "method": "getCurrent",
            "desc": "()Lfudge/notenoughcrashes/config/NecConfig;",
            "value": "obj#140"
          },
          {
            "class": "fudge/notenoughcrashes/config/NecConfig",
            "method": "disableReturnToMainMenu",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/config/NecConfig",
            "method": "catchInitializationCrashes",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/config/NecConfig",
            "method": "debugModIdentification",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/config/NecConfig",
            "method": "crashLimit",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fudge/notenoughcrashes/config/NecConfig",
            "method": "catchGameloopCrashes",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 1125
      },
      "verdict": "no",
      "summary": "only 2 of 11 listening patch sites have a hook (18%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "nuit",
      "name": "Nuit",
      "version": "1.0.0-beta.6+mc26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/flashyreese/mods/nuit/fabric/NuitClientFabric"
        }
      ],
      "mixin_configs": [
        "nuit-common.mixins.json"
      ],
      "depends": [],
      "classes": 72,
      "methods": 584,
      "sites": [
        {
          "mixin": "me/flashyreese/mods/nuit/mixin/MixinAtmosphericFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment"
          ],
          "handler": "nuit$redirectSkyAngle",
          "kind": "wrap-operation",
          "method": "getBaseColor",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/attribute/EnvironmentAttributeProbe;getValue(Lnet/minecraft/world/attribute/EnvironmentAttribute;F)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/nuit/mixin/MixinAtmosphericFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment"
          ],
          "handler": "nuit$renderSkyColor",
          "kind": "modify-constant",
          "method": "getBaseColor",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "me/flashyreese/mods/nuit/mixin/MixinAtmosphericFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment"
          ],
          "handler": "nuit$modifyColors",
          "kind": "inject",
          "method": "getBaseColor",
          "at": "TAIL",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#getBaseColor TAIL"
        },
        {
          "mixin": "me/flashyreese/mods/nuit/mixin/MixinFogRenderer",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "nuit$redirectSetShaderFogColor",
          "kind": "inject",
          "method": "computeFogColor",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/FogRenderer#computeFogColor TAIL"
        },
        {
          "mixin": "me/flashyreese/mods/nuit/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "nuit$captureTickDelta",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "render_needs",
          "why": "the level's drawing starts: what it needs drawn is decided here"
        },
        {
          "mixin": "me/flashyreese/mods/nuit/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "nuit$allowCustomSkyPass",
          "kind": "modify-variable",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "me/flashyreese/mods/nuit/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "nuit$replaceVanillaSky",
          "kind": "wrap-operation",
          "method": "lambda$addSkyPass$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SkyRenderer;render(Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;Lnet/minecraft/client/renderer/state/level/SkyRenderState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 3,
      "accessors": 7,
      "hooks": {
        "render_needs": 1
      },
      "wanted": {
        "net/minecraft/client/renderer/fog/FogRenderer#computeFogColor @TAIL": 1,
        "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#getBaseColor @TAIL": 1
      },
      "wanted_calls": {
        "net/minecraft/client/renderer/LevelRenderer#render @HEAD (modify-variable)": 1,
        "net/minecraft/client/renderer/SkyRenderer#render @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#getBaseColor @HEAD (modify-constant)": 1,
        "net/minecraft/world/attribute/EnvironmentAttributeProbe#getValue @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndLevelTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricRegistryBuilder",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "HudElementRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 72,
        "features": {
          "screen": 1,
          "events": 1,
          "mixin": 4
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 72,
        "methods": 350,
        "tried": 350,
        "completed": 151,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lme/flashyreese/mods/nuit/components/Weather;#clone()Ljava/lang/Object;": 2,
          "com/google/common/collect/Iterables#concat(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/lang/Iterable;": 1,
          "com/mojang/blaze3d/systems/RenderSystem#getDevice()Lcom/mojang/renderpearl/api/device/GpuDevice;": 1,
          "com/mojang/blaze3d/systems/RenderSystem#getDynamicUniforms()Lnet/minecraft/client/renderer/DynamicGpuData;": 1,
          "com/mojang/blaze3d/systems/RenderSystem#getModelViewMatrixCopy()Lorg/joml/Matrix4f;": 1,
          "com/mojang/blaze3d/systems/RenderSystem#setShaderFog(Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;)V": 1,
          "com/mojang/blaze3d/vertex/DefaultVertexFormat#POSITION_COLOR": 1,
          "com/mojang/renderpearl/api/commands/RenderPass#setUniform(Ljava/lang/String;Lcom/mojang/renderpearl/api/textures/GpuTextureView;Lcom/mojang/renderpearl/api/textures/GpuSampler;)V": 1,
          "com/mojang/renderpearl/api/pipeline/ColorTargetState#DEFAULT": 1,
          "com/mojang/renderpearl/api/pipeline/PrimitiveTopology#QUADS": 1,
          "com/mojang/renderpearl/api/pipeline/RenderPipeline#getVertexFormatBinding(I)Lcom/mojang/renderpearl/api/vertex/VertexFormat;": 1,
          "com/mojang/serialization/Codec#STRING": 1,
          "com/mojang/serialization/DataResult#success(Ljava/lang/Object;)Lcom/mojang/serialization/DataResult;": 1,
          "it/unimi/dsi/fastutil/objects/ObjectArrayList#of()Lit/unimi/dsi/fastutil/objects/ObjectArrayList;": 5,
          "java/lang/Class#getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;": 1,
          "java/lang/reflect/Method#invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Collection#forEach(Ljava/util/function/Consumer;)V": 1,
          "java/util/Collections#unmodifiableCollection(Ljava/util/Collection;)Ljava/util/Collection;": 2,
          "java/util/Collections#unmodifiableList(Ljava/util/List;)Ljava/util/List;": 1,
          "java/util/Collections#unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;": 2,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/Locale#ROOT": 1,
          "java/util/Map#of()Ljava/util/Map;": 2,
          "java/util/Map#of(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;": 2,
          "java/util/Optional#orElseThrow()Ljava/lang/Object;": 2,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "me/flashyreese/mods/nuit/components/clock/DefaultClockSource#CODEC": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 16,
          "net/minecraft/client/multiplayer/ClientLevel#clockManager()Lnet/minecraft/client/ClientClockManager;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#dimensionType()Lnet/minecraft/world/level/dimension/DimensionType;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#endFlashState()Lnet/minecraft/client/renderer/EndFlashState;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#environmentAttributes()Lnet/minecraft/world/attribute/EnvironmentAttributeSystem;": 5,
          "net/minecraft/client/multiplayer/ClientLevel#getGameTime()J": 1,
          "net/minecraft/util/ARGB#vector3fFromRGB24(I)Lorg/joml/Vector3f;": 1,
          "net/minecraft/util/Mth#clamp(JJJ)J": 1,
          "net/minecraft/util/Mth#lerp(FFF)F": 1,
          "net/minecraft/util/Mth#positiveModulo(DD)D": 1,
          "new com/mojang/blaze3d/vertex/BufferBuilder": 1,
          "new com/mojang/blaze3d/vertex/ByteBufferBuilder": 1,
          "new it/unimi/dsi/fastutil/ints/Int2LongArrayMap": 1,
          "new it/unimi/dsi/fastutil/longs/Long2FloatOpenHashMap": 4,
          "new it/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/ObjectArrayList": 1,
          "new org/joml/Matrix4f": 4,
          "org/apache/commons/lang3/builder/ToStringBuilder#reflectionToString(Ljava/lang/Object;)Ljava/lang/String;": 2
        },
        "runs": [
          {
            "class": "me/flashyreese/mods/nuit/components/clock/WorldClockSource",
            "method": "asDirectSource",
            "desc": "()Lme/flashyreese/mods/nuit/components/clock/DirectClockSource;",
            "value": "obj#7"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/WorldClockSource",
            "method": "serializedName",
            "desc": "()Ljava/lang/String;",
            "value": "\"clock\""
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Metadata",
            "method": "schemaVersion",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/RGBA",
            "method": "of",
            "desc": "()Lme/flashyreese/mods/nuit/components/RGBA;",
            "value": "obj#19"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/RGBA",
            "method": "getAlpha",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/RGBA",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Rotation",
            "method": "skyboxRotation",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Rotation",
            "method": "duration",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Rotation",
            "method": "speed",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/SkyboxManager",
            "method": "createRenderAccess",
            "desc": "(Lnet/minecraft/client/renderer/SkyRenderer;)Lme/flashyreese/mods/nuit/api/skyboxes/SkyboxRenderAccess;",
            "value": "obj#60"
          },
          {
            "class": "me/flashyreese/mods/nuit/SkyboxManager",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/SkyboxManager",
            "method": "getCurrentSkybox",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#70"
          },
          {
            "class": "me/flashyreese/mods/nuit/SkyboxManager",
            "method": "getCelestialController",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#80"
          },
          {
            "class": "me/flashyreese/mods/nuit/NuitClient",
            "method": "skyboxResourceListener",
            "desc": "()Lme/flashyreese/mods/nuit/resource/SkyboxResourceListener;",
            "value": "obj#101"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/RangeEntry",
            "method": "min",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/RangeEntry",
            "method": "max",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/screen/SkyboxDebugScreen",
            "method": "isPauseScreen",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/util/Utils$KeyframePair",
            "method": "current",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/util/Utils$KeyframePair",
            "method": "next",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/util/Utils",
            "method": "checkRanges",
            "desc": "(DLjava/util/List;Z)Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/nuit/util/Utils",
            "method": "calculateRotation",
            "desc": "(DZDD)D",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/util/Utils",
            "method": "findClosestKeyframes",
            "desc": "(Ljava/util/Map;D)Ljava/util/Optional;",
            "value": "obj#130"
          },
          {
            "class": "me/flashyreese/mods/nuit/util/Utils",
            "method": "isSourceFactor",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/util/Utils",
            "method": "isDestFactor",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/UVRange",
            "method": "of",
            "desc": "()Lme/flashyreese/mods/nuit/components/UVRange;",
            "value": "obj#133"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/UVRange",
            "method": "minU",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/UVRange",
            "method": "minV",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/UVRange",
            "method": "maxU",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/UVRange",
            "method": "maxV",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/runtime/InterpolatedSample",
            "method": "previousTicks",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/runtime/InterpolatedSample",
            "method": "currentTicks",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/api/skyboxes/SkyboxRenderContext",
            "method": "tickDelta",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/api/NuitApi",
            "method": "getApiVersion",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/nuit/skybox/AbstractSkybox",
            "method": "getAlpha",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/skybox/AbstractSkybox",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Properties",
            "method": "layer",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Properties",
            "method": "transitionInDuration",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Properties",
            "method": "transitionOutDuration",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Properties",
            "method": "renderSunSkyTint",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Properties",
            "method": "visibleUnderwater",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "getGridColumns",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "getGridRows",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "getDuration",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "isInterpolate",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "getFrameBlend",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "hasMultipleFrames",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "hasInterpolatedFrame",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "getFrameDurationMillis",
            "desc": "(I)J",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "saturatingMultiply",
            "desc": "(IJ)J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/AnimatableTexture",
            "method": "saturatingAdd",
            "desc": "(JJ)J",
            "value": "-1"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/DirectClockSource",
            "method": "asDirectSource",
            "desc": "()Lme/flashyreese/mods/nuit/components/clock/DirectClockSource;",
            "value": "obj#237"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/DirectClockSource",
            "method": "time",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Fade",
            "method": "duration",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/ClockSource",
            "method": "defaultClock",
            "desc": "()Lme/flashyreese/mods/nuit/components/clock/DefaultClockSource;",
            "value": "obj#255"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/ClockSource",
            "method": "gameTime",
            "desc": "()Lme/flashyreese/mods/nuit/components/clock/GameTimeClockSource;",
            "value": "obj#256"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/ClockSource",
            "method": "requiresObjectEncoding",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/RGB",
            "method": "getRed",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/RGB",
            "method": "getBlue",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/RGB",
            "method": "getGreen",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/RGB",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/IrisCompat",
            "method": "canAssignPipelines",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/FixedClockSource",
            "method": "resolve",
            "desc": "(Lme/flashyreese/mods/nuit/components/clock/runtime/LevelClockState;Lnet/minecraft/client/multiplayer/ClientLevel;)Lme/flashyreese/mods/nuit/components/clock/runtime/source/ResolvedTimeSource;",
            "value": "obj#280"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/FixedClockSource",
            "method": "requiresObjectEncoding",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/FixedClockSource",
            "method": "time",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/api/skyboxes/SkyboxType",
            "method": "get",
            "desc": "(Lnet/minecraft/resources/Identifier;)Ljava/util/Optional;",
            "value": "obj#298"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Fog",
            "method": "of",
            "desc": "()Lme/flashyreese/mods/nuit/components/Fog;",
            "value": "obj#301"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Fog",
            "method": "isModifyColors",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Fog",
            "method": "isModifyDensity",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Fog",
            "method": "getDensity",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Fog",
            "method": "isShowInDenseFog",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/skybox/decorations/DecorationBox",
            "method": "isSunEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/skybox/decorations/DecorationBox",
            "method": "isMoonEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/skybox/decorations/DecorationBox",
            "method": "isStarsEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/skybox/decorations/DecorationBox",
            "method": "isEndFlashEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/skybox/decorations/DecorationBox",
            "method": "getTexturesToRegister",
            "desc": "()Ljava/util/Collection;",
            "value": "obj#321"
          },
          {
            "class": "me/flashyreese/mods/nuit/api/skyboxes/Skybox",
            "method": "getLayer",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/runtime/source/ResolvedTimeSource",
            "method": "of",
            "desc": "(JLjava/lang/Object;)Lme/flashyreese/mods/nuit/components/clock/runtime/source/ResolvedTimeSource;",
            "value": "obj#327"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/runtime/source/ResolvedTimeSource",
            "method": "missing",
            "desc": "(Lme/flashyreese/mods/nuit/components/clock/ClockSource;)Lme/flashyreese/mods/nuit/components/clock/runtime/source/ResolvedTimeSource;",
            "value": "obj#328"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/runtime/source/ResolvedTimeSource",
            "method": "available",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/runtime/source/ResolvedTimeSource",
            "method": "ticks",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/clock/runtime/LevelClockState",
            "method": "warnedMissingSources",
            "desc": "()Ljava/util/Set;",
            "value": "obj#347"
          },
          {
            "class": "me/flashyreese/mods/nuit/components/Condition",
            "method": "excludes",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 2003
      },
      "verdict": "partly",
      "summary": "1 of 3 listening patch sites land on a Horizon hook (33%); of 7 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "optigui",
      "name": "OptiGUI",
      "version": "2.3.0-beta.11+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "opekope2/optigui/internal/InitializerKt::initialize"
        },
        {
          "kind": "client",
          "value": "opekope2/optigui/internal/selector/SelectorsKt::registerSelectors"
        },
        {
          "kind": "client",
          "value": "opekope2/optigui/internal/selector/SelectorsKt::registerLoadSelectors"
        },
        {
          "kind": "client",
          "value": "opekope2/optigui/registry/ContainerDefaultGuiTextureRegistry"
        },
        {
          "kind": "client",
          "value": "opekope2/optigui/internal/TextureReplacer"
        },
        {
          "kind": "client",
          "value": "opekope2/optigui/internal/FilterLoader"
        },
        {
          "kind": "client",
          "value": "opekope2/optigui/internal/interaction/InteractionHandler"
        }
      ],
      "mixin_configs": [
        "optigui.mixins.json"
      ],
      "depends": [],
      "classes": 144,
      "methods": 727,
      "sites": [
        {
          "mixin": "opekope2/optigui/mixin/BookEditScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/BookEditScreen"
          ],
          "handler": "setPageMixin",
          "kind": "inject",
          "method": "updatePageContent",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/BookEditScreen#updatePageContent RETURN"
        },
        {
          "mixin": "opekope2/optigui/mixin/BookViewScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/BookViewScreen"
          ],
          "handler": "setPageMixin",
          "kind": "inject",
          "method": "setPage",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/BookViewScreen#setPage RETURN"
        },
        {
          "mixin": "opekope2/optigui/mixin/BookViewScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/BookViewScreen"
          ],
          "handler": "goToNextPageMixin",
          "kind": "inject",
          "method": "pageForward",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/BookViewScreen#pageForward RETURN"
        },
        {
          "mixin": "opekope2/optigui/mixin/BookViewScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/BookViewScreen"
          ],
          "handler": "goToPreviousPageMixin",
          "kind": "inject",
          "method": "pageBack",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/BookViewScreen#pageBack RETURN"
        },
        {
          "mixin": "opekope2/optigui/mixin/GuiGraphicsExtractorMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "drawTextureMixin",
          "kind": "modify-variable",
          "method": "blit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "opekope2/optigui/mixin/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "setScreenMixin",
          "kind": "inject",
          "method": "setScreen",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#setScreen TAIL"
        },
        {
          "mixin": "opekope2/optigui/mixin/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "handleKeyPress",
          "kind": "inject",
          "method": "keyPressed",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#keyPressed TAIL"
        }
      ],
      "listening": 6,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/gui/Gui#setScreen @TAIL": 1,
        "net/minecraft/client/gui/screens/Screen#keyPressed @TAIL": 1,
        "net/minecraft/client/gui/screens/inventory/BookEditScreen#updatePageContent @RETURN": 1,
        "net/minecraft/client/gui/screens/inventory/BookViewScreen#pageBack @RETURN": 1,
        "net/minecraft/client/gui/screens/inventory/BookViewScreen#pageForward @RETURN": 1,
        "net/minecraft/client/gui/screens/inventory/BookViewScreen#setPage @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/client/gui/GuiGraphicsExtractor#blit @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 2
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "VersionComparisonOperator",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "VersionPredicate",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndLevelTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EventFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "IdentifiableResourceReloadListener",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceManagerHelper",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterExtract",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$BeforeExtract",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$BeforeInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "UseBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "UseEntityCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "UseItemCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 144,
        "features": {
          "events": 5,
          "mixin": 5
        },
        "events": [
          "Event",
          "EventFactory",
          "UseBlockCallback",
          "UseEntityCallback",
          "UseItemCallback"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 144,
        "methods": 478,
        "tried": 478,
        "completed": 133,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "java/io/StringWriter#append(C)Ljava/io/StringWriter;": 1,
          "java/lang/Number#intValue()I": 1,
          "java/time/LocalDate#now()Ljava/time/LocalDate;": 3,
          "java/util/Arrays#copyOf([CI)[C": 3,
          "java/util/Collection#add(Ljava/lang/Object;)Z": 2,
          "java/util/Collection#contains(Ljava/lang/Object;)Z": 2,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "java/util/Stack#pop()Ljava/lang/Object;": 1,
          "java/util/Stack#push(Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "kotlin/Pair#component1()Ljava/lang/Object;": 1,
          "kotlin/TuplesKt#to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;": 4,
          "kotlin/Unit#INSTANCE": 30,
          "kotlin/_Assertions#ENABLED": 1,
          "kotlin/collections/CollectionsKt#collectionSizeOrDefault(Ljava/lang/Iterable;I)I": 5,
          "kotlin/collections/SetsKt#emptySet()Ljava/util/Set;": 2,
          "kotlin/coroutines/intrinsics/IntrinsicsKt#getCOROUTINE_SUSPENDED()Ljava/lang/Object;": 15,
          "kotlin/jvm/functions/Function1#invoke(Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "kotlin/ranges/IntRange#getFirst()I": 1,
          "kotlin/sequences/SequencesKt#iterator(Lkotlin/jvm/functions/Function2;)Ljava/util/Iterator;": 5,
          "kotlin/sequences/SequencesKt#sequence(Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;": 10,
          "kotlin/text/Regex#getPattern()Ljava/lang/String;": 1,
          "kotlin/text/Regex#matchEntire(Ljava/lang/CharSequence;)Lkotlin/text/MatchResult;": 12,
          "kotlin/text/Regex#matches(Ljava/lang/CharSequence;)Z": 2,
          "kotlin/text/RegexOption#LITERAL": 1,
          "kotlin/text/StringsKt#split$default(Ljava/lang/CharSequence;[CZIILjava/lang/Object;)Ljava/util/List;": 4,
          "kotlin/text/StringsKt#startsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z": 2,
          "kotlin/text/StringsKt#toBooleanStrict(Ljava/lang/String;)Z": 2,
          "kotlin/text/StringsKt#trimStart(Ljava/lang/String;[C)Ljava/lang/String;": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientTickEvents#END_LEVEL_TICK": 1,
          "net/fabricmc/fabric/api/client/screen/v1/ScreenEvents#beforeExtract(Lnet/minecraft/client/gui/screens/Screen;)Lnet/fabricmc/fabric/api/event/Event;": 1,
          "net/fabricmc/fabric/api/event/Event#invoker()Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/event/player/UseBlockCallback#EVENT": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/fabricmc/loader/api/metadata/ModMetadata#containsCustomValue(Ljava/lang/String;)Z": 1,
          "net/minecraft/client/gui/components/toasts/ToastManager#getNotificationDisplayTimeMultiplier()D": 1,
          "net/minecraft/client/gui/screens/inventory/LecternScreen#getNumPages()I": 1,
          "net/minecraft/client/renderer/RenderPipelines#GUI_TEXTURED": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ENTITY_TYPE": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 1,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/resources/Identifier#getNamespace()Ljava/lang/String;": 1,
          "net/minecraft/resources/Identifier#getPath()Ljava/lang/String;": 3,
          "net/minecraft/resources/Identifier#hashCode()I": 1,
          "net/minecraft/resources/Identifier#tryParse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 4,
          "net/minecraft/server/packs/PackType#CLIENT_RESOURCES": 1,
          "net/minecraft/world/entity/player/Player#getVehicle()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/world/entity/player/Player#hashCode()I": 1,
          "net/minecraft/world/item/DyeColor#byName(Ljava/lang/String;Lnet/minecraft/world/item/DyeColor;)Lnet/minecraft/world/item/DyeColor;": 2,
          "net/minecraft/world/level/Level#getBiome(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/core/Holder;": 1,
          "net/minecraft/world/level/Level#isClientSide()Z": 2,
          "org/apache/commons/text/StringEscapeUtils#unescapeJava(Ljava/lang/String;)Ljava/lang/String;": 2,
          "org/slf4j/Logger#atLevel(Lorg/slf4j/event/Level;)Lorg/slf4j/spi/LoggingEventBuilder;": 2
        },
        "runs": [
          {
            "class": "opekope2/optigui/filter/NegationFilter$iterator$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#2"
          },
          {
            "class": "opekope2/optigui/resource/ChestFilterData$rawSelectorData$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#25"
          },
          {
            "class": "opekope2/optigui/resource/PlayerFilterData$rawSelectorData$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#33"
          },
          {
            "class": "opekope2/optigui/filter/RangeFilter",
            "method": "atLeast",
            "desc": "(I)Lopekope2/optigui/filter/RangeFilter;",
            "value": "obj#42"
          },
          {
            "class": "opekope2/optigui/filter/RangeFilter",
            "method": "atMost",
            "desc": "(I)Lopekope2/optigui/filter/RangeFilter;",
            "value": "obj#44"
          },
          {
            "class": "opekope2/optigui/filter/RangeFilter",
            "method": "between",
            "desc": "(II)Lopekope2/optigui/filter/RangeFilter;",
            "value": "obj#46"
          },
          {
            "class": "opekope2/optigui/util/NumberOrRange$Number",
            "method": "getValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/util/NumberOrRange$Number",
            "method": "toFilter",
            "desc": "()Lopekope2/optigui/filter/IFilter;",
            "value": "obj#51"
          },
          {
            "class": "opekope2/optigui/util/NumberOrRange$Number",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"0\""
          },
          {
            "class": "opekope2/optigui/internal/util/UtilKt",
            "method": "getDelimiters",
            "desc": "()[C",
            "value": "obj#14"
          },
          {
            "class": "opekope2/optigui/resource/OptiFineFilterData$rawSelectorData$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#72"
          },
          {
            "class": "opekope2/optigui/internal/TextureReplacer$InteractionHolder",
            "method": "getReplacementCache",
            "desc": "()Ljava/util/Map;",
            "value": "obj#116"
          },
          {
            "class": "opekope2/optigui/internal/TextureReplacer$InteractionHolder",
            "method": "prepare",
            "desc": "(Lnet/minecraft/resources/Identifier;Lopekope2/optigui/interaction/Interaction$Data;)Z",
            "value": "1"
          },
          {
            "class": "opekope2/optigui/resource/VillagerFilterData$rawSelectorData$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#159"
          },
          {
            "class": "opekope2/optigui/filter/PreProcessorFilter",
            "method": "nullGuarded",
            "desc": "(Lkotlin/jvm/functions/Function1;Ljava/lang/String;Ljava/lang/Object;Lopekope2/optigui/filter/IFilter;)Lopekope2/optigui/filter/PreProcessorFilter;",
            "value": "obj#169"
          },
          {
            "class": "opekope2/optigui/resource/TexturePathFilterData$rawSelectorData$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#181"
          },
          {
            "class": "opekope2/optigui/resource/VillagerFilterData$professionSelectors$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#201"
          },
          {
            "class": "opekope2/optigui/filter/PreProcessorFilter$Companion",
            "method": "nullGuarded",
            "desc": "(Lkotlin/jvm/functions/Function1;Ljava/lang/String;Ljava/lang/Object;Lopekope2/optigui/filter/IFilter;)Lopekope2/optigui/filter/PreProcessorFilter;",
            "value": "obj#207"
          },
          {
            "class": "opekope2/optigui/resource/LlamaFilterData$rawSelectorData$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#211"
          },
          {
            "class": "opekope2/optigui/filter/NegationFilter",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"opekope2.optigui.filter.NegationFilter\""
          },
          {
            "class": "opekope2/optigui/filter/ConditionalFilter$iterator$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#239"
          },
          {
            "class": "opekope2/optigui/util/NumberOrRange$Range",
            "method": "getStart",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/util/NumberOrRange$Range",
            "method": "toFilter",
            "desc": "()Lopekope2/optigui/filter/IFilter;",
            "value": "obj#247"
          },
          {
            "class": "opekope2/optigui/registry/ContainerDefaultGuiTextureRegistry",
            "method": "contains",
            "desc": "(Lnet/minecraft/resources/Identifier;)Z",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/resource/OptiFineFilterLoaderKt$createFilterData$2",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#258"
          },
          {
            "class": "opekope2/optigui/filter/ConjunctionFilter",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"opekope2.optigui.filter.ConjunctionFilter\""
          },
          {
            "class": "opekope2/optigui/internal/TextureReplacer",
            "method": "isReplacingTextures",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/internal/TextureReplacer",
            "method": "prepareInteraction",
            "desc": "(Lnet/minecraft/resources/Identifier;Lopekope2/optigui/interaction/Interaction$Data;)Z",
            "value": "1"
          },
          {
            "class": "opekope2/optigui/internal/FilterLoader",
            "method": "loadRawFilters",
            "desc": "(Lnet/minecraft/server/packs/resources/ResourceManager;Lorg/slf4j/Logger;)Ljava/util/List;",
            "value": "obj#327"
          },
          {
            "class": "opekope2/optigui/registry/SelectorRegistry$iterator$1",
            "method": "hasNext",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "opekope2/optigui/resource/OptiGuiFilterLoader$FilterData$rawSelectorData$1$1",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/registry/SelectorRegistry",
            "method": "tryRegister",
            "desc": "(Ljava/lang/String;Lopekope2/optigui/selector/ISelector;)Z",
            "value": "1"
          },
          {
            "class": "opekope2/optigui/registry/SelectorRegistry",
            "method": "contains",
            "desc": "(Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "opekope2/optigui/registry/SelectorRegistry",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#500"
          },
          {
            "class": "opekope2/optigui/filter/ContainingFilter",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"opekope2.optigui.filter.ContainingFilter\""
          },
          {
            "class": "opekope2/optigui/internal/interaction/BookExtraProperties",
            "method": "getCurrentPage",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/internal/interaction/BookExtraProperties",
            "method": "getPageCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/interaction/Interaction$Data",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/filter/RangeFilter$Companion",
            "method": "atLeast",
            "desc": "(I)Lopekope2/optigui/filter/RangeFilter;",
            "value": "obj#620"
          },
          {
            "class": "opekope2/optigui/filter/RangeFilter$Companion",
            "method": "atMost",
            "desc": "(I)Lopekope2/optigui/filter/RangeFilter;",
            "value": "obj#623"
          },
          {
            "class": "opekope2/optigui/filter/RangeFilter$Companion",
            "method": "between",
            "desc": "(II)Lopekope2/optigui/filter/RangeFilter;",
            "value": "obj#626"
          },
          {
            "class": "opekope2/optigui/registry/LoadSelectorRegistry",
            "method": "tryRegister",
            "desc": "(Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Z",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/registry/LoadSelectorRegistry",
            "method": "contains",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/registry/LoadSelectorRegistry",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#636"
          },
          {
            "class": "opekope2/optigui/filter/FirstMatchFilter",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"opekope2.optigui.filter.FirstMatchFilter\""
          },
          {
            "class": "opekope2/optigui/filter/InputNullGuardFilter$iterator$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#646"
          },
          {
            "class": "opekope2/optigui/interaction/Interaction",
            "method": "copy",
            "desc": "(Lnet/minecraft/resources/Identifier;Lnet/minecraft/resources/Identifier;Lnet/minecraft/client/gui/screens/Screen;Lopekope2/optigui/interaction/Interaction$Data;)Lopekope2/optigui/interaction/Interaction;",
            "value": "obj#679"
          },
          {
            "class": "opekope2/optigui/interaction/Interaction",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/resource/BeaconFilterData$rawSelectorData$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#685"
          },
          {
            "class": "opekope2/optigui/registry/FilterLoaderRegistry",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#693"
          },
          {
            "class": "opekope2/optigui/internal/filter/ContainerMapFilter",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"opekope2.optigui.internal.filter.ContainerMapFilter\""
          },
          {
            "class": "opekope2/optigui/resource/OptiGuiFilterLoader$FilterData",
            "method": "getPriority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/resource/OptiGuiFilterLoader$FilterData",
            "method": "getRawSelectorData",
            "desc": "()Ljava/lang/Iterable;",
            "value": "obj#706"
          },
          {
            "class": "opekope2/optigui/filter/PreProcessorFilter$iterator$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#711"
          },
          {
            "class": "opekope2/optigui/filter/PostProcessorFilter$iterator$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#748"
          },
          {
            "class": "opekope2/optigui/filter/DisjunctionFilter",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"opekope2.optigui.filter.DisjunctionFilter\""
          },
          {
            "class": "opekope2/optigui/registry/LoadSelectorRegistry$iterator$1",
            "method": "hasNext",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "opekope2/optigui/util/TreeFormatter",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "opekope2/optigui/resource/IRawFilterData",
            "method": "getPriority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "opekope2/optigui/resource/OptiFineFilterLoaderKt$createFilterData$1",
            "method": "create",
            "desc": "(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#853"
          },
          {
            "class": "opekope2/optigui/registry/RetexturableScreenRegistry",
            "method": "contains",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Z",
            "value": "0"
          }
        ],
        "insns": 8689
      },
      "verdict": "no",
      "summary": "none of its 7 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "packetfixer",
      "name": "Packet Fixer",
      "version": "3.3.6",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "dev/tonimatas/packetfixer/fabric/PacketFixerFabric"
        }
      ],
      "mixin_configs": [
        "packetfixer.mixins.json",
        "packetfixer.fabric.mixins.json"
      ],
      "depends": [],
      "classes": 29,
      "methods": 97,
      "sites": [
        {
          "mixin": "dev/tonimatas/packetfixer/fabric/mixins/PayloadHelperMixin",
          "targets": [
            "net/fabricmc/fabric/impl/networking/payload/PayloadHelper"
          ],
          "handler": "packetfixer$newSize",
          "kind": "inject",
          "method": "assertSize",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/fabricmc/fabric/impl/networking/payload/PayloadHelper#assertSize HEAD"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ClientboundCustomPayloadPacketMixin",
          "targets": [
            "net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "lambda$static$0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ClientboundCustomPayloadPacketMixin",
          "targets": [
            "net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket"
          ],
          "handler": "packetfixer$newSize$2",
          "kind": "modify-constant",
          "method": "lambda$static$2",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ClientboundCustomQueryPacketMixin",
          "targets": [
            "net/minecraft/network/protocol/login/ClientboundCustomQueryPacket"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "readUnknownPayload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ClientboundCustomQueryPacketMixin",
          "targets": [
            "net/minecraft/network/protocol/login/ClientboundCustomQueryPacket"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "readUnknownPayload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ClientboundLevelChunkPacketDataMixin",
          "targets": [
            "net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "<clinit>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/CompressionDecoderMixin",
          "targets": [
            "net/minecraft/network/CompressionDecoder"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "decode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/CompressionEncoderMixin",
          "targets": [
            "net/minecraft/network/CompressionEncoder"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "encode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ConnectionMixin",
          "targets": [
            "net/minecraft/network/Connection$1"
          ],
          "handler": "packetfixer$newTimeout",
          "kind": "modify-constant",
          "method": "initChannel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/FriendlyByteBufMixin",
          "targets": [
            "net/minecraft/network/FriendlyByteBuf"
          ],
          "handler": "packetfixer$readUtf$newSize",
          "kind": "modify-constant",
          "method": "readUtf",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/FriendlyByteBufMixin",
          "targets": [
            "net/minecraft/network/FriendlyByteBuf"
          ],
          "handler": "packetfixer$writeUtf$newSize",
          "kind": "modify-constant",
          "method": "writeUtf",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/FriendlyByteBufMixin",
          "targets": [
            "net/minecraft/network/FriendlyByteBuf"
          ],
          "handler": "packetfixer$readResourceLocation$newSize",
          "kind": "modify-constant",
          "method": "readIdentifier",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "packetfixer$playerIdleTimeout",
          "kind": "redirect",
          "method": "playerIdleTimeout",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/server/MinecraftServer;playerIdleTimeout:I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/NbtAccounterMixin",
          "targets": [
            "net/minecraft/nbt/NbtAccounter"
          ],
          "handler": "packetfixer$newSize",
          "kind": "redirect",
          "method": "accountBytes",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/nbt/NbtAccounter;quota:J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/NbtAccounterMixin",
          "targets": [
            "net/minecraft/nbt/NbtAccounter"
          ],
          "handler": "packetfixer$defaultQuota$newSize",
          "kind": "modify-constant",
          "method": "defaultQuota",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ServerCommonPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerCommonPacketListenerImpl"
          ],
          "handler": "packetfixer$tick$1",
          "kind": "modify-constant",
          "method": "keepConnectionAlive",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ServerCommonPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerCommonPacketListenerImpl"
          ],
          "handler": "packetfixer$checkIfClosed",
          "kind": "modify-constant",
          "method": "checkIfClosed",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ServerConnectionListenerMixin",
          "targets": [
            "net/minecraft/server/network/ServerConnectionListener$1"
          ],
          "handler": "packetfixer$newTimeout",
          "kind": "modify-constant",
          "method": "initChannel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ServerLoginPacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerLoginPacketListenerImpl"
          ],
          "handler": "packetfixer$tick",
          "kind": "modify-constant",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ServerboundCustomPayloadPacketMixin",
          "targets": [
            "net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "lambda$static$0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ServerboundCustomQueryPacketMixin",
          "targets": [
            "net/minecraft/network/protocol/login/ServerboundCustomQueryAnswerPacket"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "readUnknownPayload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/ServerboundCustomQueryPacketMixin",
          "targets": [
            "net/minecraft/network/protocol/login/ServerboundCustomQueryAnswerPacket"
          ],
          "handler": "packetfixer$newMessage",
          "kind": "modify-constant",
          "method": "readUnknownPayload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/VarIntMixin",
          "targets": [
            "net/minecraft/network/VarInt"
          ],
          "handler": "packetfixer$getByteSize$newSize",
          "kind": "modify-constant",
          "method": "getByteSize",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/VarIntMixin",
          "targets": [
            "net/minecraft/network/VarInt"
          ],
          "handler": "packetfixer$read$newSize",
          "kind": "modify-constant",
          "method": "read",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/VarIntMixin",
          "targets": [
            "net/minecraft/network/VarInt"
          ],
          "handler": "packetfixer$read$newSize",
          "kind": "modify-constant",
          "method": "read",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/VarLongMixin",
          "targets": [
            "net/minecraft/network/VarLong"
          ],
          "handler": "packetfixer$getByteSize$newSize",
          "kind": "modify-constant",
          "method": "getByteSize",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/VarLongMixin",
          "targets": [
            "net/minecraft/network/VarLong"
          ],
          "handler": "packetfixer$read$newSize",
          "kind": "modify-constant",
          "method": "read",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/VarLongMixin",
          "targets": [
            "net/minecraft/network/VarLong"
          ],
          "handler": "packetfixer$read$newSize",
          "kind": "modify-constant",
          "method": "read",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/Varint21FrameDecoderMixin",
          "targets": [
            "net/minecraft/network/Varint21FrameDecoder"
          ],
          "handler": "packetfixer$checkSize",
          "kind": "inject",
          "method": "decode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/Varint21FrameDecoder#decode HEAD"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/Varint21FrameDecoderMixin",
          "targets": [
            "net/minecraft/network/Varint21FrameDecoder"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "copyVarint",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "dev/tonimatas/packetfixer/mixins/Varint21LengthFieldPrependerMixin",
          "targets": [
            "net/minecraft/network/Varint21LengthFieldPrepender"
          ],
          "handler": "packetfixer$newSize",
          "kind": "modify-constant",
          "method": "encode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        }
      ],
      "listening": 2,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/fabricmc/fabric/impl/networking/payload/PayloadHelper#assertSize @HEAD": 1,
        "net/minecraft/network/Varint21FrameDecoder#decode @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/nbt/NbtAccounter#defaultQuota @HEAD (modify-constant)": 1,
        "net/minecraft/nbt/NbtAccounter#quota:J @FIELD (redirect)": 1,
        "net/minecraft/network/CompressionDecoder#decode @HEAD (modify-constant)": 1,
        "net/minecraft/network/CompressionEncoder#encode @HEAD (modify-constant)": 1,
        "net/minecraft/network/Connection$1#initChannel @HEAD (modify-constant)": 1,
        "net/minecraft/network/FriendlyByteBuf#readIdentifier @HEAD (modify-constant)": 1,
        "net/minecraft/network/FriendlyByteBuf#readUtf @HEAD (modify-constant)": 1,
        "net/minecraft/network/FriendlyByteBuf#writeUtf @HEAD (modify-constant)": 1,
        "net/minecraft/network/VarInt#getByteSize @HEAD (modify-constant)": 1,
        "net/minecraft/network/VarInt#read @HEAD (modify-constant)": 2,
        "net/minecraft/network/VarLong#getByteSize @HEAD (modify-constant)": 1,
        "net/minecraft/network/VarLong#read @HEAD (modify-constant)": 2,
        "net/minecraft/network/Varint21FrameDecoder#copyVarint @HEAD (modify-constant)": 1,
        "net/minecraft/network/Varint21LengthFieldPrepender#encode @HEAD (modify-constant)": 1,
        "net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket#lambda$static$0 @HEAD (modify-constant)": 1,
        "net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket#lambda$static$2 @HEAD (modify-constant)": 1,
        "net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket#lambda$static$0 @HEAD (modify-constant)": 1,
        "net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData#<clinit> @HEAD (modify-constant)": 1,
        "net/minecraft/network/protocol/login/ClientboundCustomQueryPacket#readUnknownPayload @HEAD (modify-constant)": 2,
        "net/minecraft/network/protocol/login/ServerboundCustomQueryAnswerPacket#readUnknownPayload @HEAD (modify-constant)": 2,
        "net/minecraft/server/MinecraftServer#playerIdleTimeout:I @FIELD (redirect)": 1,
        "net/minecraft/server/network/ServerCommonPacketListenerImpl#checkIfClosed @HEAD (modify-constant)": 1,
        "net/minecraft/server/network/ServerCommonPacketListenerImpl#keepConnectionAlive @HEAD (modify-constant)": 1,
        "net/minecraft/server/network/ServerConnectionListener$1#initChannel @HEAD (modify-constant)": 1,
        "net/minecraft/server/network/ServerLoginPacketListenerImpl#tick @HEAD (modify-constant)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 29,
        "features": {
          "mixin": 19
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 29,
        "methods": 30,
        "tried": 30,
        "completed": 20,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "java/io/File#exists()Z": 2,
          "java/io/File#toPath()Ljava/nio/file/Path;": 1,
          "java/util/Properties#getProperty(Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/util/ServiceLoader#load(Ljava/lang/Class;)Ljava/util/ServiceLoader;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1
        },
        "runs": [
          {
            "class": "architectury_inject_PacketFixer_common_c536fb86fb1d455e8484976b71b0bb52_dc61d5666d628c7679f37e580802b3d399a82ad542982d483691678d96c9e08fPacketFixercommon336devjar/PlatformMethods",
            "method": "getCurrentTarget",
            "desc": "()Ljava/lang/String;",
            "value": "\"fabric\""
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getNbtMaxSize",
            "desc": "()J",
            "value": "-1"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getPacketSize",
            "desc": "()I",
            "value": "2147483647"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getDecoderSize",
            "desc": "()I",
            "value": "2147483647"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getVarInt21Size",
            "desc": "()I",
            "value": "2147483647"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getVarIntSize",
            "desc": "()I",
            "value": "1073741822"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getVarLong",
            "desc": "()I",
            "value": "1073741822"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getStringSize",
            "desc": "()I",
            "value": "327670000"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getChunkPacketData",
            "desc": "()I",
            "value": "2147483647"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getReadTimeout",
            "desc": "()I",
            "value": "120"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getLoginTimeout",
            "desc": "()I",
            "value": "120"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getKeepAliveTimeout",
            "desc": "()I",
            "value": "120"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "getPlayerIdleTimeout",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tonimatas/packetfixer/util/Config",
            "method": "isForceUnlimitedNbtEnabled",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 160
      },
      "verdict": "no",
      "summary": "none of its 31 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "paginatedadvancements",
      "name": "Paginated Advancements",
      "version": "2.9.0+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "de/dafuqs/paginatedadvancements/PaginatedAdvancementsClient"
        },
        {
          "kind": "modmenu",
          "value": "de/dafuqs/paginatedadvancements/config/ModMenuConfig"
        }
      ],
      "mixin_configs": [
        "paginatedadvancements.mixins.json"
      ],
      "depends": [
        "cloth-config"
      ],
      "classes": 19,
      "methods": 181,
      "sites": [
        {
          "mixin": "de/dafuqs/paginatedadvancements/mixin/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "paginatedAdvancements$modifyAdvancementsScreen",
          "kind": "modify-variable",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        }
      ],
      "listening": 0,
      "accessors": 10,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/gui/Gui#setScreen @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 19,
        "features": {
          "screen": 3,
          "mixin": 2
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 19,
        "methods": 101,
        "tried": 101,
        "completed": 40,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lde/dafuqs/paginatedadvancements/config/PaginatedAdvancementsConfig$DebugInfoSetting;#clone()Ljava/lang/Object;": 1,
          "de/dafuqs/paginatedadvancements/config/PaginatedAdvancementsConfig$DebugInfoSetting#ordinal()I": 1,
          "net/minecraft/advancements/AdvancementNode#advancement()Lnet/minecraft/advancements/Advancement;": 1,
          "net/minecraft/advancements/AdvancementNode#root()Lnet/minecraft/advancements/AdvancementNode;": 2,
          "net/minecraft/advancements/AdvancementNode#x()F": 1,
          "net/minecraft/client/gui/screens/advancements/AdvancementTabType#ABOVE": 1,
          "net/minecraft/client/gui/screens/advancements/AdvancementWidgetType#OBTAINED": 1,
          "net/minecraft/client/gui/screens/advancements/AdvancementWidgetType#frameSprite(Lnet/minecraft/advancements/AdvancementType;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/client/input/MouseButtonEvent#button()I": 2,
          "net/minecraft/client/multiplayer/ClientAdvancements#progress()Ljava/util/Map;": 1,
          "net/minecraft/client/multiplayer/ClientAdvancements#setListener(Lnet/minecraft/client/multiplayer/ClientAdvancements$Listener;)V": 2,
          "net/minecraft/client/multiplayer/ClientAdvancements#tree()Lnet/minecraft/advancements/AdvancementTree;": 1,
          "net/minecraft/locale/Language#getInstance()Lnet/minecraft/locale/Language;": 2,
          "net/minecraft/network/chat/Style#EMPTY": 1,
          "net/minecraft/resources/Identifier#toString()Ljava/lang/String;": 5
        },
        "runs": [
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementTabType",
            "method": "getTabY",
            "desc": "()I",
            "value": "-28"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PinnedAdvancementTabType",
            "method": "getTabX",
            "desc": "()I",
            "value": "-4"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementFrame",
            "method": "getItemOffsetX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementFrame",
            "method": "getItemOffsetY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementScreen",
            "method": "isPaginated",
            "desc": "(II)Z",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementScreen",
            "method": "isClickOnBackTab",
            "desc": "(DDII)Z",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementScreen",
            "method": "isClickOnForwardTab",
            "desc": "(DDII)Z",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementScreen",
            "method": "mouseScrolled",
            "desc": "(DDDD)Z",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/frames/FrameWrapper$VanillaFrameWrapper",
            "method": "getItemOffsetX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/frames/FrameWrapper$VanillaFrameWrapper",
            "method": "getItemOffsetY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementWidget",
            "method": "getDebugScrollAmount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementScreen$AdvancementLayout",
            "method": "x",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementScreen$AdvancementLayout",
            "method": "y",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementTab",
            "method": "getIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementTab",
            "method": "scrollDebug",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementTab",
            "method": "getPaginatedDisplayedPosition",
            "desc": "(II)I",
            "value": "1"
          },
          {
            "class": "de/dafuqs/paginatedadvancements/client/PaginatedAdvancementTab",
            "method": "getPinIndex",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 664
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "particle_core",
      "name": "Particle Core",
      "version": "0.3.3+fix1+26.2",
      "license": "MIT License",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/fzzyhmstrs/particle_core/PcConfig"
        }
      ],
      "mixin_configs": [
        "particle_core.mixins.json"
      ],
      "depends": [
        "fzzy_config"
      ],
      "classes": 50,
      "methods": 292,
      "sites": [
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ClientLevelDecreaseMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "particle_core_reduceParticleSpawnType",
          "kind": "wrap-operation",
          "method": "calculateParticleLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/OptionInstance;get()Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/FireworksSparkParticleMixin",
          "targets": [
            "net/minecraft/client/particle/FireworkParticles$Starter"
          ],
          "handler": "particle_core_handleParticleNullability",
          "kind": "wrap-operation",
          "method": "createParticle",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/ParticleEngine;createParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)Lnet/minecraft/client/particle/Particle;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "particle_core_turnOffPotionParticles",
          "kind": "wrap-with-condition",
          "method": "tickEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleBrightnessCacheMixin",
          "targets": [
            "net/minecraft/client/particle/Particle"
          ],
          "handler": "particle_core_getCachedBrightness",
          "kind": "wrap-operation",
          "method": "getLightCoords",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/LightCoordsUtil;getLightCoords(Lnet/minecraft/world/level/BlockAndLightGetter;Lnet/minecraft/core/BlockPos;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleEngineAsyncMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "particle_core_setupSynchronizedParticleMap",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "com/google/common/collect/Maps.newIdentityHashMap ()Ljava/util/IdentityHashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleEngineAsyncMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "particle_core_synchronizeParticleAdds",
          "kind": "wrap-operation",
          "method": "add",
          "at": "INVOKE",
          "at_target": "java/util/Queue.add (Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleEngineAsyncMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "particle_core_asyncParticleTicking",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "java/util/Map.forEach (Ljava/util/function/BiConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleEngineCachedLightMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "particle_core_clearCache",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#tick HEAD"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleEngineFrustumMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "particle_core_setupBlacklistForParticle",
          "kind": "inject",
          "method": "createParticle",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#createParticle RETURN"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleEngineRenderDistanceMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "particle_core_setupViewDistance",
          "kind": "inject",
          "method": "extract",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#extract HEAD"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleEngineTypeMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "particle_core_excludeAndChanceParticles",
          "kind": "inject",
          "method": "createParticle",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#createParticle HEAD"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleGroupBrightnessTickMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleGroup"
          ],
          "handler": "particle_core_tickParticleLightUpdates",
          "kind": "wrap-operation",
          "method": "tickParticle",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/particle/Particle.tick ()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleGroupCachedPosMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleGroup"
          ],
          "handler": "particle_core_tickParticlePositions",
          "kind": "wrap-operation",
          "method": "tickParticle",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/particle/Particle.tick ()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleGroupCountMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleGroup"
          ],
          "handler": "particle_core_modifyParticleMaxCount",
          "kind": "modify-constant",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleGroupFrustumMixin",
          "targets": [
            "net/minecraft/client/particle/QuadParticleGroup"
          ],
          "handler": "particle_core_cullParticles",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/culling/Frustum;pointInFrustum(DDD)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleGroupRenderDistanceMixin",
          "targets": [
            "net/minecraft/client/particle/QuadParticleGroup"
          ],
          "handler": "particle_core_buildGeoIfWithinRenderDistance",
          "kind": "wrap-with-condition",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/particle/SingleQuadParticle.extract (Lnet/minecraft/client/renderer/state/level/QuadParticleRenderState;Lnet/minecraft/client/Camera;F)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/fzzyhmstrs/particle_core/mixins/ParticleMoveAdjustMixin",
          "targets": [
            "net/minecraft/client/particle/Particle"
          ],
          "handler": "particle_core_optimizeOpenAirParticleCollisions",
          "kind": "wrap-operation",
          "method": "move",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;collideBoundingBox(Lnet/minecraft/world/phys/shapes/CollisionContext;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/AABB;Lnet/minecraft/world/level/Level;Ljava/util/List;)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 4,
      "accessors": 10,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/particle/ParticleEngine#createParticle @HEAD": 1,
        "net/minecraft/client/particle/ParticleEngine#createParticle @RETURN": 1,
        "net/minecraft/client/particle/ParticleEngine#extract @HEAD": 1,
        "net/minecraft/client/particle/ParticleEngine#tick @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/OptionInstance#get @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/particle/ParticleEngine#<init> @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/particle/ParticleEngine#add @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/particle/ParticleEngine#createParticle @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/particle/ParticleEngine#tick @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/particle/ParticleGroup#<init> @HEAD (modify-constant)": 1,
        "net/minecraft/client/particle/ParticleGroup#tickParticle @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/particle/QuadParticleGroup#extractRenderState @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/culling/Frustum#pointInFrustum @INVOKE (wrap-operation)": 1,
        "net/minecraft/util/LightCoordsUtil#getLightCoords @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/Entity#collideBoundingBox @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/Level#addParticle @INVOKE (wrap-with-condition)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 50,
        "features": {
          "mixin": 21
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 50,
        "methods": 179,
        "tried": 179,
        "completed": 58,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "java/lang/Object#clone()Ljava/lang/Object;": 3,
          "java/util/Collection#add(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#clear()V": 1,
          "java/util/Collection#contains(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#containsAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#forEach(Ljava/util/function/Consumer;)V": 1,
          "java/util/Collection#parallelStream()Ljava/util/stream/Stream;": 1,
          "java/util/Collection#remove(Ljava/lang/Object;)Z": 1,
          "java/util/Collection#removeAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#removeIf(Ljava/util/function/Predicate;)Z": 1,
          "java/util/Collection#retainAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#spliterator()Ljava/util/Spliterator;": 1,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collection#toArray()[Ljava/lang/Object;": 1,
          "java/util/Collection#toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;": 1,
          "java/util/Collection#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 1,
          "java/util/Collection#toString()Ljava/lang/String;": 1,
          "java/util/IdentityHashMap#clear()V": 1,
          "java/util/IdentityHashMap#compute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#computeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#containsKey(Ljava/lang/Object;)Z": 1,
          "java/util/IdentityHashMap#containsValue(Ljava/lang/Object;)Z": 1,
          "java/util/IdentityHashMap#entrySet()Ljava/util/Set;": 1,
          "java/util/IdentityHashMap#equals(Ljava/lang/Object;)Z": 1,
          "java/util/IdentityHashMap#forEach(Ljava/util/function/BiConsumer;)V": 1,
          "java/util/IdentityHashMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#hashCode()I": 1,
          "java/util/IdentityHashMap#isEmpty()Z": 1,
          "java/util/IdentityHashMap#keySet()Ljava/util/Set;": 1,
          "java/util/IdentityHashMap#merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#putAll(Ljava/util/Map;)V": 1,
          "java/util/IdentityHashMap#putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#remove(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#remove(Ljava/lang/Object;Ljava/lang/Object;)Z": 1,
          "java/util/IdentityHashMap#replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/IdentityHashMap#replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z": 1,
          "java/util/IdentityHashMap#replaceAll(Ljava/util/function/BiFunction;)V": 1,
          "java/util/IdentityHashMap#size()I": 1,
          "java/util/IdentityHashMap#toString()Ljava/lang/String;": 1,
          "java/util/IdentityHashMap#values()Ljava/util/Collection;": 1,
          "java/util/concurrent/ConcurrentHashMap#size()I": 1,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#description(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#descriptionKey()Ljava/lang/String;": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#descriptionOrNull(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#hasDescription()Z": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#hasPrefix()Z": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#hasTranslation()Z": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#prefix(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#prefixKey()Ljava/lang/String;": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#prefixOrNull(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#translation(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#translationKey()Ljava/lang/String;": 3,
          "me/fzzyhmstrs/fzzy_config/util/EnumTranslatable#translationOrNull(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 3,
          "me/fzzyhmstrs/fzzy_config/util/TriState#DEFAULT": 1,
          "me/fzzyhmstrs/fzzy_config/validation/misc/ValidatedEnum#get()Ljava/lang/Object;": 3,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/client/particle/Particle#getBoundingBox()Lnet/minecraft/world/phys/AABB;": 1,
          "net/minecraft/client/particle/ParticleGroup#tickParticles()V": 1,
          "net/minecraft/core/BlockPos#containing(DDD)Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/Cursor3D#advance()Z": 2,
          "net/minecraft/core/SectionPos#blockToSectionCoord(I)I": 1,
          "net/minecraft/core/registries/BuiltInRegistries#PARTICLE_TYPE": 2,
          "net/minecraft/server/level/ParticleStatus#ALL": 1,
          "net/minecraft/util/LightCoordsUtil#getLightCoords(Lnet/minecraft/world/level/BlockAndLightGetter;Lnet/minecraft/core/BlockPos;)I": 1,
          "net/minecraft/util/LightCoordsUtil$BrightnessGetter#DEFAULT": 1,
          "net/minecraft/world/phys/Vec3#distanceToSqr(DDD)D": 1
        },
        "runs": [
          {
            "class": "me/fzzyhmstrs/particle_core/mixins/ParticleEngineCachedLightMixin",
            "method": "particle_core_getCache",
            "desc": "()Ljava/util/concurrent/ConcurrentHashMap;",
            "value": "obj#1"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcConfig$PotionDisableType",
            "method": "getFlags",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcConfig$PotionDisableType",
            "method": "prefix",
            "desc": "()Ljava/lang/String;",
            "value": "\"particle_core.particle_core_config\""
          },
          {
            "class": "me/fzzyhmstrs/particle_core/interfaces/TickResult",
            "method": "failure",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcConfig$CullingBehavior",
            "method": "prefix",
            "desc": "()Ljava/lang/String;",
            "value": "\"particle_core.particle_core_config\""
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcConfig$CullingBehavior$AGGRESSIVE",
            "method": "pass",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcConfig$CullingBehavior$AGGRESSIVE",
            "method": "shouldKeep",
            "desc": "(Lnet/minecraft/client/renderer/culling/Frustum;Lnet/minecraft/client/particle/Particle;)Z",
            "value": "1"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/mixins/ParticleFrustumBlacklistMixin",
            "method": "particle_core_isBlacklisted",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/SynchronizedIdentityHashMap$SynchronizedCollection",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/SynchronizedIdentityHashMap$SynchronizedCollection",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcDisable$DisabledOptimizations",
            "method": "shouldDisableMixin",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcConfig$DeprecatedType",
            "method": "prefix",
            "desc": "()Ljava/lang/String;",
            "value": "\"particle_core.particle_core_config\""
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcConfig$CullingBehavior$NO_CULLING",
            "method": "pass",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcConfig$CullingBehavior$NO_CULLING",
            "method": "shouldKeep",
            "desc": "(Lnet/minecraft/client/renderer/culling/Frustum;Lnet/minecraft/client/particle/Particle;)Z",
            "value": "0"
          },
          {
            "class": "me/fzzyhmstrs/particle_core/PcConfig$CullingBehavior$BOUNDING_BOX",
            "method": "pass",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 1611
      },
      "verdict": "no",
      "summary": "none of its 17 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "particlerain",
      "name": "Particle Rain",
      "version": "4.0.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "pigcart/particlerain/loaders/fabric/FabricEntrypoint"
        },
        {
          "kind": "modmenu",
          "value": "pigcart/particlerain/loaders/fabric/ModMenuEntrypoint"
        }
      ],
      "mixin_configs": [
        "particlerain.mixins.json"
      ],
      "depends": [],
      "classes": 115,
      "methods": 459,
      "sites": [
        {
          "mixin": "pigcart/particlerain/mixin/WeatherDataMixin",
          "targets": [
            "net/minecraft/world/level/saveddata/WeatherData"
          ],
          "handler": "hookSetRaining",
          "kind": "inject",
          "method": "setRaining",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/saveddata/WeatherData#setRaining HEAD"
        },
        {
          "mixin": "pigcart/particlerain/mixin/fabric/RegistrySyncManagerMixin",
          "targets": [
            "net/fabricmc/fabric/impl/registry/sync/RegistrySyncManager"
          ],
          "handler": "configureClient",
          "kind": "inject",
          "method": "configureClient",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/fabricmc/fabric/impl/registry/sync/RegistrySyncManager#configureClient HEAD"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "hookDoAnimateTick",
          "kind": "inject",
          "method": "doAnimateTick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#doAnimateTick TAIL"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "overridePrecipitation",
          "kind": "wrap-operation",
          "method": "tickWeatherEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;getPrecipitationAt(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/biome/Biome$Precipitation;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "hookWeatherSounds",
          "kind": "inject",
          "method": "tickWeatherEffects",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;rainSoundTime:I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickWeatherEffects FIELD"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "alterHeightmapPos",
          "kind": "wrap-operation",
          "method": "tickWeatherEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;getHeightmapPos(Lnet/minecraft/world/level/levelgen/Heightmap$Types;Lnet/minecraft/core/BlockPos;)Lnet/minecraft/core/BlockPos;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "adjustRainVolume",
          "kind": "wrap-operation",
          "method": "tickWeatherEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;playLocalSound(Lnet/minecraft/core/BlockPos;Lnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "tickRainParticles",
          "kind": "wrap-operation",
          "method": "tickWeatherEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/OptionInstance;get()Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/ParticleEngineMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "clearParticles",
          "kind": "inject",
          "method": "clearParticles",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#clearParticles HEAD"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/ParticleEngineMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "onParticleSpawnCanceled",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/Particle;getParticleLimit()Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#tick INVOKE"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/SpriteLoaderMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteLoader"
          ],
          "handler": "stitch",
          "kind": "inject",
          "method": "stitch",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteLoader#stitch HEAD"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/WeatherEffectRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/WeatherEffectRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/WeatherEffectRenderer#extractRenderState HEAD"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/WeatherEffectRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/WeatherEffectRenderer"
          ],
          "handler": "cancelAddRainColumn",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "pigcart/particlerain/mixin/render/WeatherEffectRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/WeatherEffectRenderer"
          ],
          "handler": "cancelAddSnowColumn",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "pigcart/particlerain/mixin/tint/DripParticleMixin",
          "targets": [
            "net/minecraft/client/particle/DripParticle$WaterFallProvider",
            "net/minecraft/client/particle/DripParticle$WaterHangProvider",
            "net/minecraft/client/particle/DripParticle$DripstoneWaterFallProvider",
            "net/minecraft/client/particle/DripParticle$DripstoneWaterHangProvider"
          ],
          "handler": "createParticle",
          "kind": "inject",
          "method": "createParticle",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/DripParticle$WaterFallProvider#createParticle TAIL"
        },
        {
          "mixin": "pigcart/particlerain/mixin/tint/WaterDropParticleMixin",
          "targets": [
            "net/minecraft/client/particle/WaterDropParticle"
          ],
          "handler": "pickSprite",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/WaterDropParticle#<init> TAIL"
        }
      ],
      "listening": 8,
      "accessors": 14,
      "hooks": {},
      "wanted": {
        "net/fabricmc/fabric/impl/registry/sync/RegistrySyncManager#configureClient @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#doAnimateTick @TAIL": 1,
        "net/minecraft/client/particle/DripParticle$WaterFallProvider#createParticle @TAIL": 1,
        "net/minecraft/client/particle/ParticleEngine#clearParticles @HEAD": 1,
        "net/minecraft/client/particle/WaterDropParticle#<init> @TAIL": 1,
        "net/minecraft/client/renderer/WeatherEffectRenderer#extractRenderState @HEAD": 1,
        "net/minecraft/client/renderer/texture/SpriteLoader#stitch @HEAD": 1,
        "net/minecraft/world/level/saveddata/WeatherData#setRaining @HEAD": 1
      },
      "wanted_calls": {
        "java/util/List#add @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/OptionInstance#get @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#getHeightmapPos @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#getPrecipitationAt @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#playLocalSound @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#tickWeatherEffects @FIELD": 1,
        "net/minecraft/client/particle/ParticleEngine#tick @INVOKE": 1
      },
      "api": [
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricParticleTypes",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry$PendingParticleProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceManagerHelper",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "SimpleSynchronousResourceReloadListener",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 115,
        "features": {
          "screen": 8,
          "particle": 4,
          "command": 1,
          "events": 1,
          "mixin": 16
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 115,
        "methods": 213,
        "tried": 213,
        "completed": 24,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lpigcart/particlerain/config/ParticleData$FadeType;#clone()Ljava/lang/Object;": 1,
          "[Lpigcart/particlerain/config/ParticleData$ParticleStyle;#clone()Ljava/lang/Object;": 1,
          "[Lpigcart/particlerain/config/ParticleData$RenderType;#clone()Ljava/lang/Object;": 1,
          "[Lpigcart/particlerain/config/ParticleData$RotationType;#clone()Ljava/lang/Object;": 1,
          "[Lpigcart/particlerain/config/ParticleData$SpawnPos;#clone()Ljava/lang/Object;": 1,
          "[Lpigcart/particlerain/config/ParticleData$TintType;#clone()Ljava/lang/Object;": 1,
          "[Lpigcart/particlerain/config/ParticleData$Weather;#clone()Ljava/lang/Object;": 1,
          "com/google/gson/Gson#fromJson(Ljava/io/Reader;Lcom/google/gson/reflect/TypeToken;)Ljava/lang/Object;": 1,
          "com/google/gson/JsonElement#getAsString()Ljava/lang/String;": 2,
          "com/mojang/blaze3d/Blaze3D#openUri(Ljava/net/URI;)V": 1,
          "com/mojang/blaze3d/platform/NativeImage#getPixel(II)I": 1,
          "com/mojang/blaze3d/platform/NativeImage#setPixel(III)V": 2,
          "java/awt/Color#decode(Ljava/lang/String;)Ljava/awt/Color;": 1,
          "java/lang/Class#getEnumConstants()[Ljava/lang/Object;": 1,
          "java/lang/Class#getFields()[Ljava/lang/reflect/Field;": 2,
          "java/lang/Number#floatValue()F": 2,
          "java/text/NumberFormat#getPercentInstance()Ljava/text/NumberFormat;": 2,
          "net/minecraft/client/Camera#position()Lnet/minecraft/world/phys/Vec3;": 9,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 17,
          "net/minecraft/client/gui/components/Button#builder(Lnet/minecraft/network/chat/Component;Lnet/minecraft/client/gui/components/Button$OnPress;)Lnet/minecraft/client/gui/components/Button$Builder;": 1,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList$Entry#<init>()V": 1,
          "net/minecraft/client/gui/components/EditBox#extractWidgetRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/components/EditBox#setFocused(Z)V": 1,
          "net/minecraft/client/gui/components/EditBox#setValue(Ljava/lang/String;)V": 1,
          "net/minecraft/client/gui/layouts/HeaderAndFooterLayout#arrangeElements()V": 1,
          "net/minecraft/client/multiplayer/ClientLevel#environmentAttributes()Lnet/minecraft/world/attribute/EnvironmentAttributeSystem;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getRainLevel(F)F": 4,
          "net/minecraft/client/multiplayer/ClientLevel#getThunderLevel(F)F": 1,
          "net/minecraft/client/particle/SingleQuadParticle#tick()V": 4,
          "net/minecraft/client/particle/SingleQuadParticle$Layer#OPAQUE": 1,
          "net/minecraft/client/particle/SingleQuadParticle$Layer#TRANSLUCENT": 2,
          "net/minecraft/core/BlockPos#getX()I": 3,
          "net/minecraft/core/Holder#value()Ljava/lang/Object;": 1,
          "net/minecraft/core/Registry#keySet()Ljava/util/Set;": 1,
          "net/minecraft/core/Registry#listTagIds()Ljava/util/stream/Stream;": 1,
          "net/minecraft/core/registries/BuiltInRegistries#PARTICLE_TYPE": 3,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/resources/Identifier#parse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/resources/Identifier#withDefaultNamespace(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/resources/ResourceKey#identifier()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/server/packs/resources/Resource#open()Ljava/io/InputStream;": 1,
          "net/minecraft/util/Mth#clamp(DDD)D": 1,
          "net/minecraft/util/Mth#floor(D)I": 1,
          "net/minecraft/util/Mth#sin(D)F": 1,
          "net/minecraft/util/RandomSource#create()Lnet/minecraft/util/RandomSource;": 1,
          "net/minecraft/world/entity/Entity$RemovalReason#DISCARDED": 1,
          "net/minecraft/world/level/Level#getMaxY()I": 1,
          "net/minecraft/world/level/Level#getMinY()I": 1,
          "net/minecraft/world/level/Level#getRainLevel(F)F": 1,
          "net/minecraft/world/level/Level#getThunderLevel(F)F": 1,
          "net/minecraft/world/level/biome/Biome$Precipitation#RAIN": 1,
          "net/minecraft/world/level/levelgen/Heightmap$Types#MOTION_BLOCKING": 3,
          "new com/google/gson/JsonPrimitive": 2,
          "new com/mojang/blaze3d/platform/NativeImage": 1,
          "new net/minecraft/client/gui/components/CycleButton$Builder": 1,
          "new net/minecraft/client/gui/components/StringWidget": 2,
          "new net/minecraft/client/renderer/texture/SpriteContents": 1,
          "new net/minecraft/world/level/ClipContext": 1,
          "new net/minecraft/world/phys/Vec3": 1,
          "new org/joml/Vector3f": 5,
          "pigcart/particlerain/config/gui/InputWidget#isFocused()Z": 1,
          "pigcart/particlerain/config/gui/LabelWidget#getMessage()Lnet/minecraft/network/chat/Component;": 1,
          "pigcart/particlerain/particle/WeatherParticle#isAlive()Z": 1
        },
        "runs": [
          {
            "class": "pigcart/particlerain/VersionUtil",
            "method": "getBiomeFogColor",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)Ljava/awt/Color;",
            "value": "obj#16"
          },
          {
            "class": "pigcart/particlerain/config/ParticleData$Weather",
            "method": "isCurrent",
            "desc": "(Lnet/minecraft/client/multiplayer/ClientLevel;)Ljava/lang/Boolean;",
            "value": "1"
          },
          {
            "class": "pigcart/particlerain/config/gui/WidgetList",
            "method": "getRowWidth",
            "desc": "()I",
            "value": "310"
          },
          {
            "class": "pigcart/particlerain/config/gui/LabelWidget",
            "method": "horizontalAlignment",
            "desc": "(F)Lpigcart/particlerain/config/gui/LabelWidget;",
            "value": "obj#129"
          },
          {
            "class": "pigcart/particlerain/config/gui/LabelWidget",
            "method": "alignLeft",
            "desc": "()Lpigcart/particlerain/config/gui/LabelWidget;",
            "value": "obj#130"
          },
          {
            "class": "pigcart/particlerain/config/gui/LabelWidget",
            "method": "alignRight",
            "desc": "()Lpigcart/particlerain/config/gui/LabelWidget;",
            "value": "obj#131"
          },
          {
            "class": "pigcart/particlerain/TextureUtil",
            "method": "argbToABGR",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "pigcart/particlerain/config/ParticleData$Weather$4",
            "method": "isCurrent",
            "desc": "(Lnet/minecraft/client/multiplayer/ClientLevel;)Ljava/lang/Boolean;",
            "value": "0"
          }
        ],
        "insns": 1737
      },
      "verdict": "no",
      "summary": "none of its 16 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "pickupnotifier",
      "name": "Pick Up Notifier",
      "version": "26.3.0",
      "license": "MPL-2.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "fuzs/pickupnotifier/fabric/client/PickUpNotifierFabricClient"
        },
        {
          "kind": "main",
          "value": "fuzs/pickupnotifier/fabric/PickUpNotifierFabric"
        }
      ],
      "mixin_configs": [
        "pickupnotifier.common.mixins.json",
        "pickupnotifier.fabric.mixins.json"
      ],
      "depends": [
        "forgeconfigapiport",
        "puzzleslib"
      ],
      "classes": 35,
      "methods": 165,
      "sites": [
        {
          "mixin": "fuzs/pickupnotifier/common/mixin/client/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "handleTakeItemEntity",
          "kind": "inject",
          "method": "handleTakeItemEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "fuzs/pickupnotifier/common/mixin/client/GuiRenderStateMixin",
          "targets": [
            "net/minecraft/client/renderer/state/gui/GuiRenderState"
          ],
          "handler": "submitItem",
          "kind": "inject",
          "method": "addItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/state/gui/GuiRenderState#addItem HEAD"
        },
        {
          "mixin": "fuzs/pickupnotifier/common/mixin/client/GuiRendererMixin",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "submitBlitFromItemAtlas",
          "kind": "modify-args",
          "method": "submitBlitFromItemAtlas",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/state/gui/BlitRenderState;<init>(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/client/gui/render/TextureSetup;Lorg/joml/Matrix3x2fc;IIIIFFFFILnet/minecraft/client/gui/navigation/ScreenRectangle;Lnet/minecraft/client/gui/navigation/ScreenRectangle;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-args)"
        }
      ],
      "listening": 1,
      "accessors": 0,
      "hooks": {
        "net_from_server": 1
      },
      "wanted": {
        "net/minecraft/client/renderer/state/gui/GuiRenderState#addItem @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/renderer/state/gui/BlitRenderState#<init> @INVOKE (modify-args)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 35,
        "features": {
          "events": 1,
          "mixin": 4
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 35,
        "methods": 62,
        "tried": 62,
        "completed": 25,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lfuzs/pickupnotifier/common/client/gui/PositionPreset;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/pickupnotifier/common/config/CombineEntries;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/pickupnotifier/common/config/DisplayAmount;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/pickupnotifier/common/config/EntryBackground;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/pickupnotifier/common/config/MovementDirection;#clone()Ljava/lang/Object;": 1,
          "fuzs/puzzleslib/common/api/client/event/v1/ClientTickEvents#END": 2,
          "fuzs/puzzleslib/common/api/network/v4/message/MessageListener#<init>()V": 2,
          "fuzs/puzzleslib/common/api/network/v4/message/play/ClientboundPlayMessage$Context#level()Lnet/minecraft/client/multiplayer/ClientLevel;": 2,
          "fuzs/puzzleslib/fabric/api/event/v1/FabricPlayerEvents#ITEM_TOUCH": 1,
          "it/unimi/dsi/fastutil/ints/Int2ObjectArrayMap#containsKey(I)Z": 1,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/NavigableMap#floorEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/navigation/ScreenRectangle#intersection(Lnet/minecraft/client/gui/navigation/ScreenRectangle;)Lnet/minecraft/client/gui/navigation/ScreenRectangle;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getEntity(I)Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/core/registries/Registries#ITEM": 1,
          "net/minecraft/network/protocol/game/ClientboundTakeItemEntityPacket#getItemId()I": 2,
          "net/minecraft/util/Mth#sin(D)F": 1,
          "net/minecraft/world/item/ItemStack#getCount()I": 1,
          "new net/minecraft/client/gui/navigation/ScreenRectangle": 1,
          "new org/apache/commons/lang3/mutable/MutableInt": 1
        },
        "runs": [
          {
            "class": "fuzs/pickupnotifier/common/config/ClientConfig$BehaviorConfig",
            "method": "getMoveTime",
            "desc": "()I",
            "value": "20"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/handler/DrawEntriesHandler",
            "method": "getCollector",
            "desc": "()Ljava/util/Map;",
            "value": "obj#17"
          },
          {
            "class": "fuzs/pickupnotifier/common/config/ClientConfig$DisplayConfig",
            "method": "getDisplayScale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/gui/PositionPreset",
            "method": "mirrored",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/gui/PositionPreset",
            "method": "bottom",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/gui/PositionPreset",
            "method": "getX",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/gui/PositionPreset",
            "method": "getY",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/network/ClientboundTakeItemMessage",
            "method": "itemId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/network/ClientboundTakeItemMessage",
            "method": "amount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/gui/entry/DisplayEntry",
            "method": "getKey",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#50"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/gui/entry/DisplayEntry",
            "method": "getDisplayAmount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/gui/entry/DisplayEntry",
            "method": "mayDiscard",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/gui/entry/ExperienceDisplayEntry",
            "method": "hashCode",
            "desc": "()I",
            "value": "31"
          },
          {
            "class": "fuzs/pickupnotifier/common/client/gui/entry/ExperienceDisplayEntry",
            "method": "getXpTexture",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/config/DisplayAmount",
            "method": "isSprite",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/config/DisplayAmount",
            "method": "isText",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "fuzs/pickupnotifier/common/config/MovementDirection$1",
            "method": "move",
            "desc": "(Lnet/minecraft/client/gui/navigation/ScreenAxis;)Z",
            "value": "0"
          }
        ],
        "insns": 770
      },
      "verdict": "partly",
      "summary": "1 of 1 listening patch sites land on a Horizon hook (100%); of 3 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "pingwheel",
      "name": "Ping Wheel",
      "version": "1.12.2",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "nx/pingwheel/fabric/FabricClient"
        },
        {
          "kind": "main",
          "value": "nx/pingwheel/fabric/FabricMain"
        },
        {
          "kind": "modmenu",
          "value": "nx/pingwheel/fabric/integration/ModMenuIntegration"
        },
        {
          "kind": "voicechat",
          "value": "nx/pingwheel/common/integration/VoiceChatIntegration"
        }
      ],
      "mixin_configs": [
        "pingwheel.mixins.json"
      ],
      "depends": [],
      "classes": 60,
      "methods": 373,
      "sites": [
        {
          "mixin": "nx/pingwheel/common/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "extract",
          "kind": "inject",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Gui;extractRenderState(Lnet/minecraft/client/DeltaTracker;ZZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#extract INVOKE"
        },
        {
          "mixin": "nx/pingwheel/common/mixin/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "extractRenderState",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#extractRenderState INVOKE"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/gui/Gui#extractRenderState @INVOKE": 1,
        "net/minecraft/client/renderer/GameRenderer#extract @INVOKE": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "FabricClientCommandSource",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 60,
        "features": {
          "screen": 1,
          "command": 1,
          "network": 1,
          "events": 1,
          "mixin": 2
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 60,
        "methods": 208,
        "tried": 208,
        "completed": 102,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lnx/pingwheel/common/config/ChannelMode;#clone()Ljava/lang/Object;": 2,
          "[Lnx/pingwheel/common/config/PlayerInfoMode;#clone()Ljava/lang/Object;": 2,
          "[Lnx/pingwheel/common/config/TeamColorMode;#clone()Ljava/lang/Object;": 2,
          "[Lnx/pingwheel/common/integration/TeamContext;#clone()Ljava/lang/Object;": 1,
          "de/maxhenkel/voicechat/api/events/ClientVoicechatInitializationEvent#getVoicechat()Lde/maxhenkel/voicechat/api/VoicechatClientApi;": 1,
          "de/maxhenkel/voicechat/api/events/VoicechatServerStartedEvent#getVoicechat()Lde/maxhenkel/voicechat/api/VoicechatServerApi;": 1,
          "java/lang/Float#floatToIntBits(F)I": 1,
          "java/nio/file/Files#exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/time/Duration#ofMillis(J)Ljava/time/Duration;": 1,
          "java/time/Instant#now()Ljava/time/Instant;": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientTickEvents#START_CLIENT_TICK": 1,
          "net/fabricmc/fabric/api/client/keymapping/v1/KeyMappingHelper#registerKeyMapping(Lnet/minecraft/client/KeyMapping;)Lnet/minecraft/client/KeyMapping;": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayConnectionEvents#DISCONNECT": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayConnectionEvents#JOIN": 1,
          "net/fabricmc/fabric/api/networking/v1/ServerPlayConnectionEvents#DISCONNECT": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 3,
          "net/minecraft/client/Minecraft#getCameraEntity()Lnet/minecraft/world/entity/Entity;": 3,
          "net/minecraft/client/Minecraft#getConnection()Lnet/minecraft/client/multiplayer/ClientPacketListener;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/Minecraft#getWindow()Lcom/mojang/blaze3d/platform/Window;": 2,
          "net/minecraft/client/gui/GuiGraphicsExtractor#item(Lnet/minecraft/world/item/ItemStack;III)V": 1,
          "net/minecraft/client/gui/components/EditBox#isFocused()Z": 1,
          "net/minecraft/client/gui/screens/options/OptionsSubScreen#repositionElements()V": 1,
          "net/minecraft/client/multiplayer/PlayerInfo#getSkin()Lnet/minecraft/world/entity/player/PlayerSkin;": 1,
          "net/minecraft/client/renderer/RenderPipelines#GUI_TEXTURED": 2,
          "net/minecraft/network/FriendlyByteBuf#writeUtf(Ljava/lang/String;I)Lnet/minecraft/network/FriendlyByteBuf;": 3,
          "net/minecraft/network/chat/Component#empty()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;[Ljava/lang/Object;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/server/level/ServerPlayer#getUUID()Ljava/util/UUID;": 3,
          "net/minecraft/server/packs/resources/PreparableReloadListener$SharedState#resourceManager()Lnet/minecraft/server/packs/resources/ResourceManager;": 1,
          "net/minecraft/world/entity/player/Player#getTeam()Lnet/minecraft/world/scores/PlayerTeam;": 2,
          "new net/minecraft/world/phys/Vec2": 1,
          "new net/minecraft/world/phys/Vec3": 1,
          "new org/joml/Matrix3x2f": 1,
          "nx/pingwheel/common/config/IConfig#hashCode()I": 1,
          "nx/pingwheel/common/screen/SettingsScreen#addTitle()V": 1,
          "org/joml/Matrix3x2fStack#pushMatrix()Lorg/joml/Matrix3x2fStack;": 2
        },
        "runs": [
          {
            "class": "nx/pingwheel/common/core/PingController",
            "method": "isPingQueued",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "nx/pingwheel/common/render/WorldRenderContext",
            "method": "of",
            "desc": "(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Ljava/lang/Float;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)Lnx/pingwheel/common/render/WorldRenderContext;",
            "value": "obj#2"
          },
          {
            "class": "nx/pingwheel/common/math/ScreenPos",
            "method": "isBehindCamera",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "nx/pingwheel/common/math/ScreenPos",
            "method": "distanceTo",
            "desc": "(Lnet/minecraft/world/phys/Vec2;)F",
            "value": "340282350000000000000000000000000000000f"
          },
          {
            "class": "nx/pingwheel/common/config/ServerConfig",
            "method": "getDefaultChannelMode",
            "desc": "()Lnx/pingwheel/common/config/ChannelMode;",
            "value": "obj#19"
          },
          {
            "class": "nx/pingwheel/common/config/ServerConfig",
            "method": "isPlayerTrackingEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "nx/pingwheel/common/config/ServerConfig",
            "method": "getMsToRegenerate",
            "desc": "()I",
            "value": "1000"
          },
          {
            "class": "nx/pingwheel/common/config/ServerConfig",
            "method": "getRateLimit",
            "desc": "()I",
            "value": "5"
          },
          {
            "class": "nx/pingwheel/common/config/ServerConfig",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ServerConfig",
            "method": "canEqual",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ServerConfig",
            "method": "hashCode",
            "desc": "()I",
            "value": "31823616"
          },
          {
            "class": "nx/pingwheel/common/integration/VoiceChatWrapper",
            "method": "getGroupId",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Ljava/util/Optional;",
            "value": "obj#37"
          },
          {
            "class": "nx/pingwheel/common/integration/VoiceChatWrapper",
            "method": "getSelfGroupId",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#38"
          },
          {
            "class": "nx/pingwheel/common/core/PingView",
            "method": "distanceToCenter",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "nx/pingwheel/common/core/PingView",
            "method": "isCloserToCenter",
            "desc": "(Lnx/pingwheel/common/core/PingView;)Z",
            "value": "1"
          },
          {
            "class": "nx/pingwheel/common/core/PingView",
            "method": "getTeamColor",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "nx/pingwheel/common/core/PingView",
            "method": "getDistance",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/core/PingView",
            "method": "getScale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "nx/pingwheel/common/resource/ResourceReloadListener",
            "method": "hasCustomTexture",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/integration/TeamContextHandler",
            "method": "hasTeam",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/network/PingLocationS2CPacket",
            "method": "isCorrupt",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "nx/pingwheel/common/network/PingLocationS2CPacket",
            "method": "sequence",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/network/PingLocationS2CPacket",
            "method": "dimension",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/integration/FTBTeamsWrapper",
            "method": "getTeamId",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Ljava/util/Optional;",
            "value": "obj#87"
          },
          {
            "class": "nx/pingwheel/common/integration/FTBTeamsWrapper",
            "method": "getSelfTeamId",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#88"
          },
          {
            "class": "nx/pingwheel/common/config/TeamColorMode",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"teamcolormode\""
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getPingVolume",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getPingDuration",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getPingDistance",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getCorrectionPeriod",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "isItemIconVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "isDirectionIndicatorVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getPingSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getRemoveRadius",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getRaycastDistance",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getSafeZoneLeft",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getSafeZoneRight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getSafeZoneTop",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "getSafeZoneBottom",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ClientConfig",
            "method": "canEqual",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/integration/TeamContext",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"teamcontext\""
          },
          {
            "class": "nx/pingwheel/common/network/PingLocationC2SPacket",
            "method": "isCorrupt",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "nx/pingwheel/common/network/PingLocationC2SPacket",
            "method": "sequence",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/network/PingLocationC2SPacket",
            "method": "dimension",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/PlayerInfoMode",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"playerinfomode\""
          },
          {
            "class": "nx/pingwheel/common/core/GameContext",
            "method": "getCurrentServerIp",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#174"
          },
          {
            "class": "nx/pingwheel/common/core/GameContext",
            "method": "getDimension",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "nx/pingwheel/common/config/ChannelMode",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"channelmode\""
          },
          {
            "class": "nx/pingwheel/common/network/UpdateChannelC2SPacket",
            "method": "isCorrupt",
            "desc": "()Z",
            "value": "1"
          }
        ],
        "insns": 2455
      },
      "verdict": "no",
      "summary": "none of its 2 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "polytone",
      "name": "Polytone",
      "version": "26.3-6.8.6",
      "license": "Supplementaries Team License v.1.5",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "net/mehvahdjukaar/polytone/platform/PolytoneFabric"
        },
        {
          "kind": "packed_packs",
          "value": "net/mehvahdjukaar/polytone/compat/PackedPacksCompat"
        }
      ],
      "mixin_configs": [
        "polytone.mixins.json",
        "polytone-common.mixins.json"
      ],
      "depends": [],
      "classes": 544,
      "methods": 3931,
      "sites": [
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/AbstractContainerMenuMixin",
          "targets": [
            "net/minecraft/world/inventory/AbstractContainerMenu"
          ],
          "handler": "polytone$modifySlot",
          "kind": "inject",
          "method": "addSlot",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/AbstractContainerMenu#addSlot HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/AnimationStateMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteContents$AnimationState"
          ],
          "handler": "polytone$overrideTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteContents$AnimationState#tick HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/AtmosphericFogEnvironmentMixin",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment"
          ],
          "handler": "polytone$bossFogEnd",
          "kind": "modify-constant",
          "method": "setupFog",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/AtmosphericFogEnvironmentMixin",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment"
          ],
          "handler": "polytone$bossFogStart",
          "kind": "modify-constant",
          "method": "setupFog",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/AttributeProbeMixin",
          "targets": [
            "net/minecraft/world/attribute/EnvironmentAttributeProbe"
          ],
          "handler": "poly$accumulateInner",
          "kind": "inject",
          "method": "lambda$tick$0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/attribute/EnvironmentAttributeProbe#lambda$tick$0 HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/AttributeProbeMixin",
          "targets": [
            "net/minecraft/world/attribute/EnvironmentAttributeProbe"
          ],
          "handler": "poly$accumulateInner",
          "kind": "inject",
          "method": "method_75687",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/attribute/EnvironmentAttributeProbe#method_75687 HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/BlindnessFogEnvironmentMixin",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/BlindnessFogEnvironment"
          ],
          "handler": "polytone$fogDistance",
          "kind": "modify-constant",
          "method": "setupFog",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "polytone$extraParticles",
          "kind": "wrap-operation",
          "method": "doAnimateTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/Block;animateTick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "polytone$addExtraDestroyParticles",
          "kind": "inject",
          "method": "addDestroyBlockEffect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#addDestroyBlockEffect HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "polytone$addExtraBreakingParticles",
          "kind": "inject",
          "method": "addBreakingBlockEffects",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#addBreakingBlockEffects HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "polytone$skipCancelledParticles",
          "kind": "wrap-with-condition",
          "method": "addBreakingBlockEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;addBreakingParticles(Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ColorResolverMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "polytone$makeCachesForColormaps",
          "kind": "inject",
          "method": "getBlockTint",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#getBlockTint HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ColorResolverMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "polytone$resetCustomColorResolvers",
          "kind": "inject",
          "method": "clearTintCaches",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#clearTintCaches HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ContainerScreenPickMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "polytone$pickSlot",
          "kind": "inject",
          "method": "mouseClicked",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#mouseClicked HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ContextualBarRendererMixin",
          "targets": [
            "net/minecraft/client/gui/contextualbar/ContextualBar"
          ],
          "handler": "polytone$changeXpColorBack0",
          "kind": "modify-arg",
          "method": "extractExperienceLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;text(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ContextualBarRendererMixin",
          "targets": [
            "net/minecraft/client/gui/contextualbar/ContextualBar"
          ],
          "handler": "polytone$changeXpColorBack1",
          "kind": "modify-arg",
          "method": "extractExperienceLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;text(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ContextualBarRendererMixin",
          "targets": [
            "net/minecraft/client/gui/contextualbar/ContextualBar"
          ],
          "handler": "polytone$changeXpColorBack2",
          "kind": "modify-arg",
          "method": "extractExperienceLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;text(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ContextualBarRendererMixin",
          "targets": [
            "net/minecraft/client/gui/contextualbar/ContextualBar"
          ],
          "handler": "polytone$changeXpColorBack3",
          "kind": "modify-arg",
          "method": "extractExperienceLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;text(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ContextualBarRendererMixin",
          "targets": [
            "net/minecraft/client/gui/contextualbar/ContextualBar"
          ],
          "handler": "polytone$changeXpColor",
          "kind": "modify-arg",
          "method": "extractExperienceLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;text(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/CreativeModeTabMixin",
          "targets": [
            "net/minecraft/world/item/CreativeModeTab"
          ],
          "handler": "polytone$modifyTabContents",
          "kind": "inject",
          "method": "buildContents",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/CreativeModeTab#buildContents TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/CreativeScreenPickMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen"
          ],
          "handler": "polytone$renderPickOverlay",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#extractRenderState TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/CreativeScreenPickMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen"
          ],
          "handler": "polytone$pickItem",
          "kind": "inject",
          "method": "mouseClicked",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#mouseClicked HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/DarknessFogEnvironmentMixin",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/DarknessFogEnvironment"
          ],
          "handler": "polytone$fogDistance",
          "kind": "modify-constant",
          "method": "setupFog",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/EntityModelSetMixin",
          "targets": [
            "net/minecraft/client/model/geom/EntityModelSet"
          ],
          "handler": "polytone$mutableRoots",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/geom/EntityModelSet#<init> TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/EntityModelSetMixin",
          "targets": [
            "net/minecraft/client/model/geom/EntityModelSet"
          ],
          "handler": "polytone$registerCustomLayer",
          "kind": "inject",
          "method": "bakeLayer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/geom/EntityModelSet#bakeLayer HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/EntityRendererDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "polytone$onSubmit",
          "kind": "inject",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/entity/EntityRenderer;getRenderOffset(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit INVOKE"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/EntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderer"
          ],
          "handler": "polytone$addId",
          "kind": "inject",
          "method": "createRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderer#createRenderState RETURN"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/EnvironmentAttributeEntryMixin",
          "targets": [
            "net/minecraft/world/attribute/EnvironmentAttributeMap$Entry"
          ],
          "handler": "polytone$applyWithDynamicArgument",
          "kind": "wrap-operation",
          "method": "applyModifier",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/attribute/modifier/AttributeModifier;apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/EnvironmentAttributeSystemBuilderMixin",
          "targets": [
            "net/minecraft/world/attribute/EnvironmentAttributeSystem$Builder"
          ],
          "handler": "polytone$turnConstantIntoPositional",
          "kind": "inject",
          "method": "addConstantEntry",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/attribute/EnvironmentAttributeSystem$Builder#addConstantEntry HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/EnvironmentSystemMixin",
          "targets": [
            "net/minecraft/world/attribute/EnvironmentAttributeSystem$Builder"
          ],
          "handler": "polytone$addCustomPostLayers",
          "kind": "inject",
          "method": "addDefaultLayers",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/attribute/EnvironmentAttributeSystem$Builder#addDefaultLayers RETURN"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/FishingHookRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/FishingHookRenderer"
          ],
          "handler": "polytone$changeLineOffset",
          "kind": "inject",
          "method": "stringVertex",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/FishingHookRenderer#stringVertex HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/FishingHookRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/FishingHookRenderer"
          ],
          "handler": "polytone$changeLineColor",
          "kind": "modify-arg",
          "method": "stringVertex",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/VertexConsumer;setColor(I)Lcom/mojang/blaze3d/vertex/VertexConsumer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "polytone$setupGuiLightmap",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/render/GuiRenderer;render()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render INVOKE"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "polytone$resetGuiLightmap",
          "kind": "inject",
          "method": "render",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "polytone$redirectMainTargetForPreview",
          "kind": "inject",
          "method": "mainRenderTarget",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#mainRenderTarget HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "polytone$closeShaderStuff",
          "kind": "inject",
          "method": "close",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#close TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "polytone$snapshotWorldDepth",
          "kind": "inject",
          "method": "render3dHud",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/api/commands/CommandEncoder;clearDepthTexture(Lcom/mojang/renderpearl/api/textures/GpuTexture;D)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render3dHud INVOKE"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "polytone$runPostChainsAfterHand",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GameRenderer;renderLevel()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render INVOKE"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GuiExtractMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "polytone$startOverlayModifiers",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "the HUD's state is built for this frame"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GuiExtractMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "polytone$endOverlayModifiers",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "gui_render_post",
          "why": "RenderGuiEvent.Post: the whole GUI has drawn"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GuiGraphicsExtractorMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "polytone$modifyBlit",
          "kind": "inject",
          "method": "blitSprite",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;innerBlit(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIIIFFFFI)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite INVOKE"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GuiGraphicsExtractorMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "polytone$modifyBlit",
          "kind": "inject",
          "method": "blitSprite",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;innerBlit(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIIIFFFFI)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite INVOKE"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "polytone$renderFancyEmptyHeart",
          "kind": "wrap-operation",
          "method": "extractHearts",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;extractHeart(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/gui/Hud$HeartType;IIZZZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/GuiRenderStateMixin",
          "targets": [
            "net/minecraft/client/renderer/state/gui/GuiRenderState"
          ],
          "handler": "polytone$findOrSqueezeInNewNode",
          "kind": "inject",
          "method": "findAppropriateNode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/state/gui/GuiRenderState#findAppropriateNode HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/HackThatPreventsMissingSpritesToCrashMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources$MutableSpriteSet"
          ],
          "handler": "polytone$setNullSprite",
          "kind": "inject",
          "method": "get",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleResources$MutableSpriteSet#get HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/HackThatPreventsMissingSpritesToCrashMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources$MutableSpriteSet"
          ],
          "handler": "polytone$setNullSprite",
          "kind": "inject",
          "method": "get",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleResources$MutableSpriteSet#get HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/IdentifierMixin",
          "targets": [
            "net/minecraft/resources/Identifier"
          ],
          "handler": "poly$validateValidNamespace",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/resources/Identifier#<init> RETURN"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/InventoryScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/InventoryScreen"
          ],
          "handler": "modifyRenderEntityX",
          "kind": "modify-arg",
          "method": "extractBackground",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/InventoryScreen;extractEntityInInventoryFollowsMouse(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIIIIFFFLnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/InventoryScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/InventoryScreen"
          ],
          "handler": "modifyRenderEntityX2",
          "kind": "modify-arg",
          "method": "extractBackground",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/InventoryScreen;extractEntityInInventoryFollowsMouse(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIIIIFFFLnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/InventoryScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/InventoryScreen"
          ],
          "handler": "modifyRenderEntityY",
          "kind": "modify-arg",
          "method": "extractBackground",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/InventoryScreen;extractEntityInInventoryFollowsMouse(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIIIIFFFLnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/InventoryScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/InventoryScreen"
          ],
          "handler": "modifyRenderEntityY2",
          "kind": "modify-arg",
          "method": "extractBackground",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/InventoryScreen;extractEntityInInventoryFollowsMouse(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIIIIFFFLnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/InventoryScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/InventoryScreen"
          ],
          "handler": "modifyRenderEntityScale",
          "kind": "modify-arg",
          "method": "extractBackground",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/InventoryScreen;extractEntityInInventoryFollowsMouse(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIIIIFFFLnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "polytone$modifyBarColor",
          "kind": "inject",
          "method": "getBarColor",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#getBarColor HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/LeashMixin",
          "targets": [
            "net/minecraft/client/renderer/feature/LeashFeatureRenderer"
          ],
          "handler": "polytone$modifyLeashRender",
          "kind": "inject",
          "method": "addVertexPair",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/LeashFeatureRenderer#addVertexPair HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/LeashMixin",
          "targets": [
            "net/minecraft/client/renderer/feature/LeashFeatureRenderer"
          ],
          "handler": "polytone$modifyLeashTexture",
          "kind": "wrap-operation",
          "method": "prepare",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderTypes;leash()Lnet/minecraft/client/renderer/rendertype/RenderType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "poly$invalidateParticleLight",
          "kind": "inject",
          "method": "setSectionDirty",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#setSectionDirty HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "poly$preRender",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "render_needs",
          "why": "the level's drawing starts: what it needs drawn is decided here"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "poly$addGpuParticlesPass",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;addMainPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher$PreparedFrame;Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#render INVOKE"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "poly$addPostShaders",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;execute(Lcom/mojang/blaze3d/resource/GraphicsResourceAllocator;Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder$Inspector;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#render INVOKE"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "polytone$stretchWaterVisionRamp",
          "kind": "modify-constant",
          "method": "getWaterVision",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "polytone$changeToast",
          "kind": "inject",
          "method": "addResourcePackLoadFailToast",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#addResourcePackLoadFailToast HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ModelBlockRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/block/ModelBlockRenderer"
          ],
          "handler": "polytone$modifyVisualOffset",
          "kind": "wrap-operation",
          "method": "tesselateBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;getOffset(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ModelManagerMixin",
          "targets": [
            "net/minecraft/client/resources/model/ModelManager"
          ],
          "handler": "polytone$loadCustomItemModels",
          "kind": "inject",
          "method": "loadBlockModels",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/ModelManager#loadBlockModels HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "polytone$trackInteract",
          "kind": "inject",
          "method": "interact",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#interact HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PackEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry"
          ],
          "handler": "polytone$narrowTitleForBadge",
          "kind": "modify-arg",
          "method": "extractContent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/StringWidget;setMaxWidth(I)Lnet/minecraft/client/gui/components/StringWidget;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PackEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry"
          ],
          "handler": "polytone$renderBadge",
          "kind": "inject",
          "method": "extractContent",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry#extractContent TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PackEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry"
          ],
          "handler": "polytone$clickBadge",
          "kind": "inject",
          "method": "mouseClicked",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry#mouseClicked HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PackMixin",
          "targets": [
            "net/minecraft/server/packs/repository/Pack"
          ],
          "handler": "polytone$onReadPackMetadata",
          "kind": "inject",
          "method": "readPackMetadata",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/packs/metadata/pack/PackMetadataSection;forPackType(Lnet/minecraft/server/packs/PackType;)Lnet/minecraft/server/packs/metadata/MetadataSectionType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/repository/Pack#readPackMetadata INVOKE"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PackMixin",
          "targets": [
            "net/minecraft/server/packs/repository/Pack"
          ],
          "handler": "polytone$afterReadPackMetadata",
          "kind": "inject",
          "method": "readPackMetadata",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/repository/Pack#readPackMetadata RETURN"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PackRepositoryMixin",
          "targets": [
            "net/minecraft/server/packs/repository/PackRepository"
          ],
          "handler": "polytone$beforeReload",
          "kind": "inject",
          "method": "reload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/repository/PackRepository#reload HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PackSelectScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/packs/PackSelectionScreen"
          ],
          "handler": "polytone$addButtonRight",
          "kind": "wrap-operation",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/layouts/LinearLayout;addChild(Lnet/minecraft/client/gui/layouts/LayoutElement;)Lnet/minecraft/client/gui/layouts/LayoutElement;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PackSelectScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/packs/PackSelectionScreen"
          ],
          "handler": "polytone$addButtonLeft",
          "kind": "wrap-operation",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/layouts/LinearLayout;addChild(Lnet/minecraft/client/gui/layouts/LayoutElement;)Lnet/minecraft/client/gui/layouts/LayoutElement;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PaintingRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/PaintingRenderer"
          ],
          "handler": "polytone$swapPaintingRenderType",
          "kind": "wrap-operation",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/rendertype/RenderTypes;entitySolidZOffsetForward(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/rendertype/RenderType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ParticleEngineMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "polytone$joinBeforeTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#tick HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ParticleEngineMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "polytone$dispatchAsyncParticleTicks",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#tick TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ParticleEngineMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "polytone$joinBeforeExtract",
          "kind": "inject",
          "method": "extract",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#extract HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ParticleEngineMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "polytone$joinBeforeLevelChange",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#setLevel HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ParticleEngineMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "polytone$joinBeforeClear",
          "kind": "inject",
          "method": "clearParticles",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#clearParticles HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ParticleGroupMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleGroup"
          ],
          "handler": "polytone$increaseEvictingQueueSize",
          "kind": "modify-arg",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/EvictingQueue;create(I)Lcom/google/common/collect/EvictingQueue;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ParticleLimitMixin",
          "targets": [
            "net/minecraft/core/particles/ParticleLimit"
          ],
          "handler": "polytone$identityEquals",
          "kind": "inject",
          "method": "equals",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/particles/ParticleLimit#equals HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ParticleLimitMixin",
          "targets": [
            "net/minecraft/core/particles/ParticleLimit"
          ],
          "handler": "polytone$identityHashCode",
          "kind": "inject",
          "method": "hashCode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/particles/ParticleLimit#hashCode HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ParticleResourcesMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources"
          ],
          "handler": "polytone$addPackSpriteSets",
          "kind": "inject",
          "method": "reload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleResources#reload HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/PipelineCacheMixin",
          "targets": [
            "com/mojang/blaze3d/pipeline/PipelineCache"
          ],
          "handler": "poly$recordInserted",
          "kind": "inject",
          "method": "insert",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/pipeline/PipelineCache#insert HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/QuadParticleGroupMixin",
          "targets": [
            "net/minecraft/client/particle/QuadParticleGroup"
          ],
          "handler": "polytone$accurateFrustumIntersect",
          "kind": "redirect",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/culling/Frustum;pointInFrustum(DDD)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/RenderPassMixin",
          "targets": [
            "com/mojang/renderpearl/frontend/FrontendRenderPass"
          ],
          "handler": "poly$onSetPipeline",
          "kind": "inject",
          "method": "setPipeline",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/frontend/FrontendRenderPass#setPipeline TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/RenderSetupMixin",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderSetup"
          ],
          "handler": "polytone$onGetGuiLightTexture",
          "kind": "modify-variable",
          "method": "prepareTextures",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "init",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_init_post",
          "why": "ScreenEvent.Init.Post: a screen's widgets are built, where a mod adds its own"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "modifyWidget2",
          "kind": "inject",
          "method": "addWidget",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#addWidget HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "modifyRenderable",
          "kind": "inject",
          "method": "addRenderableOnly",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#addRenderableOnly HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ShadowFeatureRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/feature/ShadowFeatureRenderer"
          ],
          "handler": "polytone$cancelEntityShadow",
          "kind": "inject",
          "method": "buildGroup",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/ShadowFeatureRenderer#buildGroup HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/SodiumBlockRendererMixin",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer"
          ],
          "handler": "polytone$modifyVisualOffset",
          "kind": "wrap-operation",
          "method": "renderModel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;getOffset(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/SodiumChunkRendererMixin",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer"
          ],
          "handler": "polytone$captureTerrainSampler",
          "kind": "inject",
          "method": "begin",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer#begin TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/SpatialAttributeInterpolatorMixin",
          "targets": [
            "net/minecraft/world/attribute/SpatialAttributeInterpolator"
          ],
          "handler": "polytone$clearPostInterpolator",
          "kind": "inject",
          "method": "clear",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/attribute/SpatialAttributeInterpolator#clear HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/SubmitNodeStorageMixin",
          "targets": [
            "net/minecraft/client/renderer/SubmitNodeStorage"
          ],
          "handler": "polytone$onSubmitModel",
          "kind": "inject",
          "method": "submitModel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SubmitNodeStorage#submitModel HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/SwampColorMixin",
          "targets": [
            "net/minecraft/world/level/biome/BiomeSpecialEffects$GrassColorModifier$3"
          ],
          "handler": "poly$modifyColor",
          "kind": "inject",
          "method": "modifyColor",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/biome/BiomeSpecialEffects$GrassColorModifier$3#modifyColor HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/ValueProbeMixin",
          "targets": [
            "net/minecraft/world/attribute/EnvironmentAttributeProbe$ValueProbe"
          ],
          "handler": "polytone$clearTimeBlendRequest",
          "kind": "inject",
          "method": "get",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/attribute/EnvironmentAttributeProbe$ValueProbe#get HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/VariantDeserializerMixin",
          "targets": [
            "net/minecraft/client/renderer/block/dispatch/Variant$SimpleModelState"
          ],
          "handler": "polytone$addTranslation",
          "kind": "inject",
          "method": "asModelState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/block/dispatch/Variant$SimpleModelState#asModelState HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/XpOrbMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/ExperienceOrbRenderer"
          ],
          "handler": "polytone$startRenderOrb",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/ExperienceOrbRenderer#submit HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/XpOrbMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/ExperienceOrbRenderer"
          ],
          "handler": "polytone$endRenderOrb",
          "kind": "inject",
          "method": "submit",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/ExperienceOrbRenderer#submit TAIL"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/XpOrbMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/ExperienceOrbRenderer"
          ],
          "handler": "polytone$changeColor",
          "kind": "inject",
          "method": "vertex",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/ExperienceOrbRenderer#vertex HEAD"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/fabric/ClientLevelFabricMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "clearTintCaches",
          "kind": "inject",
          "method": "clearTintCaches",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#clearTintCaches RETURN"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/fabric/EquipmentLayerRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer"
          ],
          "handler": "polytone$swapWornModel",
          "kind": "modify-variable",
          "method": "renderLayers",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/fabric/FaceBakeryMixin",
          "targets": [
            "net/minecraft/client/resources/model/cuboid/FaceBakery"
          ],
          "handler": "poly$applyNeoFixForArbitraryRotations",
          "kind": "wrap-with-condition",
          "method": "bakeQuad",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/resources/model/cuboid/FaceBakery;recalculateWinding([Lorg/joml/Vector3fc;[JLnet/minecraft/core/Direction;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/fabric/FogRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "polytone$fluidFogColormap",
          "kind": "inject",
          "method": "computeFogColor",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/FogRenderer#computeFogColor RETURN"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/fabric/FogRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "polytone$modifyFluidFogShape",
          "kind": "inject",
          "method": "setupFog",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/FogRenderer#setupFog RETURN"
        },
        {
          "mixin": "net/mehvahdjukaar/polytone/mixins/fabric/RegistrySyncManagerMixin",
          "targets": [
            "net/fabricmc/fabric/impl/registry/sync/RegistrySyncManager"
          ],
          "handler": "polytone$omitPolytoneDynamicEntries",
          "kind": "wrap-operation",
          "method": "createAndPopulateRegistryMap",
          "at": "INVOKE",
          "at_target": "Lit/unimi/dsi/fastutil/objects/Object2IntMap;put(Ljava/lang/Object;I)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 64,
      "accessors": 28,
      "hooks": {
        "gui_render_post": 1,
        "hud": 1,
        "render_needs": 1,
        "screen_init_post": 1
      },
      "wanted": {
        "com/mojang/blaze3d/pipeline/PipelineCache#insert @HEAD": 1,
        "com/mojang/renderpearl/frontend/FrontendRenderPass#setPipeline @TAIL": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer#begin @TAIL": 1,
        "net/minecraft/client/Minecraft#addResourcePackLoadFailToast @HEAD": 1,
        "net/minecraft/client/gui/screens/Screen#addRenderableOnly @HEAD": 1,
        "net/minecraft/client/gui/screens/Screen#addWidget @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#mouseClicked @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#extractRenderState @TAIL": 1,
        "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#mouseClicked @HEAD": 1,
        "net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry#extractContent @TAIL": 1,
        "net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry#mouseClicked @HEAD": 1,
        "net/minecraft/client/model/geom/EntityModelSet#<init> @TAIL": 1,
        "net/minecraft/client/model/geom/EntityModelSet#bakeLayer @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#addBreakingBlockEffects @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#addDestroyBlockEffect @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#clearTintCaches @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#clearTintCaches @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientLevel#getBlockTint @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#interact @HEAD": 1,
        "net/minecraft/client/particle/ParticleEngine#clearParticles @HEAD": 1,
        "net/minecraft/client/particle/ParticleEngine#extract @HEAD": 1,
        "net/minecraft/client/particle/ParticleEngine#setLevel @HEAD": 1,
        "net/minecraft/client/particle/ParticleEngine#tick @HEAD": 1,
        "net/minecraft/client/particle/ParticleEngine#tick @TAIL": 1,
        "net/minecraft/client/particle/ParticleResources#reload @HEAD": 1,
        "net/minecraft/client/particle/ParticleResources$MutableSpriteSet#get @HEAD": 2,
        "net/minecraft/client/renderer/GameRenderer#close @TAIL": 1,
        "net/minecraft/client/renderer/GameRenderer#mainRenderTarget @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#render @TAIL": 1,
        "net/minecraft/client/renderer/SubmitNodeStorage#submitModel @HEAD": 1,
        "net/minecraft/client/renderer/block/dispatch/Variant$SimpleModelState#asModelState @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderer#createRenderState @RETURN": 1,
        "net/minecraft/client/renderer/entity/ExperienceOrbRenderer#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/ExperienceOrbRenderer#submit @TAIL": 1,
        "net/minecraft/client/renderer/entity/ExperienceOrbRenderer#vertex @HEAD": 1,
        "net/minecraft/client/renderer/entity/FishingHookRenderer#stringVertex @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setSectionDirty @HEAD": 1,
        "net/minecraft/client/renderer/feature/LeashFeatureRenderer#addVertexPair @HEAD": 1,
        "net/minecraft/client/renderer/feature/ShadowFeatureRenderer#buildGroup @HEAD": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#computeFogColor @RETURN": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#setupFog @RETURN": 1,
        "net/minecraft/client/renderer/state/gui/GuiRenderState#findAppropriateNode @HEAD": 1,
        "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#tick @HEAD": 1,
        "net/minecraft/client/resources/model/ModelManager#loadBlockModels @HEAD": 1,
        "net/minecraft/core/particles/ParticleLimit#equals @HEAD": 1,
        "net/minecraft/core/particles/ParticleLimit#hashCode @HEAD": 1,
        "net/minecraft/resources/Identifier#<init> @RETURN": 1,
        "net/minecraft/server/packs/repository/Pack#readPackMetadata @RETURN": 1,
        "net/minecraft/server/packs/repository/PackRepository#reload @HEAD": 1,
        "net/minecraft/world/attribute/EnvironmentAttributeProbe#lambda$tick$0 @HEAD": 1,
        "net/minecraft/world/attribute/EnvironmentAttributeProbe#method_75687 @HEAD": 1,
        "net/minecraft/world/attribute/EnvironmentAttributeProbe$ValueProbe#get @HEAD": 1,
        "net/minecraft/world/attribute/EnvironmentAttributeSystem$Builder#addConstantEntry @HEAD": 1,
        "net/minecraft/world/attribute/EnvironmentAttributeSystem$Builder#addDefaultLayers @RETURN": 1,
        "net/minecraft/world/attribute/SpatialAttributeInterpolator#clear @HEAD": 1,
        "net/minecraft/world/inventory/AbstractContainerMenu#addSlot @HEAD": 1,
        "net/minecraft/world/item/CreativeModeTab#buildContents @TAIL": 1,
        "net/minecraft/world/item/ItemStack#getBarColor @HEAD": 1,
        "net/minecraft/world/level/biome/BiomeSpecialEffects$GrassColorModifier$3#modifyColor @HEAD": 1
      },
      "wanted_calls": {
        "com/google/common/collect/EvictingQueue#create @INVOKE (modify-arg)": 1,
        "com/mojang/blaze3d/vertex/VertexConsumer#setColor @INVOKE (modify-arg)": 1,
        "it/unimi/dsi/fastutil/objects/Object2IntMap#put @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @INVOKE": 2,
        "net/minecraft/client/gui/GuiGraphicsExtractor#text @INVOKE (modify-arg)": 5,
        "net/minecraft/client/gui/Hud#extractHeart @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/components/StringWidget#setMaxWidth @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/layouts/LinearLayout#addChild @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/gui/screens/inventory/InventoryScreen#extractEntityInInventoryFollowsMouse @INVOKE (modify-arg)": 5,
        "net/minecraft/client/multiplayer/ClientLevel#addBreakingParticles @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/player/LocalPlayer#getWaterVision @HEAD (modify-constant)": 1,
        "net/minecraft/client/renderer/GameRenderer#render @INVOKE": 2,
        "net/minecraft/client/renderer/GameRenderer#render3dHud @INVOKE": 1,
        "net/minecraft/client/renderer/LevelRenderer#render @INVOKE": 2,
        "net/minecraft/client/renderer/culling/Frustum#pointInFrustum @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @INVOKE": 1,
        "net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer#renderLayers @HEAD (modify-variable)": 1,
        "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#setupFog @HEAD (modify-constant)": 2,
        "net/minecraft/client/renderer/fog/environment/BlindnessFogEnvironment#setupFog @HEAD (modify-constant)": 1,
        "net/minecraft/client/renderer/fog/environment/DarknessFogEnvironment#setupFog @HEAD (modify-constant)": 1,
        "net/minecraft/client/renderer/rendertype/RenderSetup#prepareTextures @HEAD (modify-variable)": 1,
        "net/minecraft/client/renderer/rendertype/RenderTypes#entitySolidZOffsetForward @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/rendertype/RenderTypes#leash @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/resources/model/cuboid/FaceBakery#recalculateWinding @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/server/packs/repository/Pack#readPackMetadata @INVOKE": 1,
        "net/minecraft/world/attribute/modifier/AttributeModifier#apply @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/Block#animateTick @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/state/BlockState#getOffset @INVOKE (wrap-operation)": 2
      },
      "api": [
        {
          "class": "CustomUnbakedBlockStateModel",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ColorResolverRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CommonLifecycleEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CommonLifecycleEvents$TagsLoaded",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ExtraModelKey",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricCreativeModeTab",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricParticleTypes",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemTooltipCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LevelRenderEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LevelRenderEvents$BeforeGizmos",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LevelRenderEvents$StartMain",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MappingResolver",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLoadingPlugin",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLoadingPlugin$Context",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleGroupRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PreparableModelLoadingPlugin",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PreparableModelLoadingPlugin$DataLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterExtract",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopped",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "SimpleUnbakedExtraModel",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 544,
        "features": {
          "screen": 13,
          "renderer": 1,
          "particle": 2,
          "events": 1,
          "mixin": 102
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 544,
        "methods": 2572,
        "tried": 600,
        "completed": 231,
        "handlers_tried": 4,
        "handlers_completed": 0,
        "missing": {
          "[Lnet/mehvahdjukaar/polytone/common/Weather;#clone()Ljava/lang/Object;": 1,
          "[Lnet/mehvahdjukaar/polytone/common/attributes/EnvironmentAttributeMapMod$Removal;#clone()Ljava/lang/Object;": 1,
          "[Lnet/mehvahdjukaar/polytone/content/config/ConfigsManager$ButtonPosition;#clone()Ljava/lang/Object;": 1,
          "[Lnet/mehvahdjukaar/polytone/content/particle/custom/ParticleRenderMode;#clone()Ljava/lang/Object;": 1,
          "[Lnet/mehvahdjukaar/polytone/content/particle/custom/RotationMode;#clone()Ljava/lang/Object;": 1,
          "[Lnet/mehvahdjukaar/polytone/content/slotify/GuiModifier$Type;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/BiMap#remove(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/google/common/collect/Multimap#keySet()Ljava/util/Set;": 1,
          "com/mojang/renderpearl/api/buffers/GpuBuffer#close()V": 1,
          "com/mojang/renderpearl/api/buffers/GpuBuffer#slice()Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;": 1,
          "com/mojang/serialization/Codec#STRING": 1,
          "com/mojang/serialization/Codec#decode(Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult;": 1,
          "com/mojang/serialization/Codec#intRange(II)Lcom/mojang/serialization/Codec;": 1,
          "com/mojang/serialization/Codec#listOf()Lcom/mojang/serialization/Codec;": 1,
          "com/mojang/serialization/Codec#pair(Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec;": 2,
          "hollowpoint/nexp/api/ExpProgram#evalDouble([Ljava/lang/Object;)D": 1,
          "io/github/fishstiz/packed_packs/api/context/ScreenContext#getSelectedPacks()Ljava/util/List;": 1,
          "io/github/fishstiz/packed_packs/api/events/InitializePackEntryEvent#screenContext()Lio/github/fishstiz/packed_packs/api/context/ScreenContext;": 1,
          "java/lang/Runnable#run()V": 1,
          "java/lang/ref/WeakReference#get()Ljava/lang/Object;": 1,
          "java/lang/reflect/Field#setAccessible(Z)V": 1,
          "java/util/ArrayList#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collections#addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z": 1,
          "java/util/Collections#unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;": 1,
          "java/util/HashMap#putAll(Ljava/util/Map;)V": 1,
          "java/util/HashSet#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/HashSet#contains(Ljava/lang/Object;)Z": 1,
          "java/util/LinkedHashMap#entrySet()Ljava/util/Set;": 2,
          "java/util/LinkedHashMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/LinkedHashMap#keySet()Ljava/util/Set;": 1,
          "java/util/LinkedHashMap#size()I": 1,
          "java/util/LinkedHashMap#values()Ljava/util/Collection;": 1,
          "java/util/List#getFirst()Ljava/lang/Object;": 1,
          "java/util/List#of(Ljava/lang/Object;)Ljava/util/List;": 4,
          "java/util/List#of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/List#of([Ljava/lang/Object;)Ljava/util/List;": 6,
          "java/util/Map#copyOf(Ljava/util/Map;)Ljava/util/Map;": 1,
          "java/util/Map#of()Ljava/util/Map;": 2,
          "java/util/Objects#requireNonNullElse(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Queue#clear()V": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 3,
          "java/util/Set#clear()V": 1,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 4,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 1,
          "java/util/concurrent/atomic/AtomicBoolean#getAndSet(Z)Z": 1,
          "java/util/concurrent/atomic/AtomicReference#get()Ljava/lang/Object;": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 2,
          "java/util/stream/IntStream#rangeClosed(II)Ljava/util/stream/IntStream;": 1,
          "net/fabricmc/fabric/api/creativetab/v1/FabricCreativeModeTab#builder()Lnet/minecraft/world/item/CreativeModeTab$Builder;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 4,
          "net/mehvahdjukaar/polytone/common/Weather#name()Ljava/lang/String;": 1,
          "net/mehvahdjukaar/polytone/content/colormap/IColorGetter#getItemColor(Lnet/minecraft/world/item/ItemStack;I)I": 1,
          "net/mehvahdjukaar/polytone/content/config/CollapsibleOptionsList#children()Ljava/util/List;": 1,
          "net/mehvahdjukaar/polytone/content/config/ConfigScreen#rebuildWidgets()V": 1,
          "net/mehvahdjukaar/polytone/content/particle/custom/ParticleRenderMode#name()Ljava/lang/String;": 1,
          "net/mehvahdjukaar/polytone/content/particle/custom/ParticleRenderMode#ordinal()I": 2,
          "net/mehvahdjukaar/polytone/content/particle/custom/RotationMode#name()Ljava/lang/String;": 1,
          "net/mehvahdjukaar/polytone/content/particle/custom/RotationMode#ordinal()I": 1,
          "net/mehvahdjukaar/polytone/content/slotify/GuiModifier$Type#name()Ljava/lang/String;": 1,
          "net/mehvahdjukaar/polytone/content/tabs/ItemPredicate$And#AND": 1,
          "net/mehvahdjukaar/polytone/content/tabs/ItemPredicate$IDMatch#ID_MATCH": 1,
          "net/mehvahdjukaar/polytone/content/tabs/ItemPredicate$ItemStackMatch#ITEMSTACK_MATCH": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 14,
          "net/minecraft/client/OptionInstance#codec()Lcom/mojang/serialization/Codec;": 1,
          "net/minecraft/client/OptionInstance#get()Ljava/lang/Object;": 3,
          "net/minecraft/client/OptionInstance#set(Ljava/lang/Object;)V": 1,
          "net/minecraft/client/OptionInstance#values()Lnet/minecraft/client/OptionInstance$ValueSet;": 1,
          "net/minecraft/client/gui/components/AbstractWidget#getX()I": 1,
          "net/minecraft/client/gui/components/CycleButton$ValueListSupplier#create(Ljava/util/Collection;)Lnet/minecraft/client/gui/components/CycleButton$ValueListSupplier;": 1,
          "net/minecraft/client/gui/components/OptionsList$AbstractEntry#<init>()V": 1,
          "net/minecraft/client/gui/layouts/HeaderAndFooterLayout#arrangeElements()V": 1,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/options/OptionsSubScreen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getRandom()Lnet/minecraft/util/RandomSource;": 1,
          "net/minecraft/client/particle/Particle#getBoundingBox()Lnet/minecraft/world/phys/AABB;": 1,
          "net/minecraft/client/particle/Particle#getLifetime()I": 1,
          "net/minecraft/client/particle/Particle#remove()V": 1,
          "net/minecraft/client/renderer/BiomeColors#getAverageGrassColor(Lnet/minecraft/client/renderer/block/BlockAndTintGetter;Lnet/minecraft/core/BlockPos;)I": 1,
          "net/minecraft/core/registries/BuiltInRegistries#FLUID": 1,
          "net/minecraft/core/registries/Registries#BIOME": 1,
          "net/minecraft/core/registries/Registries#BLOCK": 1,
          "net/minecraft/core/registries/Registries#DIMENSION_TYPE": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 2,
          "net/minecraft/resources/Identifier#parse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/server/packs/PackType#CLIENT_RESOURCES": 1,
          "net/minecraft/util/RandomSource#setSeed(J)V": 1,
          "net/minecraft/world/attribute/EnvironmentAttributeMap#EMPTY": 2,
          "net/minecraft/world/attribute/EnvironmentAttributeMap#builder()Lnet/minecraft/world/attribute/EnvironmentAttributeMap$Builder;": 2,
          "net/minecraft/world/item/CreativeModeTabs#searchTab()Lnet/minecraft/world/item/CreativeModeTab;": 1,
          "net/minecraft/world/item/CreativeModeTabs#validate()V": 1,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 2,
          "net/minecraft/world/item/ItemStack#isSameItemSameComponents(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Z": 2,
          "net/minecraft/world/level/GrassColor#getDefaultColor()I": 1,
          "net/minecraft/world/level/Level#getBiome(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/core/Holder;": 1,
          "net/minecraft/world/level/Level#registryAccess()Lnet/minecraft/core/RegistryAccess;": 1,
          "net/minecraft/world/level/block/Block#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/block/Blocks#GRASS_BLOCK": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 4,
          "net/minecraft/world/phys/Vec3#atCenterOf(Lnet/minecraft/core/Vec3i;)Lnet/minecraft/world/phys/Vec3;": 2,
          "net/objecthunter/exp4j/Expression#evaluate()D": 1,
          "net/objecthunter/exp4j/ExpressionBuilder#build()Lnet/objecthunter/exp4j/Expression;": 1,
          "new com/google/gson/JsonObject": 1,
          "new net/minecraft/client/model/geom/builders/MeshDefinition": 1,
          "new net/minecraft/server/packs/resources/MultiPackResourceManager": 1,
          "org/lwjgl/system/MemoryStack#stackPush()Lorg/lwjgl/system/MemoryStack;": 1
        },
        "runs": [
          {
            "class": "net/mehvahdjukaar/polytone/common/exp/ThreadSafeExpression",
            "method": "varBuilder",
            "desc": "()Lnet/mehvahdjukaar/polytone/common/exp/IExpression$IVars;",
            "value": "obj#1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/shaders/ExpressionUniformBuffers",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/shaders/ExpressionUniformBuffers",
            "method": "bindBlocksToProgram",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/sound/ParticleSoundEmitter",
            "method": "distanceDelay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/struc/VersionRange",
            "method": "any",
            "desc": "()Lnet/mehvahdjukaar/polytone/common/struc/VersionRange;",
            "value": "obj#39"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/struc/VersionRange",
            "method": "min",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/struc/VersionRange",
            "method": "max",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/struc/VersionRange",
            "method": "minInclusive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/struc/VersionRange",
            "method": "maxInclusive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/colormap/BiomeCompoundColorGetter",
            "method": "needsToFillTexture",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/impl/ColormapExp",
            "method": "usesBiome",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/ColorUtils",
            "method": "unpack",
            "desc": "(I)[F",
            "value": "obj#74"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/ColorUtils",
            "method": "blendColor",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/impl/IColormapExp$2",
            "method": "usesState",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/exp/PolytoneExpression$VarBuilder",
            "method": "list",
            "desc": "()Ljava/util/Set;",
            "value": "obj#105"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/GuiModifierPreview$PickedElement",
            "method": "slotIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/GuiModifierPreview$PickedElement",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/GuiModifierPreview$PickedElement",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/GuiModifierPreview$PickedElement",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/GuiModifierPreview$PickedElement",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/ParticlePreviewState",
            "method": "active",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/config/StringConfig",
            "method": "validateValue",
            "desc": "(Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#215"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/config/StringConfig",
            "method": "validateValue",
            "desc": "(Ljava/lang/Object;)Ljava/util/Optional;",
            "value": "obj#221"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/RotationMode",
            "method": "alwaysFacesCamera",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "x",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "y",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "z",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "rx",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "ry",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "rz",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "rw",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "size",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "r",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "g",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "b",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "a",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/custom/render/ModelParticleRenderState$ParticleRenderInstance",
            "method": "light",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/WidgetModifier",
            "method": "matches",
            "desc": "(Lnet/minecraft/client/gui/components/AbstractWidget;)Z",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/WidgetModifier",
            "method": "xOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/WidgetModifier",
            "method": "yOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/WidgetModifier",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/mixins/CreativeScreenPickMixin",
            "method": "self",
            "desc": "()Lnet/minecraft/client/gui/screens/inventory/AbstractContainerScreen;",
            "value": "obj#307"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/modifiers/ParticleModifier",
            "method": "ofColormap",
            "desc": "(Lnet/mehvahdjukaar/polytone/content/colormap/IColorGetter;)Lnet/mehvahdjukaar/polytone/content/particle/modifiers/ParticleModifier;",
            "value": "obj#329"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/particle/modifiers/ParticleModifier",
            "method": "hasColormap",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/sound/BlockSoundEmitter",
            "method": "distanceDelay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/config/SupportScreen$Link",
            "method": "color",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/colormap/IColorGetter$OfLayers",
            "method": "color",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)I",
            "value": "-1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/colormap/IColorGetter$OfLayers",
            "method": "getItemColor",
            "desc": "(Lnet/minecraft/world/item/ItemStack;I)I",
            "value": "-1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/attributes/EnvironmentAttributeMapMod",
            "method": "builder",
            "desc": "()Lnet/mehvahdjukaar/polytone/common/attributes/EnvironmentAttributeMapMod$Builder;",
            "value": "obj#394"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/attributes/EnvironmentAttributeMapMod",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/PolytoneRenderTypes",
            "method": "isLeashRenderOn",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/config/PresetSlider$PresetSliderValueSet",
            "method": "validateValue",
            "desc": "(Ljava/lang/Integer;)Ljava/util/Optional;",
            "value": "obj#436"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/config/PresetSlider$PresetSliderValueSet",
            "method": "maxIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/config/PresetSlider$PresetSliderValueSet",
            "method": "validateValue",
            "desc": "(Ljava/lang/Object;)Ljava/util/Optional;",
            "value": "obj#446"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/proxies/ParticleProxy",
            "method": "red",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/proxies/ParticleProxy",
            "method": "green",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/proxies/ParticleProxy",
            "method": "blue",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/proxies/ParticleProxy",
            "method": "alpha",
            "desc": "()D",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/proxies/ParticleProxy",
            "method": "roll",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/proxies/ParticleProxy",
            "method": "size",
            "desc": "()D",
            "value": "0.15000000596046448"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/proxies/ParticleProxy",
            "method": "color",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/proxies/ParticleProxy",
            "method": "custom",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/proxies/ParticleProxy",
            "method": "custom",
            "desc": "(Ljava/lang/String;)D",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/config/ConfigScreen$SpacerTooltip",
            "method": "getWidth",
            "desc": "(Lnet/minecraft/client/gui/Font;)I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/config/ConfigScreen$SpacerTooltip",
            "method": "getHeight",
            "desc": "(Lnet/minecraft/client/gui/Font;)I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/config/ConfigScreen$SpacerTooltip",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/compat/platform/FabricSeasonsCompatImpl",
            "method": "getSeasonNumber",
            "desc": "(Lnet/minecraft/world/level/Level;)F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/packinfo/PackInfoBadge",
            "method": "shouldShow",
            "desc": "(Lnet/mehvahdjukaar/polytone/content/packinfo/PackInfo;)Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/packinfo/PackInfo",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/impl/IColormapExp$1",
            "method": "usesState",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/compat/EtfCompat",
            "method": "getLastKnownTextureVariantIndex",
            "desc": "(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;)I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/IntRange$RangeTarget",
            "method": "min",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/slotify/IntRange$RangeTarget",
            "method": "max",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/PlatStuff",
            "method": "isModStateValid",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/mehvahdjukaar/polytone/PlatStuff",
            "method": "compatACModifyGamma",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/PlatStuff",
            "method": "getCamRoll",
            "desc": "(Lnet/minecraft/client/Camera;)F",
            "value": "0f"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/biome/BiomeEffectsManager",
            "method": "hasModifiedAttributes",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/content/biome/BiomeEffectsManager",
            "method": "hasPostAttributes",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/TokenBucket",
            "method": "tryAcquire",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/Weather",
            "method": "get",
            "desc": "(Lnet/minecraft/world/level/Level;)Lnet/mehvahdjukaar/polytone/common/Weather;",
            "value": "obj#595"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/attributes/IExtendedEnvAttrEntry$Blend",
            "method": "biome",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/attributes/IExtendedEnvAttrEntry$Blend",
            "method": "time",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/mehvahdjukaar/polytone/common/expressions/ExpTicker",
            "method": "getGuiTime",
            "desc": "()I",
            "value": "1"
          }
        ],
        "insns": 3992
      },
      "verdict": "no",
      "summary": "only 4 of 64 listening patch sites have a hook (6%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "presencefootsteps",
      "name": "Presence Footsteps",
      "version": "1.14.0+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "eu/ha3/presencefootsteps/PresenceFootsteps"
        },
        {
          "kind": "modmenu",
          "value": "eu/ha3/presencefootsteps/PFModMenuFactory"
        }
      ],
      "mixin_configs": [
        "presencefootsteps.mixin.json"
      ],
      "depends": [
        "kirin"
      ],
      "classes": 107,
      "methods": 678,
      "sites": [
        {
          "mixin": "eu/ha3/presencefootsteps/mixins/IEntity",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onPlayStepSounds",
          "kind": "inject",
          "method": "walkingStepSound",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#walkingStepSound HEAD"
        },
        {
          "mixin": "eu/ha3/presencefootsteps/mixins/MBlockSettings",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$Properties"
          ],
          "handler": "onCopy",
          "kind": "inject",
          "method": "ofLegacyCopy",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour$Properties#ofLegacyCopy RETURN"
        },
        {
          "mixin": "eu/ha3/presencefootsteps/mixins/MClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onHandleSoundEffect",
          "kind": "inject",
          "method": "handleSoundEvent",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/multiplayer/ClientLevel.playSeededSound(Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/core/Holder;Lnet/minecraft/sounds/SoundSource;FFJ)V",
          "cancellable": true,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        }
      ],
      "listening": 2,
      "accessors": 2,
      "hooks": {
        "net_from_server": 1
      },
      "wanted": {
        "net/minecraft/world/entity/Entity#walkingStepSound @HEAD": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour$Properties#ofLegacyCopy @RETURN": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "VersionParsingException",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MappingResolver",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 107,
        "features": {
          "events": 1,
          "mixin": 8
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 107,
        "methods": 445,
        "tried": 445,
        "completed": 169,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Leu/ha3/presencefootsteps/config/EntitySelector;#clone()Ljava/lang/Object;": 1,
          "[Leu/ha3/presencefootsteps/sound/State;#clone()Ljava/lang/Object;": 1,
          "[Leu/ha3/presencefootsteps/sound/generator/Locomotion;#clone()Ljava/lang/Object;": 1,
          "[Leu/ha3/presencefootsteps/sound/generator/WingedStepSoundGenerator$FlightState;#clone()Ljava/lang/Object;": 1,
          "[Leu/ha3/presencefootsteps/sound/player/DelayedSoundPlayer$State;#clone()Ljava/lang/Object;": 1,
          "com/google/gson/Gson#fromJson(Ljava/io/Reader;Ljava/lang/Class;)Ljava/lang/Object;": 1,
          "com/google/gson/JsonObject#has(Ljava/lang/String;)Z": 2,
          "com/minelittlepony/api/pony/Pony#getManager()Lcom/minelittlepony/api/pony/PonyManager;": 2,
          "com/minelittlepony/common/client/gui/GameGui#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "com/minelittlepony/common/client/gui/ScrollContainer#children()Ljava/util/List;": 1,
          "com/minelittlepony/common/util/settings/Setting#get()Ljava/lang/Object;": 23,
          "com/minelittlepony/common/util/settings/Setting#set(Ljava/lang/Object;)Ljava/lang/Object;": 4,
          "com/mojang/datafixers/util/Unit#INSTANCE": 1,
          "com/mojang/serialization/MapCodec#compressor(Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/KeyCompressor;": 1,
          "com/mojang/serialization/MapCodec#keys(Lcom/mojang/serialization/DynamicOps;)Ljava/util/stream/Stream;": 1,
          "com/mojang/serialization/MapLike#entries()Ljava/util/stream/Stream;": 1,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 1,
          "java/util/Random#nextFloat()F": 2,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 3,
          "java/util/concurrent/CompletableFuture#getNow(Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "java/util/function/BiFunction#apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 5,
          "net/minecraft/client/Minecraft#isPaused()Z": 2,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ENTITY_TYPE": 2,
          "net/minecraft/network/protocol/game/ClientboundSoundPacket#getSound()Lnet/minecraft/core/Holder;": 1,
          "net/minecraft/server/packs/resources/ResourceManager#getResourceStack(Lnet/minecraft/resources/Identifier;)Ljava/util/List;": 2,
          "net/minecraft/sounds/SoundEvent#location()Lnet/minecraft/resources/Identifier;": 3,
          "net/minecraft/util/Mth#clamp(FFF)F": 1,
          "net/minecraft/util/Mth#lerp(FFF)F": 3,
          "net/minecraft/world/entity/Entity#getBoundingBox()Lnet/minecraft/world/phys/AABB;": 1,
          "net/minecraft/world/entity/Entity#getType()Lnet/minecraft/world/entity/EntityType;": 2,
          "net/minecraft/world/entity/Entity#level()Lnet/minecraft/world/level/Level;": 2,
          "net/minecraft/world/entity/EntityType#getKey(Lnet/minecraft/world/entity/EntityType;)Lnet/minecraft/resources/Identifier;": 5,
          "net/minecraft/world/entity/EntityTypes#PLAYER": 2,
          "net/minecraft/world/entity/LivingEntity#getBbWidth()F": 1,
          "net/minecraft/world/entity/LivingEntity#getYRot()F": 1,
          "net/minecraft/world/entity/LivingEntity#isInWater()Z": 2,
          "net/minecraft/world/entity/LivingEntity#level()Lnet/minecraft/world/level/Level;": 3,
          "net/minecraft/world/entity/LivingEntity#onGround()Z": 1,
          "net/minecraft/world/level/block/Block#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/block/SoundType#getStepSound()Lnet/minecraft/sounds/SoundEvent;": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 1,
          "net/minecraft/world/level/block/state/BlockState#getCollisionShape(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/shapes/VoxelShape;": 1,
          "net/minecraft/world/level/block/state/BlockState#getProperties()Ljava/util/Collection;": 1,
          "net/minecraft/world/level/block/state/BlockState#isAir()Z": 1,
          "net/minecraft/world/level/block/state/BlockState#typeHolder()Lnet/minecraft/core/Holder;": 3,
          "new com/google/gson/GsonBuilder": 2,
          "new com/google/gson/JsonParseException": 2,
          "new com/minelittlepony/common/client/gui/element/Slider": 1,
          "new it/unimi/dsi/fastutil/objects/Object2ObjectOpenHashMap": 1
        },
        "runs": [
          {
            "class": "eu/ha3/presencefootsteps/sound/player/ImmediateSoundPlayer$UncappedSoundInstance",
            "method": "getMaxVolume",
            "desc": "()F",
            "value": "3f"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/Association",
            "method": "isResult",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/Association",
            "method": "forcePlay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/State",
            "method": "canTransition",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/State",
            "method": "isExtraLoud",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/Modifier",
            "method": "reevaluateDistance",
            "desc": "(Leu/ha3/presencefootsteps/sound/State;F)F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/LocomotionLookup",
            "method": "contains",
            "desc": "(Lnet/minecraft/resources/Identifier;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/StateLookup$Bucket",
            "method": "contains",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/AssociationPool",
            "method": "wasLastMatchGolem",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/PrimitiveLookup",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/PrimitiveLookup",
            "method": "contains",
            "desc": "(Ljava/lang/Object;Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/PrimitiveLookup",
            "method": "getAssociation",
            "desc": "(Ljava/lang/Object;Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#69"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/StateLookup$Key",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/StateLookup$Key",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/StateLookup$Key",
            "method": "empty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/StateLookup$Key",
            "method": "isTag",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/StateLookup$Key",
            "method": "isWildcard",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/BiomeVarianceLookup$BiomeVariance",
            "method": "volume",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/BiomeVarianceLookup$BiomeVariance",
            "method": "pitch",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/Lookup$UnionDataSegment",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/Isolator",
            "method": "empty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/SoundsKey",
            "method": "isResult",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/SoundsKey",
            "method": "isSilent",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/SoundsKey",
            "method": "isVanilla",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/SoundsKey",
            "method": "isEmitter",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/acoustics/ChanceAcoustic",
            "method": "probability",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/mixins/MSoundSystem",
            "method": "adjustSoundVolume",
            "desc": "(FLnet/minecraft/client/resources/sounds/SoundInstance;)F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/Options",
            "method": "ofGetter",
            "desc": "(Ljava/lang/String;Leu/ha3/presencefootsteps/sound/Options$FloatSupplier;)Leu/ha3/presencefootsteps/sound/Options;",
            "value": "obj#190"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/Options",
            "method": "and",
            "desc": "(Leu/ha3/presencefootsteps/sound/Options;)Leu/ha3/presencefootsteps/sound/Options;",
            "value": "obj#193"
          },
          {
            "class": "eu/ha3/presencefootsteps/util/MathUtil",
            "method": "randAB",
            "desc": "(Ljava/util/Random;FF)F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/util/MathUtil",
            "method": "randAB",
            "desc": "(Ljava/util/Random;JJ)J",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/BiomeVarianceLookup",
            "method": "lookup",
            "desc": "(Lnet/minecraft/resources/Identifier;)Leu/ha3/presencefootsteps/world/BiomeVarianceLookup$BiomeVariance;",
            "value": "obj#105"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/BiomeVarianceLookup",
            "method": "contains",
            "desc": "(Lnet/minecraft/resources/Identifier;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/BiomeVarianceLookup",
            "method": "lookup",
            "desc": "(Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "obj#105"
          },
          {
            "class": "eu/ha3/presencefootsteps/PFConfig",
            "method": "volumeScaleToInt",
            "desc": "(F)I",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/util/Period",
            "method": "random",
            "desc": "(Ljava/util/Random;)F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/util/Period",
            "method": "min",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/util/Period",
            "method": "max",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/StateLookup",
            "method": "contains",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/StateLookup",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/StateLookup",
            "method": "contains",
            "desc": "(Ljava/lang/Object;Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/config/VolumeOption",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "eu/ha3/presencefootsteps/config/VolumeOption",
            "method": "volumeScaleToInt",
            "desc": "(F)I",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/util/Range",
            "method": "exactly",
            "desc": "(F)Leu/ha3/presencefootsteps/util/Range;",
            "value": "obj#294"
          },
          {
            "class": "eu/ha3/presencefootsteps/util/Range",
            "method": "random",
            "desc": "(Ljava/util/Random;)F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/util/Range",
            "method": "min",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/util/Range",
            "method": "max",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/PFDebugHud",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/Options$2",
            "method": "containsKey",
            "desc": "(Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/config/EntitySelector$3",
            "method": "test",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/config/EntitySelector$3",
            "method": "test",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/AbstractSubstrateLookup",
            "method": "getAssociation",
            "desc": "(Ljava/lang/Object;Ljava/lang/String;)Ljava/util/Optional;",
            "value": "obj#320"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/AbstractSubstrateLookup",
            "method": "contains",
            "desc": "(Ljava/lang/Object;Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/AbstractSubstrateLookup",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/MotionTracker",
            "method": "getMotionX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/MotionTracker",
            "method": "getMotionY",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/MotionTracker",
            "method": "getMotionZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/MotionTracker",
            "method": "getHorizontalSpeed",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/MotionTracker",
            "method": "isStationary",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/MotionTracker",
            "method": "getDistanceTraveled",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/MotionTracker",
            "method": "getFallDistance",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/config/EntitySelector$2",
            "method": "test",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/config/EntitySelector$2",
            "method": "test",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/config/EntitySelector$1",
            "method": "test",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/config/EntitySelector$1",
            "method": "test",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/Options$1",
            "method": "containsKey",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/Options$1",
            "method": "get",
            "desc": "(Ljava/lang/String;)F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/QuadrupedModifier",
            "method": "reevaluateDistance",
            "desc": "(Leu/ha3/presencefootsteps/sound/State;F)F",
            "value": "0f"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/GolemLookup",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "eu/ha3/presencefootsteps/world/GolemLookup",
            "method": "contains",
            "desc": "(Ljava/lang/Object;Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/acoustics/EventSelectorAcoustics$1",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/TerrestrialStepSoundGenerator",
            "method": "updateImmobileState",
            "desc": "(F)Z",
            "value": "0"
          },
          {
            "class": "eu/ha3/presencefootsteps/sound/generator/TerrestrialStepSoundGenerator",
            "method": "getOffsetMinus",
            "desc": "()D",
            "value": "0"
          }
        ],
        "insns": 2630
      },
      "verdict": "partly",
      "summary": "1 of 2 listening patch sites land on a Horizon hook (50%); of 3 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "reeses-sodium-options",
      "name": "Reese's Sodium Options",
      "version": "2.2.6-beta.3+mc26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "controlify",
          "value": "me/flashyreese/mods/reeses_sodium_options/client/controlify/ReeseSodiumOptionsControlifyEntrypoint"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfigEntryPoint"
        }
      ],
      "mixin_configs": [
        "reeses-sodium-options.mixins.json"
      ],
      "depends": [
        "sodium"
      ],
      "classes": 97,
      "methods": 1078,
      "sites": [
        {
          "mixin": "me/flashyreese/mods/reeses_sodium_options/mixin/sodium/MixinSodiumOptionsGUI",
          "targets": [
            "net/caffeinemc/mods/sodium/client/gui/VideoSettingsScreen"
          ],
          "handler": "postInit",
          "kind": "inject",
          "method": "init",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/gui/VideoSettingsScreen#init TAIL"
        }
      ],
      "listening": 1,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/caffeinemc/mods/sodium/client/gui/VideoSettingsScreen#init @TAIL": 1
      },
      "wanted_calls": {},
      "api": [],
      "code": {
        "classes": 97,
        "features": {
          "screen": 1,
          "mixin": 3
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 97,
        "methods": 831,
        "tried": 600,
        "completed": 300,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/flashyreese/mods/reeses_sodium_options/client/gui/control/ControlGuide$Input;#clone()Ljava/lang/Object;": 1,
          "[Lme/flashyreese/mods/reeses_sodium_options/client/gui/widget/ScrollBarWidget$ScrollDirection;#clone()Ljava/lang/Object;": 1,
          "java/lang/Runnable#run()V": 2,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#of()Ljava/util/List;": 2,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 1,
          "java/util/function/IntSupplier#getAsInt()I": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 12,
          "java/util/function/UnaryOperator#identity()Ljava/util/function/UnaryOperator;": 1,
          "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen#children()Ljava/util/List;": 1,
          "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen#getFocused()Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/AbstractFrame#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/AbstractFrame#mouseDragged(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z": 1,
          "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/AbstractFrame#mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z": 1,
          "net/caffeinemc/mods/sodium/api/config/structure/ConfigBuilder#registerOwnModOptions()Lnet/caffeinemc/mods/sodium/api/config/structure/ModOptionsBuilder;": 1,
          "net/caffeinemc/mods/sodium/client/config/ConfigManager#CONFIG": 3,
          "net/caffeinemc/mods/sodium/client/config/structure/BooleanOption#isEnabled()Z": 1,
          "net/caffeinemc/mods/sodium/client/config/structure/BooleanOption#shouldHideControl()Z": 2,
          "net/caffeinemc/mods/sodium/client/config/structure/ExternalButtonOption#isEnabled()Z": 1,
          "net/caffeinemc/mods/sodium/client/config/structure/IntegerOption#getSteppedValidator()Lnet/caffeinemc/mods/sodium/api/config/option/SteppedValidator;": 2,
          "net/caffeinemc/mods/sodium/client/config/structure/IntegerOption#getValidatedValue()Ljava/lang/Object;": 1,
          "net/caffeinemc/mods/sodium/client/config/structure/IntegerOption#isEnabled()Z": 2,
          "net/caffeinemc/mods/sodium/client/config/structure/IntegerOption#shouldHideControl()Z": 2,
          "net/caffeinemc/mods/sodium/client/config/structure/ModOptions#configId()Ljava/lang/String;": 1,
          "net/caffeinemc/mods/sodium/client/config/structure/Option#getControl()Lnet/caffeinemc/mods/sodium/client/gui/options/control/Control;": 2,
          "net/caffeinemc/mods/sodium/client/config/structure/Option#getName()Lnet/minecraft/network/chat/Component;": 2,
          "net/caffeinemc/mods/sodium/client/config/structure/Option#getTooltip()Lnet/minecraft/network/chat/Component;": 1,
          "net/caffeinemc/mods/sodium/client/config/structure/Option#isEnabled()Z": 1,
          "net/caffeinemc/mods/sodium/client/config/structure/StatefulOption#getAppliedValue()Ljava/lang/Object;": 1,
          "net/caffeinemc/mods/sodium/client/config/structure/StatefulOption#hasChanged()Z": 1,
          "net/caffeinemc/mods/sodium/client/config/structure/StatefulOption#isEnabled()Z": 2,
          "net/caffeinemc/mods/sodium/client/config/structure/StatefulOption#resetToDefault()V": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#isFocused()Z": 2,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#isMouseOver(DD)Z": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#keyPressed(Lnet/minecraft/client/input/KeyEvent;)Z": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#mouseDragged(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#mouseScrolled(DDDD)Z": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#narrationPriority()Lnet/minecraft/client/gui/narration/NarratableEntry$NarrationPriority;": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#setFocused(Z)V": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement#updateNarration(Lnet/minecraft/client/gui/narration/NarrationElementOutput;)V": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 4,
          "net/minecraft/client/gui/ComponentPath#leaf(Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/ComponentPath;": 2,
          "net/minecraft/client/gui/Font#width(Lnet/minecraft/network/chat/FormattedText;)I": 1,
          "net/minecraft/client/gui/components/events/GuiEventListener#nextFocusPath(Lnet/minecraft/client/gui/navigation/FocusNavigationEvent;)Lnet/minecraft/client/gui/ComponentPath;": 1,
          "net/minecraft/client/gui/narration/NarratableEntry$NarrationPriority#NONE": 2,
          "net/minecraft/client/gui/navigation/ScreenDirection#ordinal()I": 1,
          "net/minecraft/client/gui/screens/Screen#init()V": 1,
          "net/minecraft/client/gui/screens/Screen#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "net/minecraft/client/gui/screens/Screen#mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z": 1,
          "net/minecraft/client/input/KeyEvent#isConfirmation()Z": 1,
          "net/minecraft/client/input/KeyEvent#key()I": 1,
          "net/minecraft/client/input/KeyEvent#shortcutKey()I": 3,
          "net/minecraft/client/input/MouseButtonEvent#button()I": 8,
          "net/minecraft/client/input/MouseButtonEvent#x()D": 2,
          "net/minecraft/network/chat/Component#copy()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Style#EMPTY": 1,
          "net/minecraft/util/Mth#clamp(III)I": 7,
          "net/minecraft/util/StringUtil#filterText(Ljava/lang/String;)Ljava/lang/String;": 1,
          "net/minecraft/util/Util#offsetByCodepoints(Ljava/lang/String;II)I": 2,
          "new net/caffeinemc/mods/sodium/client/util/Dim2i": 4,
          "new net/minecraft/client/gui/navigation/ScreenRectangle": 2,
          "org/lwjgl/sdl/SDLMouse#SDL_GetMouseState(Ljava/nio/FloatBuffer;Ljava/nio/FloatBuffer;)I": 2
        },
        "runs": [
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/AbstractOptionRow",
            "method": "controlKeyPressed",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/AbstractOptionRow",
            "method": "isDragging",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/AbstractOptionRow",
            "method": "handleBackNavigation",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/AbstractOptionRow",
            "method": "isRowFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/AbstractOptionRow",
            "method": "canShowControlGuide",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/AbstractOptionRow",
            "method": "optionShowsControl",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/AbstractOptionRow",
            "method": "rowBorderColor",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/OptionUiState;)I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/AbstractOptionRow",
            "method": "isSelectedSearchResult",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/OptionUiState;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex",
            "method": "maxResults",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex",
            "method": "minScore",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex",
            "method": "rerankWithEditDistance",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex",
            "method": "rerankLimit",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex",
            "method": "rerankWeight",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame$Builder",
            "method": "withDimension",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/layout/LayoutBounds;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame$Builder;",
            "value": "obj#69"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame$Builder",
            "method": "withRenderOutline",
            "desc": "(Z)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame$Builder;",
            "value": "obj#72"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame$Builder",
            "method": "withScreen",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame$Builder;",
            "value": "obj#75"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame$Builder",
            "method": "addChild",
            "desc": "(Ljava/util/function/Supplier;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame$Builder;",
            "value": "obj#78"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "setDimension",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/layout/LayoutBounds;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#81"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "shouldRenderOutline",
            "desc": "(Z)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#90"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "onSetTab",
            "desc": "(Ljava/lang/Runnable;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#108"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "setTabRailSelectedTab",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/Holder;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#117"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "setTabRailSelectedGroup",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/Holder;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#126"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "setTabRailScrollBarOffset",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/Holder;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#135"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "setScrollSelectedTabIntoView",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/Holder;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#144"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "setOptionPageScrollBarOffset",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/Holder;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#153"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "setManuallyCollapsedTabGroups",
            "desc": "(Ljava/util/Set;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#162"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "setOptionStateStore",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/OptionStateStore;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#171"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "withScreen",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#180"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder",
            "method": "withModOptions",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/config/structure/ModOptions;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabFrame$Builder;",
            "value": "obj#189"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabSelectionState",
            "method": "scrollSelectedPageToStart",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabSelectionState",
            "method": "scrollSelectedPageToEnd",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabSelectionState",
            "method": "scrollSelectedPage",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/SodiumControlElementOptionRow",
            "method": "handleBackNavigation",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/SodiumControlElementOptionRow",
            "method": "undoFocusedActionButton",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/controlify/RsoSearchTextFieldProcessor$TextFieldInputTarget",
            "method": "supportsCharInput",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/controlify/RsoSearchTextFieldProcessor$TextFieldInputTarget",
            "method": "supportsKeyCodeInput",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/controlify/RsoSearchTextFieldProcessor$TextFieldInputTarget",
            "method": "supportsCursorMovement",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/controlify/RsoSearchTextFieldProcessor$TextFieldInputTarget",
            "method": "supportsCopying",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "isSearchTextFieldFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "clearSearchText",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "keyPressedOptionListNavigation",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "undoFocusedOption",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "restoreFocusedOptionForSelectedTab",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "focusOptionRow",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/OptionRow;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "handleFocusedOptionBackNavigation",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "focusFirstOptionInSelectedTab",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "restorePreviousArrowFocus",
            "desc": "(Lnet/minecraft/client/gui/navigation/ScreenDirection;Lnet/minecraft/client/gui/ComponentPath;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "containsFocusLeaf",
            "desc": "(Lnet/minecraft/client/gui/components/events/GuiEventListener;Lnet/minecraft/client/gui/components/events/GuiEventListener;)Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/SodiumVideoOptionsScreen",
            "method": "shouldCloseOnEsc",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder",
            "method": "withDimension",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/layout/LayoutBounds;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder;",
            "value": "obj#288"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder",
            "method": "withRenderOutline",
            "desc": "(Z)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder;",
            "value": "obj#289"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder",
            "method": "withPage",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/config/structure/Page;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder;",
            "value": "obj#290"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder",
            "method": "withScreen",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder;",
            "value": "obj#291"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder",
            "method": "withModOptions",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/config/structure/ModOptions;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder;",
            "value": "obj#292"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder",
            "method": "withOptionStateStore",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/OptionStateStore;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder;",
            "value": "obj#293"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/ExternalButtonOptionRow",
            "method": "controlContentWidth",
            "desc": "()I",
            "value": "65"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageLayout$OptionRow",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonElement",
            "method": "keyPressed",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonElement",
            "method": "isFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabGroupModel",
            "method": "visibleHeight",
            "desc": "(Ljava/util/List;)I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollFrameLayout",
            "method": "contentWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollFrameLayout",
            "method": "contentHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollFrameLayout",
            "method": "hasScrollBars",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollFrameLayout",
            "method": "canScrollHorizontal",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollFrameLayout",
            "method": "canScrollVertical",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame",
            "method": "builder",
            "desc": "()Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder;",
            "value": "obj#352"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame",
            "method": "horizontalOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame",
            "method": "verticalOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame",
            "method": "builder",
            "desc": "()Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/BasicFrame$Builder;",
            "value": "obj#395"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageLayout$LabelRow",
            "method": "collapsible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageLayout$LabelRow",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageLayout$LabelRow",
            "method": "collapsed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/control/ControlGuide",
            "method": "press",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/control/ControlGuide;",
            "value": "obj#414"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/control/ControlGuide",
            "method": "navigationLeftRight",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/control/ControlGuide;",
            "value": "obj#415"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/control/ControlGuide",
            "method": "previousTab",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/control/ControlGuide;",
            "value": "obj#416"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/control/ControlGuide",
            "method": "nextTab",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/control/ControlGuide;",
            "value": "obj#417"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/BaseWidget",
            "method": "isHovered",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/BaseWidget",
            "method": "isKeyboardFocusVisible",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/BaseWidget",
            "method": "shouldRenderFocusBorder",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/BaseWidget",
            "method": "shouldRenderFocusBorder",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/BaseWidget",
            "method": "isFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabRail",
            "method": "mouseClicked",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabRail",
            "method": "mouseDragged",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabRail",
            "method": "mouseReleased",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabRail",
            "method": "mouseScrolled",
            "desc": "(DDDD)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder",
            "method": "withDimension",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/layout/LayoutBounds;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder;",
            "value": "obj#472"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder",
            "method": "withRenderOutline",
            "desc": "(Z)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder;",
            "value": "obj#475"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder",
            "method": "withVerticalScrollBarOffset",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/Holder;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder;",
            "value": "obj#478"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder",
            "method": "withHorizontalScrollBarOffset",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/state/Holder;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder;",
            "value": "obj#481"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder",
            "method": "withFrame",
            "desc": "(Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/AbstractFrame;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder;",
            "value": "obj#484"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder",
            "method": "withScreen",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder;",
            "value": "obj#487"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder",
            "method": "withModOptions",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/config/structure/ModOptions;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/ScrollableFrame$Builder;",
            "value": "obj#490"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/TabButtonWidget",
            "method": "keyPressed",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController",
            "method": "actionButtonWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController",
            "method": "keyPressedFocusedChild",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController",
            "method": "isLayoutHeld",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController",
            "method": "shouldEnterActionButton",
            "desc": "(Lnet/minecraft/client/gui/navigation/FocusNavigationEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController",
            "method": "shouldReturnToControl",
            "desc": "(Lnet/minecraft/client/gui/navigation/FocusNavigationEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/IntegerSliderOptionRow",
            "method": "controlContentWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/IntegerSliderOptionRow",
            "method": "mouseDragged",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/IntegerSliderOptionRow",
            "method": "controlKeyPressed",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/IntegerSliderOptionRow",
            "method": "activateControl",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/IntegerSliderOptionRow",
            "method": "handleBackNavigation",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/IntegerSliderOptionRow",
            "method": "adjustValue",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController$FocusPathResult",
            "method": "handled",
            "desc": "(Lnet/minecraft/client/gui/ComponentPath;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController$FocusPathResult;",
            "value": "obj#565"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController$FocusPathResult",
            "method": "unhandled",
            "desc": "()Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController$FocusPathResult;",
            "value": "obj#566"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/action/OptionActionButtonController$FocusPathResult",
            "method": "handled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/controlify/RsoSearchTextFieldProcessor",
            "method": "shouldKeepFocusOnKeyboardMode",
            "desc": "(Ldev/isxander/controlify/screenop/ScreenProcessor;)Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/state/OptionUiState",
            "method": "isHighlighted",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/state/OptionUiState",
            "method": "isSelected",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/FlatButtonWidget",
            "method": "mouseClicked",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/FlatButtonWidget",
            "method": "tryPress",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/FlatButtonWidget",
            "method": "keyPressed",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/FlatButtonWidget",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/FlatButtonWidget",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/FlatButtonWidget",
            "method": "isVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "onSubmit",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "getSelectedText",
            "desc": "()Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "hasText",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "getWordSkipPosition",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "getWordSkipPosition",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "getWordSkipPosition",
            "desc": "(IIZ)I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "getCursor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "canConsumeTextInput",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "capturesInput",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "charTyped",
            "desc": "(Lnet/minecraft/client/input/CharacterEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "isVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/TextFieldWidget",
            "method": "isEditable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab$Builder",
            "method": "withTitle",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab$Builder;",
            "value": "obj#635"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab$Builder",
            "method": "withFrameFunction",
            "desc": "(Ljava/util/function/Function;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab$Builder;",
            "value": "obj#636"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab$Builder",
            "method": "withPage",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/config/structure/Page;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab$Builder;",
            "value": "obj#637"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab$Builder",
            "method": "withModOptions",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/config/structure/ModOptions;)Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab$Builder;",
            "value": "obj#638"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab$Builder",
            "method": "build",
            "desc": "()Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/tab/Tab;",
            "value": "obj#640"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder",
            "method": "foldDiacritics",
            "desc": "(Z)Lme/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder;",
            "value": "obj#643"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder",
            "method": "maxResults",
            "desc": "(I)Lme/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder;",
            "value": "obj#644"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder",
            "method": "minScore",
            "desc": "(D)Lme/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder;",
            "value": "obj#645"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder",
            "method": "rerankWithEditDistance",
            "desc": "(Z)Lme/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder;",
            "value": "obj#646"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder",
            "method": "rerankLimit",
            "desc": "(I)Lme/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder;",
            "value": "obj#647"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder",
            "method": "rerankWeight",
            "desc": "(D)Lme/flashyreese/mods/reeses_sodium_options/client/search/SearchIndex$Builder;",
            "value": "obj#648"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/BooleanOptionRow",
            "method": "controlContentWidth",
            "desc": "()I",
            "value": "30"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/BooleanOptionRow",
            "method": "checkboxColor",
            "desc": "(ZZ)I",
            "value": "-5592406"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchResult",
            "method": "score",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/search/SearchResult",
            "method": "documentId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame",
            "method": "builder",
            "desc": "()Lme/flashyreese/mods/reeses_sodium_options/client/gui/frame/option/PageFrame$Builder;",
            "value": "obj#665"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/ScrollBarWidget",
            "method": "mouseDragged",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/ScrollBarWidget",
            "method": "getOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/ScrollBarWidget",
            "method": "keyPressed",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/gui/widget/ScrollBarWidget",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isTabHeaderIcons",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isTabHeaderVersionLabels",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isTabHeaders",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isCollapseSinglePageGroups",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isCollapsibleGroups",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "getTooltipDelayMs",
            "desc": "()I",
            "value": "500"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isTooltipOptionIds",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isColorThemes",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isThemedHeadersAndLabels",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isThemedTooltipBorders",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isReducedMotion",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isReverseCyclingControls",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isShiftScrollSliderAdjustments",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "getSearchResultLimit",
            "desc": "()I",
            "value": "15"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isHideNonMatchingOptions",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isHideNonMatchingTabs",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isControllerGuides",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/reeses_sodium_options/client/config/ReeseSodiumOptionsConfig$ConfigData",
            "method": "isResetButtonOverlay",
            "desc": "()Z",
            "value": "1"
          }
        ],
        "insns": 8447
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "roughlyenoughitems",
      "name": "Roughly Enough Items",
      "version": "26.3.824",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/shedaniel/rei/fabric/RoughlyEnoughItemsFabric"
        },
        {
          "kind": "client",
          "value": "me/shedaniel/rei/impl/init/RoughlyEnoughItemsInitializer::onInitializeClient"
        },
        {
          "kind": "main",
          "value": "me/shedaniel/rei/impl/init/RoughlyEnoughItemsInitializer::onInitialize"
        },
        {
          "kind": "rei_client",
          "value": "me/shedaniel/rei/plugin/client/DefaultClientPlugin"
        },
        {
          "kind": "rei_client",
          "value": "me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin"
        },
        {
          "kind": "rei_client",
          "value": "me/shedaniel/rei/plugin/client/runtime/HideIngredientsFromTagsPlugin"
        },
        {
          "kind": "rei_common",
          "value": "me/shedaniel/rei/plugin/common/DefaultPlugin"
        },
        {
          "kind": "rei_common",
          "value": "me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin"
        }
      ],
      "mixin_configs": [
        "rei.mixins.json"
      ],
      "depends": [
        "architectury"
      ],
      "classes": 1069,
      "methods": 7390,
      "sites": [
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "handleUpdateRecipes",
          "kind": "inject",
          "method": "handleUpdateRecipes",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "handleUpdateTags",
          "kind": "inject",
          "method": "handleUpdateTags",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinInputConstants",
          "targets": [
            "com/mojang/blaze3d/platform/InputConstants"
          ],
          "handler": "isKeyDown",
          "kind": "inject",
          "method": "isKeyDown",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/InputConstants#isKeyDown HEAD"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinInputConstantsKey",
          "targets": [
            "com/mojang/blaze3d/platform/InputConstants$Key"
          ],
          "handler": "getDisplayName",
          "kind": "inject",
          "method": "getDisplayName",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/InputConstants$Key#getDisplayName HEAD"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinPacketEncoder",
          "targets": [
            "net/minecraft/network/PacketEncoder"
          ],
          "handler": "failedToEncode",
          "kind": "inject",
          "method": "encode",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/Packet;isSkippable()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/PacketEncoder#encode INVOKE"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinRecipeToast",
          "targets": [
            "net/minecraft/client/gui/components/toasts/RecipeToast"
          ],
          "handler": "addOrUpdate",
          "kind": "inject",
          "method": "addOrUpdate",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/toasts/RecipeToast#addOrUpdate HEAD"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinScreen",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_init_post",
          "why": "ScreenEvent.Init.Post: a screen's widgets are built, where a mod adds its own"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinTagLoader",
          "targets": [
            "net/minecraft/tags/TagLoader"
          ],
          "handler": "loadPendingTags",
          "kind": "inject",
          "method": "loadPendingTags",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/tags/TagLoader#loadPendingTags HEAD"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinTagLoader",
          "targets": [
            "net/minecraft/tags/TagLoader"
          ],
          "handler": "load",
          "kind": "inject",
          "method": "build",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/tags/TagLoader#build HEAD"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinTagLoader",
          "targets": [
            "net/minecraft/tags/TagLoader"
          ],
          "handler": "loadPost",
          "kind": "inject",
          "method": "build",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/tags/TagLoader#build RETURN"
        },
        {
          "mixin": "me/shedaniel/rei/mixin/fabric/MixinTagLoader",
          "targets": [
            "net/minecraft/tags/TagLoader"
          ],
          "handler": "load",
          "kind": "inject",
          "method": "tryBuildTag",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/tags/TagLoader#tryBuildTag RETURN"
        }
      ],
      "listening": 10,
      "accessors": 0,
      "hooks": {
        "net_from_server": 2,
        "screen_init_post": 1
      },
      "wanted": {
        "com/mojang/blaze3d/platform/InputConstants#isKeyDown @HEAD": 1,
        "com/mojang/blaze3d/platform/InputConstants$Key#getDisplayName @HEAD": 1,
        "net/minecraft/client/gui/components/toasts/RecipeToast#addOrUpdate @HEAD": 1,
        "net/minecraft/tags/TagLoader#build @HEAD": 1,
        "net/minecraft/tags/TagLoader#build @RETURN": 1,
        "net/minecraft/tags/TagLoader#loadPendingTags @HEAD": 1,
        "net/minecraft/tags/TagLoader#tryBuildTag @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/network/PacketEncoder#encode @INVOKE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ContainerItemContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents$ModifyOutput",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents$ModifyOutputAll",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvArray",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricCreativeModeTabOutput",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FluidStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FluidVariant",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemApiLookup",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SemanticVersion",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Storage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "StorageView",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "VersionParsingException",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 1069,
        "features": {
          "screen": 60,
          "command": 1,
          "network": 10,
          "events": 1,
          "mixin": 8
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 1069,
        "methods": 5099,
        "tried": 600,
        "completed": 185,
        "handlers_tried": 3,
        "handlers_completed": 1,
        "missing": {
          "[Lme/shedaniel/rei/api/client/gui/config/DisplayScreenType;#clone()Ljava/lang/Object;": 1,
          "[Lme/shedaniel/rei/api/client/gui/config/ItemCheatingStyle;#clone()Ljava/lang/Object;": 1,
          "[Lme/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleImpl;#clone()Ljava/lang/Object;": 1,
          "[Lme/shedaniel/rei/impl/client/gui/toast/ExportRecipeIdentifierToast$Type;#clone()Ljava/lang/Object;": 1,
          "[Lme/shedaniel/rei/impl/client/transfer/SimpleTransferHandlerImpl;#clone()Ljava/lang/Object;": 1,
          "[Lme/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry$Weather;#clone()Ljava/lang/Object;": 2,
          "[Lme/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin$EntryStackFavoriteType;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/ForwardingList#<init>()V": 1,
          "com/google/common/collect/ForwardingMap#containsKey(Ljava/lang/Object;)Z": 1,
          "com/google/common/collect/ForwardingMap#keySet()Ljava/util/Set;": 2,
          "com/google/common/collect/ForwardingMap$StandardEntrySet#<init>(Lcom/google/common/collect/ForwardingMap;)V": 1,
          "com/google/common/collect/ForwardingMapEntry#<init>()V": 1,
          "com/google/common/collect/HashMultimap#create()Lcom/google/common/collect/HashMultimap;": 1,
          "com/google/common/collect/Interners#newWeakInterner()Lcom/google/common/collect/Interner;": 1,
          "com/google/common/collect/Lists#newArrayList()Ljava/util/ArrayList;": 5,
          "com/google/common/collect/Multimap#clear()V": 1,
          "com/google/common/collect/Multimap#get(Ljava/lang/Object;)Ljava/util/Collection;": 1,
          "com/google/common/collect/Multimap#put(Ljava/lang/Object;Ljava/lang/Object;)Z": 1,
          "com/google/common/collect/Sets#newLinkedHashSet()Ljava/util/LinkedHashSet;": 1,
          "dev/architectury/event/Event#invoker()Ljava/lang/Object;": 2,
          "dev/architectury/event/events/client/ClientLifecycleEvent#CLIENT_LEVEL_LOAD": 1,
          "dev/architectury/utils/GameInstance#getServer()Lnet/minecraft/server/MinecraftServer;": 2,
          "io/netty/buffer/ByteBuf#readLong()J": 2,
          "it/unimi/dsi/fastutil/longs/LongSet#clear()V": 1,
          "java/lang/Double#compare(DD)I": 4,
          "java/lang/Runnable#run()V": 2,
          "java/lang/String#join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;": 1,
          "java/lang/String#join(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;": 1,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Collection#parallelStream()Ljava/util/stream/Stream;": 3,
          "java/util/Collections#emptyIterator()Ljava/util/Iterator;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 10,
          "java/util/Collections#emptyListIterator()Ljava/util/ListIterator;": 1,
          "java/util/Collections#emptySet()Ljava/util/Set;": 2,
          "java/util/Collections#singletonList(Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/Collections#synchronizedList(Ljava/util/List;)Ljava/util/List;": 1,
          "java/util/Collections#unmodifiableList(Ljava/util/List;)Ljava/util/List;": 4,
          "java/util/Comparator#reverseOrder()Ljava/util/Comparator;": 1,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#of()Ljava/util/List;": 2,
          "java/util/List#of(Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/ServiceLoader#findFirst()Ljava/util/Optional;": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Spliterators#emptySpliterator()Ljava/util/Spliterator;": 1,
          "java/util/Stack#empty()Z": 3,
          "java/util/UUID#getMostSignificantBits()J": 2,
          "java/util/UUID#randomUUID()Ljava/util/UUID;": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 14,
          "java/util/stream/IntStream#range(II)Ljava/util/stream/IntStream;": 1,
          "java/util/stream/Stream#empty()Ljava/util/stream/Stream;": 1,
          "me/shedaniel/clothconfig2/api/animator/NumberAnimator#floatValue()F": 2,
          "me/shedaniel/clothconfig2/api/animator/NumberAnimator#update(D)V": 2,
          "me/shedaniel/clothconfig2/api/animator/ValueAnimator#value()Ljava/lang/Object;": 4,
          "me/shedaniel/clothconfig2/api/scroll/ScrollingContainer#getMaxScrollHeight()I": 2,
          "me/shedaniel/clothconfig2/gui/widget/DynamicElementListWidget$ElementEntry#<init>()V": 2,
          "me/shedaniel/math/Color#ofTransparent(I)Lme/shedaniel/math/Color;": 1,
          "me/shedaniel/math/Rectangle#clone()Lme/shedaniel/math/Rectangle;": 1,
          "me/shedaniel/rei/api/client/gui/compat/GuiGraphics#pose()Lorg/joml/Matrix3x2fStack;": 1,
          "me/shedaniel/rei/api/client/gui/config/DisplayScreenType#name()Ljava/lang/String;": 1,
          "me/shedaniel/rei/api/client/gui/config/ItemCheatingStyle#name()Ljava/lang/String;": 1,
          "me/shedaniel/rei/api/client/registry/transfer/simple/SimpleTransferHandler#checkApplicable(Lme/shedaniel/rei/api/client/registry/transfer/TransferHandler$Context;)Lme/shedaniel/rei/api/client/registry/transfer/TransferHandler$ApplicabilityResult;": 1,
          "me/shedaniel/rei/api/common/category/CategoryIdentifier#getIdentifier()Lnet/minecraft/resources/Identifier;": 2,
          "me/shedaniel/rei/api/common/category/CategoryIdentifier#toString()Ljava/lang/String;": 1,
          "me/shedaniel/rei/impl/client/ClientHelperImpl$AbstractViewSearchBuilder#buildMapInternal()Ljava/util/Map;": 1,
          "me/shedaniel/rei/impl/client/ClientHelperImpl$AbstractViewSearchBuilder#getPreferredOpenedCategory()Lme/shedaniel/rei/api/common/category/CategoryIdentifier;": 1,
          "me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen$RulesList#getSelectedItem()Lme/shedaniel/clothconfig2/gui/widget/DynamicEntryListWidget$Entry;": 1,
          "me/shedaniel/rei/impl/client/gui/screen/REIScreen#init()V": 2,
          "me/shedaniel/rei/impl/client/gui/widget/UpdatedListWidget#addItem(Lme/shedaniel/clothconfig2/gui/widget/DynamicEntryListWidget$Entry;)I": 2,
          "me/shedaniel/rei/impl/client/gui/widget/UpdatedListWidget#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelRow#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelRow#mouseDragged(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z": 1,
          "me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelRow#mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z": 1,
          "me/shedaniel/rei/impl/client/util/CyclingList#get()Ljava/lang/Object;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 6,
          "net/minecraft/client/gui/screens/Screen#extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/input/MouseButtonEvent#button()I": 1,
          "net/minecraft/client/input/MouseButtonEvent#x()D": 4,
          "net/minecraft/nbt/CompoundTag#getString(Ljava/lang/String;)Ljava/util/Optional;": 1,
          "net/minecraft/network/RegistryFriendlyByteBuf#readBoolean()Z": 2,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 2,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 6,
          "net/minecraft/resources/Identifier#CODEC": 4,
          "net/minecraft/resources/Identifier#STREAM_CODEC": 1,
          "net/minecraft/resources/Identifier#toString()Ljava/lang/String;": 1,
          "net/minecraft/util/Unit#INSTANCE": 2,
          "net/minecraft/world/InteractionResult#SUCCESS": 1,
          "net/minecraft/world/item/Items#CLOCK": 1,
          "net/minecraft/world/item/Items#GOLDEN_AXE": 1,
          "net/minecraft/world/item/Items#IRON_HOE": 1,
          "net/minecraft/world/item/crafting/RecipeHolder#value()Lnet/minecraft/world/item/crafting/Recipe;": 1,
          "new it/unimi/dsi/fastutil/ints/IntArrayList": 1,
          "new it/unimi/dsi/fastutil/objects/Reference2ObjectOpenHashMap": 2,
          "new it/unimi/dsi/fastutil/shorts/Short2ObjectOpenHashMap": 3,
          "new me/shedaniel/clothconfig2/api/LazyResettable": 2,
          "new me/shedaniel/math/Point": 7,
          "new me/shedaniel/math/Rectangle": 5,
          "new net/minecraft/nbt/ListTag": 2,
          "new net/minecraft/network/FriendlyByteBuf": 2,
          "new net/minecraft/network/RegistryFriendlyByteBuf": 2,
          "new net/minecraft/world/item/ItemStack": 2,
          "new org/joml/Matrix3x2f": 1,
          "org/apache/logging/log4j/Level#isLessSpecificThan(Lorg/apache/logging/log4j/Level;)Z": 2
        },
        "runs": [
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/MenuHolder",
            "method": "isOpened",
            "desc": "(Ljava/util/UUID;)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/MenuHolder",
            "method": "isAnyOpened",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/MenuHolder",
            "method": "isInBounds",
            "desc": "(Ljava/util/UUID;)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/MenuHolder",
            "method": "mouseScrolled",
            "desc": "(DDDD)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/api/common/entry/InputIngredient$2",
            "method": "getIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/api/common/entry/InputIngredient$2",
            "method": "getDisplayIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/widget/favorites/panel/FadingFavoritesPanelButton",
            "method": "wasClicked",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/widget/favorites/panel/FadingFavoritesPanelButton",
            "method": "mouseReleased",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "contains",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "containsAll",
            "desc": "(Ljava/util/Collection;)Z",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "toArray",
            "desc": "()[Ljava/lang/Object;",
            "value": "obj#52"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "hashCode",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "filter",
            "desc": "(Ljava/util/function/Predicate;)Lme/shedaniel/rei/api/common/entry/EntryIngredient;",
            "value": "obj#63"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "map",
            "desc": "(Ljava/util/function/UnaryOperator;)Lme/shedaniel/rei/api/common/entry/EntryIngredient;",
            "value": "obj#64"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/EntryIngredientImpl$EmptyEntryIngredient",
            "method": "setting",
            "desc": "(Lme/shedaniel/rei/api/common/entry/settings/EntryIngredientSetting;Ljava/lang/Object;)Lme/shedaniel/rei/api/common/entry/EntryIngredient;",
            "value": "obj#66"
          },
          {
            "class": "me/shedaniel/rei/api/client/registry/category/visibility/CategoryVisibilityPredicate",
            "method": "getPriority",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/config/addon/ConfigAddonRegistryImpl",
            "method": "getAddons",
            "desc": "()Ljava/util/List;",
            "value": "obj#87"
          },
          {
            "class": "me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRule",
            "method": "getType",
            "desc": "()Lme/shedaniel/rei/api/client/entry/filtering/FilteringRuleType;",
            "value": "obj#97"
          },
          {
            "class": "me/shedaniel/rei/impl/common/entry/type/PreFilteredEntryList$InternalSimpleListView",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl",
            "method": "getStage",
            "desc": "()Lme/shedaniel/rei/api/common/registry/ReloadStage;",
            "value": "obj#147"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/categories/DefaultOxidizingCategory",
            "method": "getDisplayHeight",
            "desc": "()I",
            "value": "36"
          },
          {
            "class": "me/shedaniel/rei/fabric/PluginDetectorImpl",
            "method": "getSimpleName",
            "desc": "(Ljava/lang/Class;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "me/shedaniel/rei/api/common/category/CategoryIdentifier",
            "method": "cast",
            "desc": "()Lme/shedaniel/rei/api/common/category/CategoryIdentifier;",
            "value": "obj#174"
          },
          {
            "class": "me/shedaniel/rei/impl/common/plugins/PluginReloadContext",
            "method": "of",
            "desc": "(Lme/shedaniel/rei/api/common/registry/ReloadStage;Lme/shedaniel/rei/impl/common/plugins/ReloadInterruptionContext;)Lme/shedaniel/rei/impl/common/plugins/PluginReloadContext;",
            "value": "obj#175"
          },
          {
            "class": "me/shedaniel/rei/api/common/display/DisplaySerializer",
            "method": "isPersistent",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/api/common/display/DisplaySerializer",
            "method": "of",
            "desc": "(Lcom/mojang/serialization/MapCodec;Lnet/minecraft/network/codec/StreamCodec;)Lme/shedaniel/rei/api/common/display/DisplaySerializer;",
            "value": "obj#180"
          },
          {
            "class": "me/shedaniel/rei/api/common/display/DisplaySerializer",
            "method": "of",
            "desc": "(Lcom/mojang/serialization/MapCodec;Lnet/minecraft/network/codec/StreamCodec;Z)Lme/shedaniel/rei/api/common/display/DisplaySerializer;",
            "value": "obj#181"
          },
          {
            "class": "me/shedaniel/rei/impl/client/search/argument/type/AlwaysMatchingArgumentType",
            "method": "getName",
            "desc": "()Ljava/lang/String;",
            "value": "\"always\""
          },
          {
            "class": "me/shedaniel/rei/impl/client/search/argument/type/AlwaysMatchingArgumentType",
            "method": "checkApplicable",
            "desc": "(Ljava/lang/String;Z)Lme/shedaniel/rei/impl/client/search/result/ArgumentApplicableResult;",
            "value": "obj#187"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/widget/basewidgets/ArrowWidget",
            "method": "getAnimationDuration",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/config/components/ConfigSearchWidget$IndividualResult",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/config/components/ConfigSearchWidget$IndividualResult",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/screen/generic/OptionEntriesScreen$ButtonListEntry",
            "method": "getItemHeight",
            "desc": "()I",
            "value": "20"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/widget/region/RegionListener",
            "method": "canAcceptDrop",
            "desc": "(Lme/shedaniel/rei/impl/client/gui/widget/region/RealRegionEntry;)Z",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/widget/region/RegionListener",
            "method": "canBeDragged",
            "desc": "(Lme/shedaniel/rei/impl/client/gui/widget/region/RealRegionEntry;)Z",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/widget/region/RegionListener",
            "method": "removeOnDrag",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/widget/ListWidget$WidgetBuilder",
            "method": "isSelectable",
            "desc": "(Lme/shedaniel/rei/impl/client/gui/widget/ListWidget$ListEntryPredicate;)Lme/shedaniel/rei/impl/client/gui/widget/ListWidget$WidgetBuilder;",
            "value": "obj#294"
          },
          {
            "class": "me/shedaniel/rei/plugin/common/displays/cooking/CookingDisplay",
            "method": "getWidth",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/plugin/common/displays/cooking/CookingDisplay",
            "method": "getHeight",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleImpl",
            "method": "getType",
            "desc": "()Lme/shedaniel/rei/api/client/entry/filtering/FilteringRuleType;",
            "value": "obj#331"
          },
          {
            "class": "me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleImpl",
            "method": "getStage",
            "desc": "()Lme/shedaniel/rei/api/common/registry/ReloadStage;",
            "value": "obj#147"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget$LinkEntry",
            "method": "getItemHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget$LinkEntry",
            "method": "mouseClicked",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/registry/screen/ScreenRegistryImpl",
            "method": "getStage",
            "desc": "()Lme/shedaniel/rei/api/common/registry/ReloadStage;",
            "value": "obj#147"
          },
          {
            "class": "me/shedaniel/rei/impl/client/search/argument/CompoundArgument$Builder",
            "method": "add",
            "desc": "(Lme/shedaniel/rei/impl/client/search/argument/Argument$Builder;)Lme/shedaniel/rei/impl/client/search/argument/CompoundArgument$Builder;",
            "value": "obj#383"
          },
          {
            "class": "me/shedaniel/rei/impl/client/search/argument/CompoundArgument$Builder",
            "method": "add",
            "desc": "(Lme/shedaniel/rei/impl/client/search/argument/AlternativeArgument$Builder;)Lme/shedaniel/rei/impl/client/search/argument/CompoundArgument$Builder;",
            "value": "obj#389"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry$2",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry$2",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/widget/DisplayTooltipComponent",
            "method": "evaluateAutoCrafting",
            "desc": "()Lme/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator$AutoCraftingResult;",
            "value": "obj#434"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/categories/DefaultInformationCategory",
            "method": "getIcon",
            "desc": "()Lme/shedaniel/rei/api/client/gui/Renderer;",
            "value": "obj#459"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/categories/DefaultInformationCategory",
            "method": "getDisplayHeight",
            "desc": "()I",
            "value": "140"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/categories/DefaultInformationCategory",
            "method": "getFixedDisplaysPerPage",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/categories/DefaultTillingCategory",
            "method": "getDisplayHeight",
            "desc": "()I",
            "value": "36"
          },
          {
            "class": "me/shedaniel/rei/impl/client/entry/filtering/FilteringContextImpl$2$1",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/AbstractMenuEntry",
            "method": "onClick",
            "desc": "(DDI)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/AbstractMenuEntry",
            "method": "getX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/AbstractMenuEntry",
            "method": "getY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/AbstractMenuEntry",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/AbstractMenuEntry",
            "method": "isSelected",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/AbstractMenuEntry",
            "method": "containsMouse",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/AbstractMenuEntry",
            "method": "isRendering",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/modules/AbstractMenuEntry",
            "method": "containsMouse",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/common/registry/displays/RemappingMap",
            "method": "values",
            "desc": "()Ljava/util/Collection;",
            "value": "obj#501"
          },
          {
            "class": "me/shedaniel/rei/api/common/entry/EntryStack",
            "method": "cast",
            "desc": "()Lme/shedaniel/rei/api/common/entry/EntryStack;",
            "value": "obj#521"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry",
            "method": "isInvalid",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry",
            "method": "hashIgnoreAmount",
            "desc": "()J",
            "value": "1226060218"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry",
            "method": "copy",
            "desc": "()Lme/shedaniel/rei/api/client/favorites/FavoriteEntry;",
            "value": "obj#532"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry",
            "method": "isSame",
            "desc": "(Lme/shedaniel/rei/api/client/favorites/FavoriteEntry;)Z",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry",
            "method": "copy",
            "desc": "()Lme/shedaniel/rei/api/client/entry/region/RegionEntry;",
            "value": "obj#535"
          },
          {
            "class": "me/shedaniel/rei/api/common/registry/display/DisplayConsumer$RecipeManagerConsumer$RecipeFillerBuilder",
            "method": "filterWithReason",
            "desc": "(Ljava/util/function/BiPredicate;)Lme/shedaniel/rei/api/common/registry/display/DisplayConsumer$RecipeManagerConsumer$RecipeFillerBuilder;",
            "value": "obj#541"
          },
          {
            "class": "me/shedaniel/rei/impl/client/subsets/SubsetsRegistryImpl",
            "method": "getStage",
            "desc": "()Lme/shedaniel/rei/api/common/registry/ReloadStage;",
            "value": "obj#147"
          },
          {
            "class": "me/shedaniel/rei/api/client/gui/drag/component/DraggableComponentVisitor",
            "method": "from",
            "desc": "(Ljava/util/function/Supplier;)Lme/shedaniel/rei/api/client/gui/drag/component/DraggableComponentVisitor;",
            "value": "obj#563"
          },
          {
            "class": "me/shedaniel/rei/api/client/gui/drag/component/DraggableComponentVisitor",
            "method": "acceptDragged",
            "desc": "(Lme/shedaniel/rei/api/client/gui/drag/DraggingContext;Lme/shedaniel/rei/api/client/gui/drag/component/DraggableComponent;)Lme/shedaniel/rei/api/client/gui/drag/DraggedAcceptorResult;",
            "value": "obj#567"
          },
          {
            "class": "me/shedaniel/rei/api/client/gui/drag/component/DraggableComponentVisitor",
            "method": "getPriority",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsingEntryListWidget",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/api/client/gui/drag/DraggableStack",
            "method": "from",
            "desc": "(Lme/shedaniel/rei/api/client/gui/drag/component/DraggableComponent;)Lme/shedaniel/rei/api/client/gui/drag/DraggableStack;",
            "value": "obj#587"
          },
          {
            "class": "me/shedaniel/rei/api/client/gui/drag/DraggableStack",
            "method": "getWidth",
            "desc": "()I",
            "value": "18"
          },
          {
            "class": "me/shedaniel/rei/api/client/gui/drag/DraggableStack",
            "method": "getHeight",
            "desc": "()I",
            "value": "18"
          },
          {
            "class": "me/shedaniel/rei/impl/client/registry/screen/ScreenRegistryImpl$2",
            "method": "getPriority",
            "desc": "()D",
            "value": "-10"
          },
          {
            "class": "me/shedaniel/rei/impl/client/registry/category/CategoryRegistryImpl",
            "method": "tryGet",
            "desc": "(Lme/shedaniel/rei/api/common/category/CategoryIdentifier;)Ljava/util/Optional;",
            "value": "obj#644"
          },
          {
            "class": "me/shedaniel/rei/impl/client/registry/category/CategoryRegistryImpl",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#657"
          },
          {
            "class": "me/shedaniel/rei/impl/client/registry/category/CategoryRegistryImpl",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/impl/client/registry/category/CategoryRegistryImpl",
            "method": "isCategoryVisible",
            "desc": "(Lme/shedaniel/rei/api/client/registry/display/DisplayCategory;)Z",
            "value": "1"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/categories/DefaultWaxScrapingCategory",
            "method": "getDisplayHeight",
            "desc": "()I",
            "value": "36"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry$GameModeMenuEntry",
            "method": "getTextWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry$GameModeMenuEntry",
            "method": "getEntryWidth",
            "desc": "()I",
            "value": "4"
          },
          {
            "class": "me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry$GameModeMenuEntry",
            "method": "getEntryHeight",
            "desc": "()I",
            "value": "12"
          },
          {
            "class": "me/shedaniel/rei/api/common/util/CollectionUtils",
            "method": "mapAndMax",
            "desc": "(Ljava/util/Collection;Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Optional;",
            "value": "obj#742"
          },
          {
            "class": "me/shedaniel/rei/api/common/util/CollectionUtils",
            "method": "max",
            "desc": "(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/util/Optional;",
            "value": "obj#743"
          },
          {
            "class": "me/shedaniel/rei/api/common/util/CollectionUtils",
            "method": "mapAndMin",
            "desc": "(Ljava/util/Collection;Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Optional;",
            "value": "obj#744"
          },
          {
            "class": "me/shedaniel/rei/api/common/util/CollectionUtils",
            "method": "min",
            "desc": "(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/util/Optional;",
            "value": "obj#745"
          }
        ],
        "insns": 5164
      },
      "verdict": "partly",
      "summary": "3 of 10 listening patch sites land on a Horizon hook (30%); of 11 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "replaymod",
      "name": "Replay Mod",
      "version": "26.3-2.6.28",
      "license": "GPL-3.0-or-later",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/replaymod/core/ReplayModBackend"
        },
        {
          "kind": "frex_flawless_frames",
          "value": "com/replaymod/render/utils/FlawlessFrames::registerConsumer"
        },
        {
          "kind": "mm:early_risers",
          "value": "com/replaymod/core/ReplayModMMLauncher"
        },
        {
          "kind": "modmenu",
          "value": "com/replaymod/core/gui/ModMenuApiImpl"
        },
        {
          "kind": "preLaunch",
          "value": "com/replaymod/core/DummyChainLoadEntryPoint"
        },
        {
          "kind": "preLaunch",
          "value": "com/replaymod/core/MixinExtrasInit"
        }
      ],
      "mixin_configs": [
        "mixins.jgui.json",
        "mixins.nonmmlauncher.replaymod.json"
      ],
      "depends": [],
      "classes": 6902,
      "methods": 68450,
      "sites": [
        {
          "mixin": "com/replaymod/compat/shaders/mixin/MixinChunkVisibility",
          "targets": [
            "net/optifine/render/ChunkVisibility"
          ],
          "handler": "replayModCompat_fixImproperReset",
          "kind": "inject",
          "method": "reset",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/optifine/render/ChunkVisibility#reset HEAD"
        },
        {
          "mixin": "com/replaymod/compat/shaders/mixin/MixinShaderEntityRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "replayModCompat_updateShaderFrameTimeCounter",
          "kind": "inject",
          "method": "renderLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#renderLevel HEAD"
        },
        {
          "mixin": "com/replaymod/compat/shaders/mixin/MixinShadersRender",
          "targets": [
            "shadersmod/client/ShadersRender",
            "net/optifine/shaders/ShadersRender"
          ],
          "handler": "replayModCompat_disableRenderHand0",
          "kind": "inject",
          "method": "renderHand0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at shadersmod/client/ShadersRender#renderHand0 HEAD"
        },
        {
          "mixin": "com/replaymod/compat/shaders/mixin/MixinShadersRender",
          "targets": [
            "shadersmod/client/ShadersRender",
            "net/optifine/shaders/ShadersRender"
          ],
          "handler": "replayModCompat_disableRenderHand0",
          "kind": "inject",
          "method": "renderHand1",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at shadersmod/client/ShadersRender#renderHand1 HEAD"
        },
        {
          "mixin": "com/replaymod/core/mixin/MixinKeyboardListener",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "beforeKeyBindingTick",
          "kind": "inject",
          "method": "keyPress",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/KeyMapping;click(Lcom/mojang/blaze3d/platform/InputConstants$Key;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#keyPress INVOKE"
        },
        {
          "mixin": "com/replaymod/core/mixin/MixinKeyboardListener",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "afterKeyBindingTick",
          "kind": "inject",
          "method": "keyPress",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/KeyMapping;click(Lcom/mojang/blaze3d/platform/InputConstants$Key;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#keyPress INVOKE"
        },
        {
          "mixin": "com/replaymod/core/mixin/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "preRender",
          "kind": "inject",
          "method": "runTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;renderFrame(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#runTick INVOKE"
        },
        {
          "mixin": "com/replaymod/core/mixin/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "postRender",
          "kind": "inject",
          "method": "runTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;renderFrame(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#runTick INVOKE"
        },
        {
          "mixin": "com/replaymod/core/mixin/MixinMouse",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "afterKeyBindingTick",
          "kind": "inject",
          "method": "onButton",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/KeyMapping;click(Lcom/mojang/blaze3d/platform/InputConstants$Key;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/MouseHandler#onButton INVOKE"
        },
        {
          "mixin": "com/replaymod/core/mixin/Mixin_ContextualKeyBindings",
          "targets": [
            "net/minecraft/client/KeyMapping"
          ],
          "handler": "preContextualKeyBindings",
          "kind": "inject",
          "method": "resetMapping",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyMapping#resetMapping HEAD"
        },
        {
          "mixin": "com/replaymod/core/mixin/Mixin_ContextualKeyBindings",
          "targets": [
            "net/minecraft/client/KeyMapping"
          ],
          "handler": "postContextualKeyBindings",
          "kind": "inject",
          "method": "resetMapping",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyMapping#resetMapping RETURN"
        },
        {
          "mixin": "com/replaymod/core/mixin/Mixin_InjectDynamicResourcePacks",
          "targets": [
            "net/minecraft/server/packs/repository/PackRepository"
          ],
          "handler": "injectReplayModPacks",
          "kind": "modify-arg",
          "method": "openAllSelected",
          "at": "INVOKE",
          "at_target": "Ljava/util/stream/Stream;collect(Ljava/util/stream/Collector;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/replaymod/core/mixin/Mixin_PostRenderWorldCalback",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "postRenderWorld",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Matrix4fStack;popMatrix()Lorg/joml/Matrix4fStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#render INVOKE"
        },
        {
          "mixin": "com/replaymod/core/mixin/Mixin_PreRenderHandCallback",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "preRenderHand",
          "kind": "inject",
          "method": "renderItemInHand",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "render_hand",
          "why": "RenderHandEvent: the hand is drawn"
        },
        {
          "mixin": "com/replaymod/extras/playeroverview/mixin/MixinRender",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderer"
          ],
          "handler": "replayModExtras_isPlayerHidden",
          "kind": "inject",
          "method": "shouldRender",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderer#shouldRender HEAD"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinClientConnection",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "ensureReplayModRecorderIsAfterDecompress",
          "kind": "inject",
          "method": "setupCompression",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/Connection#setupCompression RETURN"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinDownloadingPackFinder",
          "targets": [
            "net/minecraft/client/resources/server/ServerPackManager"
          ],
          "handler": "recordDownloadedPack",
          "kind": "inject",
          "method": "onDownload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/server/ServerPackManager#onDownload HEAD"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinMouseHelper",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "noGrab",
          "kind": "inject",
          "method": "grabMouse",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/MouseHandler#grabMouse HEAD"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinMouseHelper",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "handleReplayModScroll",
          "kind": "inject",
          "method": "onScroll",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/LocalPlayer;isSpectator()Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/MouseHandler#onScroll INVOKE"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinNetHandlerConfigClient",
          "targets": [
            "net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl"
          ],
          "handler": "recordEnabledPackData",
          "kind": "inject",
          "method": "handleConfigurationFinished",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/Connection;setupInboundProtocol(Lnet/minecraft/network/ProtocolInfo;Lnet/minecraft/network/PacketListener;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl#handleConfigurationFinished INVOKE"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinNetHandlerLoginClient",
          "targets": [
            "net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl"
          ],
          "handler": "earlyInitiateRecording",
          "kind": "inject",
          "method": "handleCustomQuery",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl#handleCustomQuery HEAD"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinNetHandlerLoginClient",
          "targets": [
            "net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl"
          ],
          "handler": "lateInitiateRecording",
          "kind": "inject",
          "method": "handleLoginFinished",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl#handleLoginFinished HEAD"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinNetHandlerPlayClient",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "recordOwnJoin",
          "kind": "inject",
          "method": "handlePlayerInfoUpdate",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinNetHandlerPlayClient",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "recordOwnRespawn",
          "kind": "inject",
          "method": "handleRespawn",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinRenderGlobal",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "saveBlockBreakProgressPacket",
          "kind": "inject",
          "method": "destroyBlockProgress",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#destroyBlockProgress HEAD"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinServerInfo",
          "targets": [
            "net/minecraft/client/multiplayer/ServerData"
          ],
          "handler": "serialize",
          "kind": "inject",
          "method": "write",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ServerData#write RETURN"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinServerInfo",
          "targets": [
            "net/minecraft/client/multiplayer/ServerData"
          ],
          "handler": "deserialize",
          "kind": "inject",
          "method": "read",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ServerData#read RETURN"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinServerInfo",
          "targets": [
            "net/minecraft/client/multiplayer/ServerData"
          ],
          "handler": "copyFrom",
          "kind": "inject",
          "method": "copyFrom",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ServerData#copyFrom RETURN"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinWorldClient",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "replayModRecording_recordClientSound",
          "kind": "inject",
          "method": "playSeededSound",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#playSeededSound HEAD"
        },
        {
          "mixin": "com/replaymod/recording/mixin/MixinWorldClient",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "playLevelEvent",
          "kind": "inject",
          "method": "levelEvent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#levelEvent HEAD"
        },
        {
          "mixin": "com/replaymod/render/mixin/MixinParticleManager",
          "targets": [
            "net/minecraft/client/particle/SingleQuadParticle"
          ],
          "handler": "faceCameraAtParticle",
          "kind": "inject",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/SingleQuadParticle$FacingCameraMode;setRotation(Lorg/joml/Quaternionf;Lnet/minecraft/client/Camera;F)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/SingleQuadParticle#extract INVOKE"
        },
        {
          "mixin": "com/replaymod/render/mixin/MixinParticleManager",
          "targets": [
            "net/minecraft/client/particle/SingleQuadParticle"
          ],
          "handler": "faceCameraAtParticleCleanup",
          "kind": "inject",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/SingleQuadParticle$FacingCameraMode;setRotation(Lorg/joml/Quaternionf;Lnet/minecraft/client/Camera;F)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/SingleQuadParticle#extract INVOKE"
        },
        {
          "mixin": "com/replaymod/render/mixin/MixinRenderManager",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "replayModRender_reorientForCubicRendering",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit HEAD"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_AddIrisOdsShaderUniforms",
          "targets": [
            "net/irisshaders/iris/uniforms/CommonUniforms"
          ],
          "handler": "addReplayModOdsUniforms",
          "kind": "modify-variable",
          "method": "generalCommonUniforms",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_BlockOnChunkRebuilds",
          "targets": [
            "net/minecraft/client/renderer/chunk/SectionRenderDispatcher"
          ],
          "handler": "incrementScheduledTasks",
          "kind": "inject",
          "method": "schedule",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/TracingExecutor;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/chunk/SectionRenderDispatcher#schedule INVOKE"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_BlockOnChunkRebuilds",
          "targets": [
            "net/minecraft/client/renderer/chunk/SectionRenderDispatcher"
          ],
          "handler": "incrementScheduledTasks",
          "kind": "inject",
          "method": "runTask",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/TracingExecutor;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/chunk/SectionRenderDispatcher#runTask INVOKE"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_ChromaKeyColorSky",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "chromaKeyingSky",
          "kind": "inject",
          "method": "lambda$addSkyPass$0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$0 HEAD"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_ChromaKeyDisableFog",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "replayModRender_suppressFogIfChromaKeyIsActive",
          "kind": "modify-variable",
          "method": "getBuffer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_FakeSystemTimeUniforms_Iris",
          "targets": [
            "net/irisshaders/iris/uniforms/SystemTimeUniforms$Timer"
          ],
          "handler": "useReplayTimeDuringRender",
          "kind": "modify-variable",
          "method": "beginFrame",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_ForceChunkLoading",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "forceAllChunks",
          "kind": "inject",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;visibleSections()Lit/unimi/dsi/fastutil/objects/ObjectArrayList;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extract INVOKE"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_HideNameTags",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderer"
          ],
          "handler": "replayModRender_areAllNamesHidden",
          "kind": "inject",
          "method": "submitNameDisplay",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderer#submitNameDisplay HEAD"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_LoadIrisOdsShaderPack",
          "targets": [
            "net/irisshaders/iris/Iris"
          ],
          "handler": "loadReplayModOdsPack",
          "kind": "redirect",
          "method": "loadExternalShaderpack",
          "at": "INVOKE",
          "at_target": "Lnet/irisshaders/iris/Iris;getShaderpacksDirectory()Ljava/nio/file/Path;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_Omnidirectional_Rotation",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "replayModRender_setupCubicFrameRotation",
          "kind": "inject",
          "method": "update",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Camera;alignWithEntity(F)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Camera#update INVOKE"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_PreserveDepthDuringGuiRendering",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "replayModRender_skipClearWhenRecordingDepth",
          "kind": "wrap-with-condition",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/api/commands/CommandEncoder;clearDepthTexture(Lcom/mojang/renderpearl/api/textures/GpuTexture;D)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_PreserveDepthDuringHandRendering",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "replayModRender_skipClearWhenRecordingDepth",
          "kind": "wrap-with-condition",
          "method": "render3dHud",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/api/commands/CommandEncoder;clearDepthTexture(Lcom/mojang/renderpearl/api/textures/GpuTexture;D)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_SkipBlockOutlinesDuringRender",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "replayModRender_drawSelectionBox",
          "kind": "inject",
          "method": "submitHitOutline",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#submitHitOutline HEAD"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_SkipHudDuringRender",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "replayModRender_skipHudDuringRender",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_StabilizeCamera",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "replayModRender_stabilizeCamera",
          "kind": "wrap-operation",
          "method": "alignWithEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Camera;setRotation(FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/replaymod/render/mixin/Mixin_Stereoscopic_Camera",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "replayModRender_setupStereoscopicProjection",
          "kind": "inject",
          "method": "alignWithEntity",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Camera#alignWithEntity RETURN"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinCamera",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "applyRoll",
          "kind": "modify-arg",
          "method": "setRotation",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Quaternionf;rotationYXZ(FFF)Lorg/joml/Quaternionf;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinGuiSpectator",
          "targets": [
            "net/minecraft/client/gui/components/spectator/SpectatorGui"
          ],
          "handler": "isInReplay",
          "kind": "inject",
          "method": "onMouseScrolled",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/spectator/SpectatorGui#onMouseScrolled HEAD"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinInGameHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "shouldRenderSpectatorCrosshair",
          "kind": "inject",
          "method": "canRenderCrosshairForSpectator",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinInGameHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "shouldRenderHotbar",
          "kind": "inject",
          "method": "extractItemHotbar",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinKeyboardListener",
          "targets": [
            "net/minecraft/client/Screenshot"
          ],
          "handler": "takeScreenshot",
          "kind": "inject",
          "method": "grab",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Screenshot#grab HEAD"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinParticleManager",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "replayModReplay_clearParticleQueue",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#setLevel HEAD"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinPlayerControllerMP",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "replayModReplay_isSpectator",
          "kind": "inject",
          "method": "isSpectator",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#isSpectator HEAD"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinRenderItem",
          "targets": [
            "net/minecraft/client/renderer/rendertype/TextureTransform"
          ],
          "handler": "getEnchantmentTime",
          "kind": "redirect",
          "method": "setupGlintTexturing",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;getMillis()J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinRenderLivingBase",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "replayModReplay_canRenderInvisibleName",
          "kind": "inject",
          "method": "shouldShowName",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/LivingEntityRenderer#shouldShowName HEAD"
        },
        {
          "mixin": "com/replaymod/replay/mixin/MixinRenderLivingBase",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "replayModReplay_shouldInvisibleNotBeRendered",
          "kind": "redirect",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;isInvisibleTo(Lnet/minecraft/world/entity/player/Player;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_AllowExpiredPlayerKeys",
          "targets": [
            "net/minecraft/world/entity/player/ProfilePublicKey$Data"
          ],
          "handler": "neverExpireWhenInReplay",
          "kind": "inject",
          "method": "hasExpired",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/ProfilePublicKey$Data#hasExpired HEAD"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_AllowExpiredPlayerKeys",
          "targets": [
            "net/minecraft/world/entity/player/ProfilePublicKey$Data"
          ],
          "handler": "neverExpireWhenInReplay",
          "kind": "inject",
          "method": "hasExpired",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/ProfilePublicKey$Data#hasExpired HEAD"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_CreateReplayCamera",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "replayModReplay_createReplayCamera",
          "kind": "inject",
          "method": "createPlayer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#createPlayer HEAD"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_FixEntityNotTracking",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "updatePositionIfNotTracked$0",
          "kind": "modify-variable",
          "method": "handleTeleportEntity",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_FixEntityNotTracking",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "updatePositionIfNotTracked$0",
          "kind": "modify-variable",
          "method": "handleMoveEntity",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_FixEntityNotTracking",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "updatePositionIfNotTracked$0",
          "kind": "modify-variable",
          "method": "handleSetEntityPassengersPacket",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_FixNPCSkinCaching",
          "targets": [
            "net/minecraft/client/player/AbstractClientPlayer"
          ],
          "handler": "forceCachePlayerListEntry",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/AbstractClientPlayer#<init> RETURN"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_HandleInputsInReplay",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "updateInReplay",
          "kind": "inject",
          "method": "runTick",
          "at": "CONSTANT",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#runTick CONSTANT"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_MoveRealmsButton",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "adjustRealmsButton",
          "kind": "modify-arg",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/realmsclient/gui/screens/RealmsNotificationsScreen;init(II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_ShowSpectatedHand_Iris",
          "targets": [
            "net/irisshaders/iris/pathways/HandRenderer"
          ],
          "handler": "getGameMode",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;getPlayerMode()Lnet/minecraft/world/level/GameType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_ShowSpectatedHand_NoOF",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "getGameMode",
          "kind": "redirect",
          "method": "renderItemInHand",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;getPlayerMode()Lnet/minecraft/world/level/GameType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/Mixin_ShowSpectatedHand_OF",
          "targets": [
            "net/optifine/shaders/Shaders"
          ],
          "handler": "fakePlayerGameMode",
          "kind": "inject",
          "method": "setRenderingFirstPersonHand",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/optifine/shaders/Shaders#setRenderingFirstPersonHand HEAD"
        },
        {
          "mixin": "com/replaymod/replay/mixin/world_border/Mixin_UseReplayTime_ForMovement",
          "targets": [
            "net/minecraft/world/level/border/WorldBorder$MovingBorderExtent"
          ],
          "handler": "getWorldBorderTime",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;getMillis()J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/replaymod/replay/mixin/world_border/Mixin_UseReplayTime_ForTexture",
          "targets": [
            "net/minecraft/client/renderer/WorldBorderRenderer"
          ],
          "handler": "getWorldBorderTime",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;getMillis()J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "captureContext",
          "kind": "modify-arg",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;extractRenderStateWithTooltipAndSubtitles(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "postRenderScreen",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;extractRenderStateWithTooltipAndSubtitles(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#extractRenderState INVOKE"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinKeyboardListener",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "keyPressed",
          "kind": "wrap-operation",
          "method": "keyPress",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;keyPressed(Lnet/minecraft/client/input/KeyEvent;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinKeyboardListener",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "keyReleased",
          "kind": "wrap-operation",
          "method": "keyPress",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;keyReleased(Lnet/minecraft/client/input/KeyEvent;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinKeyboardListener",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "charTyped",
          "kind": "wrap-operation",
          "method": "charTyped",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;charTyped(Lnet/minecraft/client/input/CharacterEvent;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinMinecraft",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "preTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#tick HEAD"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinMinecraft",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "openGuiScreen",
          "kind": "inject",
          "method": "setScreen",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/gui/Gui;screen:Lnet/minecraft/client/gui/screens/Screen;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#setScreen FIELD"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinMouseListener",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "mouseDown",
          "kind": "wrap-operation",
          "method": "onButton",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinMouseListener",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "mouseUp",
          "kind": "wrap-operation",
          "method": "onButton",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinMouseListener",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "mouseDrag",
          "kind": "wrap-operation",
          "method": "handleAccumulatedMovement",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;mouseDragged(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinMouseListener",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "mouseScroll",
          "kind": "wrap-operation",
          "method": "onScroll",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;mouseScrolled(DDDD)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinScreen",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "preInit",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_init_post",
          "why": "ScreenEvent.Init.Post: a screen's widgets are built, where a mod adds its own"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinScreen",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "init",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_init_post",
          "why": "ScreenEvent.Init.Post: a screen's widgets are built, where a mod adds its own"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinScreen",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "preResize",
          "kind": "inject",
          "method": "resize",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#resize HEAD"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/MixinScreen",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "resize",
          "kind": "inject",
          "method": "resize",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#resize TAIL"
        },
        {
          "mixin": "com/replaymod/lib/de/johni0702/minecraft/gui/versions/mixin/Mixin_RenderHudCallback",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "renderOverlay",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;extractDemoOverlay(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        }
      ],
      "listening": 44,
      "accessors": 44,
      "hooks": {
        "hud": 4,
        "net_from_server": 2,
        "render_hand": 1,
        "screen_init_post": 2
      },
      "wanted": {
        "net/minecraft/client/Camera#alignWithEntity @RETURN": 1,
        "net/minecraft/client/KeyMapping#resetMapping @HEAD": 1,
        "net/minecraft/client/KeyMapping#resetMapping @RETURN": 1,
        "net/minecraft/client/MouseHandler#grabMouse @HEAD": 1,
        "net/minecraft/client/Screenshot#grab @HEAD": 1,
        "net/minecraft/client/gui/Gui#tick @HEAD": 1,
        "net/minecraft/client/gui/components/spectator/SpectatorGui#onMouseScrolled @HEAD": 1,
        "net/minecraft/client/gui/screens/Screen#resize @HEAD": 1,
        "net/minecraft/client/gui/screens/Screen#resize @TAIL": 1,
        "net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl#handleCustomQuery @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl#handleLoginFinished @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#destroyBlockProgress @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#levelEvent @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#playSeededSound @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#createPlayer @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#isSpectator @HEAD": 1,
        "net/minecraft/client/multiplayer/ServerData#copyFrom @RETURN": 1,
        "net/minecraft/client/multiplayer/ServerData#read @RETURN": 1,
        "net/minecraft/client/multiplayer/ServerData#write @RETURN": 1,
        "net/minecraft/client/particle/ParticleEngine#setLevel @HEAD": 1,
        "net/minecraft/client/player/AbstractClientPlayer#<init> @RETURN": 1,
        "net/minecraft/client/renderer/GameRenderer#renderLevel @HEAD": 1,
        "net/minecraft/client/renderer/LevelRenderer#lambda$addSkyPass$0 @HEAD": 1,
        "net/minecraft/client/renderer/LevelRenderer#submitHitOutline @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderer#shouldRender @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderer#submitNameDisplay @HEAD": 1,
        "net/minecraft/client/renderer/entity/LivingEntityRenderer#shouldShowName @HEAD": 1,
        "net/minecraft/client/resources/server/ServerPackManager#onDownload @HEAD": 1,
        "net/minecraft/network/Connection#setupCompression @RETURN": 1,
        "net/minecraft/world/entity/player/ProfilePublicKey$Data#hasExpired @HEAD": 2,
        "net/optifine/render/ChunkVisibility#reset @HEAD": 1,
        "net/optifine/shaders/Shaders#setRenderingFirstPersonHand @HEAD": 1,
        "shadersmod/client/ShadersRender#renderHand0 @HEAD": 1,
        "shadersmod/client/ShadersRender#renderHand1 @HEAD": 1
      },
      "wanted_calls": {
        "com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen#init @INVOKE (modify-arg)": 1,
        "com/mojang/renderpearl/api/commands/CommandEncoder#clearDepthTexture @INVOKE (wrap-with-condition)": 2,
        "java/util/stream/Stream#collect @INVOKE (modify-arg)": 1,
        "net/irisshaders/iris/Iris#getShaderpacksDirectory @INVOKE (redirect)": 1,
        "net/irisshaders/iris/uniforms/CommonUniforms#generalCommonUniforms @HEAD (modify-variable)": 1,
        "net/irisshaders/iris/uniforms/SystemTimeUniforms$Timer#beginFrame @HEAD (modify-variable)": 1,
        "net/minecraft/client/Camera#setRotation @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/Camera#update @INVOKE": 1,
        "net/minecraft/client/KeyboardHandler#keyPress @INVOKE": 2,
        "net/minecraft/client/Minecraft#runTick @CONSTANT": 1,
        "net/minecraft/client/Minecraft#runTick @INVOKE": 2,
        "net/minecraft/client/MouseHandler#onButton @INVOKE": 1,
        "net/minecraft/client/MouseHandler#onScroll @INVOKE": 1,
        "net/minecraft/client/gui/Gui#extractRenderState @INVOKE": 1,
        "net/minecraft/client/gui/Gui#setScreen @FIELD": 1,
        "net/minecraft/client/gui/screens/Screen#charTyped @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/Screen#extractRenderStateWithTooltipAndSubtitles @INVOKE (modify-arg)": 1,
        "net/minecraft/client/gui/screens/Screen#keyPressed @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/Screen#keyReleased @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/Screen#mouseClicked @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/Screen#mouseDragged @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/Screen#mouseReleased @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/Screen#mouseScrolled @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl#handleConfigurationFinished @INVOKE": 1,
        "net/minecraft/client/multiplayer/ClientPacketListener#handleMoveEntity @RETURN (modify-variable)": 1,
        "net/minecraft/client/multiplayer/ClientPacketListener#handleSetEntityPassengersPacket @RETURN (modify-variable)": 1,
        "net/minecraft/client/multiplayer/ClientPacketListener#handleTeleportEntity @RETURN (modify-variable)": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#getPlayerMode @INVOKE (redirect)": 2,
        "net/minecraft/client/particle/SingleQuadParticle#extract @INVOKE": 2,
        "net/minecraft/client/renderer/LevelRenderer#render @INVOKE": 1,
        "net/minecraft/client/renderer/chunk/SectionRenderDispatcher#runTask @INVOKE": 1,
        "net/minecraft/client/renderer/chunk/SectionRenderDispatcher#schedule @INVOKE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extract @INVOKE": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#getBuffer @HEAD (modify-variable)": 1,
        "net/minecraft/util/Util#getMillis @INVOKE (redirect)": 3,
        "net/minecraft/world/entity/LivingEntity#isInvisibleTo @INVOKE (redirect)": 1,
        "org/joml/Quaternionf#rotationYXZ @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 8
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "PreLaunchEntrypoint",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "Screens",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 6902,
        "features": {
          "screen": 4,
          "renderer": 1,
          "network": 1,
          "mixin": 100
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 6902,
        "methods": 51075,
        "tried": 600,
        "completed": 221,
        "handlers_tried": 9,
        "handlers_completed": 0,
        "missing": {
          "[J#clone()Ljava/lang/Object;": 3,
          "[Lcom/replaymod/lib/com/fasterxml/jackson/databind/util/AccessPattern;#clone()Ljava/lang/Object;": 1,
          "[Lcom/replaymod/replaystudio/lib/viaversion/api/minecraft/entitydata/types/EntityDataTypes1_8;#clone()Ljava/lang/Object;": 1,
          "[Lcom/replaymod/replaystudio/lib/viaversion/api/minecraft/item/data/TropicalFishPattern$Pattern;#clone()Ljava/lang/Object;": 1,
          "com/replaymod/lib/com/fasterxml/jackson/databind/jsonFormatVisitors/JsonFormatVisitorWrapper#getProvider()Lcom/replaymod/lib/com/fasterxml/jackson/databind/SerializerProvider;": 1,
          "com/replaymod/lib/com/fasterxml/jackson/databind/node/JsonNodeType#ordinal()I": 1,
          "com/replaymod/lib/org/apache/maven/artifact/versioning/ComparableVersion$ListItem#iterator()Ljava/util/Iterator;": 1,
          "com/replaymod/lib/org/apache/maven/artifact/versioning/ComparableVersion$ListItem#size()I": 3,
          "com/replaymod/replaystudio/lib/viaversion/api/type/Type#write(Lio/netty/buffer/ByteBuf;Ljava/lang/Object;)V": 1,
          "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/ints/Int2IntMap#get(I)I": 1,
          "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/ints/Int2IntMap#put(II)I": 1,
          "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/longs/LongBidirectionalIterator#next()Ljava/lang/Long;": 2,
          "java/io/DataInput#readBoolean()Z": 1,
          "java/io/DataInput#readByte()B": 1,
          "java/io/DataInput#readChar()C": 1,
          "java/io/DataInput#readDouble()D": 1,
          "java/io/DataInput#readFloat()F": 1,
          "java/io/DataInput#readFully([B)V": 1,
          "java/io/DataInput#readFully([BII)V": 1,
          "java/io/DataInput#readInt()I": 1,
          "java/io/DataInput#readLine()Ljava/lang/String;": 1,
          "java/io/DataInput#readLong()J": 1,
          "java/io/DataInput#readShort()S": 1,
          "java/io/DataInput#readUTF()Ljava/lang/String;": 1,
          "java/io/DataInput#readUnsignedByte()I": 1,
          "java/io/DataInput#readUnsignedShort()I": 1,
          "java/io/DataInput#skipBytes(I)I": 1,
          "java/io/DataOutput#writeInt(I)V": 1,
          "java/io/InputStream#available()I": 1,
          "java/io/InputStream#read([B)I": 1,
          "java/lang/Character#toUpperCase(C)C": 1,
          "java/lang/Long#numberOfLeadingZeros(J)I": 1,
          "java/lang/String#getBytes(Ljava/lang/String;)[B": 1,
          "java/lang/String#join(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;": 6,
          "java/lang/String#replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/lang/reflect/Field#getName()Ljava/lang/String;": 1,
          "java/net/Socket#bind(Ljava/net/SocketAddress;)V": 1,
          "java/util/AbstractMap#clone()Ljava/lang/Object;": 16,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/Arrays#hashCode([J)I": 1,
          "java/util/Arrays#hashCode([Ljava/lang/Object;)I": 4,
          "java/util/Arrays#toString([J)Ljava/lang/String;": 1,
          "java/util/Collection#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 1,
          "java/util/Collections#emptyMap()Ljava/util/Map;": 2,
          "java/util/Collections#singletonList(Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Collections#unmodifiableCollection(Ljava/util/Collection;)Ljava/util/Collection;": 1,
          "java/util/Comparator#compare(Ljava/lang/Object;Ljava/lang/Object;)I": 1,
          "java/util/Map#containsValue(Ljava/lang/Object;)Z": 1,
          "java/util/Map#hashCode()I": 1,
          "java/util/Queue#remove()Ljava/lang/Object;": 1,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "java/util/Set#remove(Ljava/lang/Object;)Z": 1,
          "java/util/concurrent/Future#get()Ljava/lang/Object;": 1,
          "java/util/concurrent/locks/Lock#lock()V": 1,
          "net/minecraft/client/DeltaTracker#getGameTimeDeltaPartialTick(Z)F": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/client/Minecraft#isSameThread()Z": 1,
          "net/minecraft/client/resources/language/I18n#get(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 1,
          "new com/mojang/blaze3d/vertex/PoseStack": 1
        },
        "runs": [
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/ByFunctionOrdering",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/ByFunctionOrdering",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null.onResultOf(null)\""
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/ints/IntSpliterators$SpliteratorConcatenator",
            "method": "recomputeRemaining",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/ints/IntSpliterators$SpliteratorConcatenator",
            "method": "computeCharacteristics",
            "desc": "()I",
            "value": "16448"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/ints/IntSpliterators$SpliteratorConcatenator",
            "method": "tryAdvance",
            "desc": "(Ljava/util/function/IntConsumer;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/ints/IntSpliterators$SpliteratorConcatenator",
            "method": "estimateSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/ints/IntSpliterators$SpliteratorConcatenator",
            "method": "characteristics",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/ints/IntSpliterators$SpliteratorConcatenator",
            "method": "skip",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/ints/IntSpliterators$SpliteratorConcatenator",
            "method": "tryAdvance",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/api/minecraft/item/data/StatePropertyMatcher$RangedMatcher",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"minValue=null, maxValue=null]\""
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/api/minecraft/item/data/StatePropertyMatcher$RangedMatcher",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/objects/Object2ObjectArrayMap$EntrySet$EntrySetSpliterator",
            "method": "characteristics",
            "desc": "()I",
            "value": "16465"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/objects/Object2ObjectArrayMap$EntrySet$EntrySetSpliterator",
            "method": "makeForSplit",
            "desc": "(II)Lcom/replaymod/replaystudio/lib/viaversion/libs/fastutil/objects/Object2ObjectArrayMap$EntrySet$EntrySetSpliterator;",
            "value": "obj#57"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/objects/Object2ObjectArrayMap$EntrySet$EntrySetSpliterator",
            "method": "makeForSplit",
            "desc": "(II)Lcom/replaymod/replaystudio/lib/viaversion/libs/fastutil/objects/ObjectSpliterator;",
            "value": "obj#59"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setEtag",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#125"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setEventId",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#127"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setItems",
            "desc": "(Ljava/util/List;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#129"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setKind",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#131"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setNextPageToken",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#133"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setOfflineAt",
            "desc": "(Lcom/replaymod/lib/com/google/api/client/util/DateTime;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#135"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setPageInfo",
            "desc": "(Lcom/replaymod/lib/com/google/api/services/youtube/model/PageInfo;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#137"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setPollingIntervalMillis",
            "desc": "(Ljava/lang/Long;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#139"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setTokenPagination",
            "desc": "(Lcom/replaymod/lib/com/google/api/services/youtube/model/TokenPagination;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#141"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse",
            "method": "setVisitorId",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/LiveChatMessageListResponse;",
            "value": "obj#143"
          },
          {
            "class": "com/replaymod/replaystudio/protocol/packets/PacketPlayerListEntry",
            "method": "getGamemode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/protocol/packets/PacketPlayerListEntry",
            "method": "isListed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/protocol/packets/PacketPlayerListEntry",
            "method": "getLatency",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/protocol/packets/PacketPlayerListEntry",
            "method": "getListOrder",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/protocol/packets/PacketPlayerListEntry",
            "method": "getShowHat",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap",
            "method": "withCaseInsensitivity",
            "desc": "(Z)Lcom/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap;",
            "value": "obj#182"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap",
            "method": "findSize",
            "desc": "(I)I",
            "value": "8"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap",
            "method": "renameAll",
            "desc": "(Lcom/replaymod/lib/com/fasterxml/jackson/databind/util/NameTransformer;)Lcom/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap;",
            "value": "obj#189"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap",
            "method": "withoutProperties",
            "desc": "(Ljava/util/Collection;)Lcom/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap;",
            "value": "obj#190"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap",
            "method": "isCaseInsensitive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap",
            "method": "hasAliases",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMap",
            "method": "_hashCode",
            "desc": "(Ljava/lang/String;)I",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/node/NullNode",
            "method": "getInstance",
            "desc": "()Lcom/replaymod/lib/com/fasterxml/jackson/databind/node/NullNode;",
            "value": "obj#228"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/node/NullNode",
            "method": "getNodeType",
            "desc": "()Lcom/replaymod/lib/com/fasterxml/jackson/databind/node/JsonNodeType;",
            "value": "obj#234"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/node/NullNode",
            "method": "asText",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/node/NullNode",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/mcstructs/converter/impl/v1_20_3/JsonConverter_v1_20_3",
            "method": "forkIfDefault",
            "desc": "()Lcom/replaymod/replaystudio/lib/viaversion/libs/mcstructs/converter/DataConverter;",
            "value": "obj#390"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/mcstructs/converter/impl/v1_20_3/JsonConverter_v1_20_3",
            "method": "empty",
            "desc": "()Lcom/replaymod/replaystudio/lib/viaversion/libs/gson/JsonElement;",
            "value": "obj#393"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/mcstructs/converter/impl/v1_20_3/JsonConverter_v1_20_3",
            "method": "createBoolean",
            "desc": "(Z)Lcom/replaymod/replaystudio/lib/viaversion/libs/gson/JsonElement;",
            "value": "obj#395"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/mcstructs/converter/impl/v1_20_3/JsonConverter_v1_20_3",
            "method": "createBoolean",
            "desc": "(Z)Ljava/lang/Object;",
            "value": "obj#469"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/mcstructs/converter/impl/v1_20_3/JsonConverter_v1_20_3",
            "method": "empty",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#393"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/mcstructs/converter/impl/v1_20_3/JsonConverter_v1_20_3",
            "method": "forkIfDefault",
            "desc": "()Lcom/replaymod/replaystudio/lib/viaversion/libs/mcstructs/converter/ConsumerTracking;",
            "value": "obj#472"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Maps$MapDifferenceImpl",
            "method": "areEqual",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Maps$MapDifferenceImpl",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Maps$MapDifferenceImpl",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"equal\""
          },
          {
            "class": "com/replaymod/lib/com/coremedia/iso/boxes/CompositionTimeToSample$Entry",
            "method": "getCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/coremedia/iso/boxes/CompositionTimeToSample$Entry",
            "method": "getOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/coremedia/iso/boxes/CompositionTimeToSample$Entry",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"0, offset=0}\""
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/ChannelSectionLocalization",
            "method": "setTitle",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/ChannelSectionLocalization;",
            "value": "obj#490"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/io/ByteSource",
            "method": "slice",
            "desc": "(JJ)Lcom/replaymod/replaystudio/lib/guava/io/ByteSource;",
            "value": "obj#506"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/io/ByteSource",
            "method": "concat",
            "desc": "(Ljava/util/Iterator;)Lcom/replaymod/replaystudio/lib/guava/io/ByteSource;",
            "value": "obj#535"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/io/ByteSource",
            "method": "empty",
            "desc": "()Lcom/replaymod/replaystudio/lib/guava/io/ByteSource;",
            "value": "obj#538"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/api/minecraft/Particle$ParticleData",
            "method": "copy",
            "desc": "()Lcom/replaymod/replaystudio/lib/viaversion/api/minecraft/Particle$ParticleData;",
            "value": "obj#547"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/api/minecraft/Particle$ParticleData",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null, value=null}\""
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/api/minecraft/Particle$ParticleData",
            "method": "copy",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#552"
          },
          {
            "class": "com/replaymod/lib/com/fasterxml/jackson/databind/ser/std/DateTimeSerializerBase",
            "method": "isEmpty",
            "desc": "(Lcom/replaymod/lib/com/fasterxml/jackson/databind/SerializerProvider;Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/org/apache/maven/artifact/versioning/ComparableVersion$ListItem",
            "method": "getType",
            "desc": "()I",
            "value": "2"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse",
            "method": "setEtag",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse;",
            "value": "obj#597"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse",
            "method": "setEventId",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse;",
            "value": "obj#599"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse",
            "method": "setItems",
            "desc": "(Ljava/util/List;)Lcom/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse;",
            "value": "obj#601"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse",
            "method": "setKind",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse;",
            "value": "obj#603"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse",
            "method": "setNextPageToken",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse;",
            "value": "obj#605"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse",
            "method": "setPageInfo",
            "desc": "(Lcom/replaymod/lib/com/google/api/services/youtube/model/PageInfo;)Lcom/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse;",
            "value": "obj#607"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse",
            "method": "setTokenPagination",
            "desc": "(Lcom/replaymod/lib/com/google/api/services/youtube/model/TokenPagination;)Lcom/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse;",
            "value": "obj#609"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse",
            "method": "setVisitorId",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/FanFundingEventListResponse;",
            "value": "obj#611"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setAlt",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#626"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setFields",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#627"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setKey",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#628"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setOauthToken",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#629"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setPrettyPrint",
            "desc": "(Ljava/lang/Boolean;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#630"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setQuotaUser",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#631"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setUserIp",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#632"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setPart",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#634"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setChart",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#636"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setHl",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#638"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setId",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#640"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setLocale",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#642"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setMaxResults",
            "desc": "(Ljava/lang/Long;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#644"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setMyRating",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#646"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setOnBehalfOfContentOwner",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#648"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setPageToken",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#650"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setRegionCode",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#652"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setVideoCategoryId",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List;",
            "value": "obj#654"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setUserIp",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTubeRequest;",
            "value": "obj#657"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setQuotaUser",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTubeRequest;",
            "value": "obj#658"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setPrettyPrint",
            "desc": "(Ljava/lang/Boolean;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTubeRequest;",
            "value": "obj#659"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setOauthToken",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTubeRequest;",
            "value": "obj#660"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setKey",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTubeRequest;",
            "value": "obj#661"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setFields",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTubeRequest;",
            "value": "obj#662"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/YouTube$Videos$List",
            "method": "setAlt",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/YouTubeRequest;",
            "value": "obj#663"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Multimaps$MapMultimap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Multimaps$MapMultimap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Multimaps$MapMultimap",
            "method": "get",
            "desc": "(Ljava/lang/Object;)Ljava/util/Set;",
            "value": "obj#683"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Multimaps$MapMultimap",
            "method": "removeAll",
            "desc": "(Ljava/lang/Object;)Ljava/util/Set;",
            "value": "obj#695"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Multimaps$MapMultimap",
            "method": "createAsMap",
            "desc": "()Ljava/util/Map;",
            "value": "obj#702"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Multimaps$MapMultimap",
            "method": "get",
            "desc": "(Ljava/lang/Object;)Ljava/util/Collection;",
            "value": "obj#708"
          },
          {
            "class": "com/replaymod/replaystudio/lib/guava/collect/Multimaps$MapMultimap",
            "method": "removeAll",
            "desc": "(Ljava/lang/Object;)Ljava/util/Collection;",
            "value": "obj#710"
          },
          {
            "class": "com/replaymod/lib/com/google/api/client/http/MultipartContent",
            "method": "setMediaType",
            "desc": "(Lcom/replaymod/lib/com/google/api/client/http/HttpMediaType;)Lcom/replaymod/lib/com/google/api/client/http/MultipartContent;",
            "value": "obj#731"
          },
          {
            "class": "com/replaymod/lib/com/google/api/client/http/MultipartContent",
            "method": "setParts",
            "desc": "(Ljava/util/Collection;)Lcom/replaymod/lib/com/google/api/client/http/MultipartContent;",
            "value": "obj#741"
          },
          {
            "class": "com/replaymod/lib/com/google/api/client/http/MultipartContent",
            "method": "setMediaType",
            "desc": "(Lcom/replaymod/lib/com/google/api/client/http/HttpMediaType;)Lcom/replaymod/lib/com/google/api/client/http/AbstractHttpContent;",
            "value": "obj#758"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/objects/ReferenceArrayList$SubList$SubListSpliterator",
            "method": "makeForSplit",
            "desc": "(II)Lcom/replaymod/replaystudio/lib/viaversion/libs/fastutil/objects/ReferenceArrayList$SubList$SubListSpliterator;",
            "value": "obj#764"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/libs/fastutil/objects/ReferenceArrayList$SubList$SubListSpliterator",
            "method": "makeForSplit",
            "desc": "(II)Lcom/replaymod/replaystudio/lib/viaversion/libs/fastutil/objects/ObjectSpliterator;",
            "value": "obj#768"
          },
          {
            "class": "com/replaymod/lib/com/viaversion/nbt/tag/LongArrayTag",
            "method": "getValue",
            "desc": "()[J",
            "value": "obj#770"
          },
          {
            "class": "com/replaymod/lib/com/viaversion/nbt/tag/LongArrayTag",
            "method": "length",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/viaversion/nbt/tag/LongArrayTag",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/viaversion/nbt/tag/LongArrayTag",
            "method": "getTagId",
            "desc": "()I",
            "value": "12"
          },
          {
            "class": "com/replaymod/lib/com/viaversion/nbt/tag/LongArrayTag",
            "method": "getValue",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#770"
          },
          {
            "class": "com/replaymod/lib/de/johni0702/minecraft/gui/container/GuiScreen",
            "method": "getThis",
            "desc": "()Lcom/replaymod/lib/de/johni0702/minecraft/gui/container/GuiScreen;",
            "value": "obj#805"
          },
          {
            "class": "com/replaymod/lib/de/johni0702/minecraft/gui/container/GuiScreen",
            "method": "getThis",
            "desc": "()Lcom/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiElement;",
            "value": "obj#806"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/I18nRegionSnippet",
            "method": "setGl",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/I18nRegionSnippet;",
            "value": "obj#866"
          },
          {
            "class": "com/replaymod/lib/com/google/api/services/youtube/model/I18nRegionSnippet",
            "method": "setName",
            "desc": "(Ljava/lang/String;)Lcom/replaymod/lib/com/google/api/services/youtube/model/I18nRegionSnippet;",
            "value": "obj#868"
          },
          {
            "class": "com/replaymod/lib/com/google/api/client/extensions/jetty/auth/oauth2/LocalServerReceiver",
            "method": "getPort",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/com/google/api/client/util/ArrayMap$EntrySet",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#940"
          },
          {
            "class": "com/replaymod/lib/de/johni0702/minecraft/gui/container/GuiOverlay",
            "method": "getThis",
            "desc": "()Lcom/replaymod/lib/de/johni0702/minecraft/gui/container/GuiOverlay;",
            "value": "obj#942"
          },
          {
            "class": "com/replaymod/lib/de/johni0702/minecraft/gui/container/GuiOverlay",
            "method": "getThis",
            "desc": "()Lcom/replaymod/lib/de/johni0702/minecraft/gui/element/AbstractGuiElement;",
            "value": "obj#943"
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/api/minecraft/data/predicate/DataComponentPredicate",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"type=null, predicate=null]\""
          },
          {
            "class": "com/replaymod/replaystudio/lib/viaversion/api/minecraft/data/predicate/DataComponentPredicate",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/replaymod/lib/org/mortbay/util/SingletonList",
            "method": "newSingletonList",
            "desc": "(Ljava/lang/Object;)Lcom/replaymod/lib/org/mortbay/util/SingletonList;",
            "value": "obj#1025"
          },
          {
            "class": "com/replaymod/lib/org/mortbay/util/SingletonList",
            "method": "size",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "com/replaymod/lib/org/mortbay/util/SingletonList",
            "method": "listIterator",
            "desc": "()Ljava/util/ListIterator;",
            "value": "obj#1029"
          }
        ],
        "insns": 10107
      },
      "verdict": "partly",
      "summary": "9 of 44 listening patch sites land on a Horizon hook (20%); of 89 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "repurposed_structures",
      "name": "Repurposed Structures",
      "version": "7.8.4+26.3-fabric",
      "license": "GNU Lesser General Public License v3.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "com/telepathicgrunt/repurposedstructures/RepurposedStructuresFabric"
        },
        {
          "kind": "modmenu",
          "value": "com/telepathicgrunt/repurposedstructures/configs/ModMenuCompat"
        }
      ],
      "mixin_configs": [
        "repurposed_structures-fabric.mixins.json",
        "repurposed_structures-common.mixins.json"
      ],
      "depends": [
        "midnightlib"
      ],
      "classes": 212,
      "methods": 1071,
      "sites": [
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/blocks/DetectorRailBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/DetectorRailBlock"
          ],
          "handler": "repurposedstructures_fixMC196102Bug",
          "kind": "inject",
          "method": "rotate",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/DetectorRailBlock#rotate RETURN"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/blocks/PoweredRailBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/PoweredRailBlock"
          ],
          "handler": "repurposedstructures_fixMC196102Bug",
          "kind": "inject",
          "method": "rotate",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/PoweredRailBlock#rotate RETURN"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/blocks/RailBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RailBlock"
          ],
          "handler": "repurposedstructures_fixMC196102Bug",
          "kind": "inject",
          "method": "rotate",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RailBlock#rotate RETURN"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/blocks/StructureBlockScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/StructureBlockEditScreen"
          ],
          "handler": "repurposedstructures_makeFileNameLonger",
          "kind": "inject",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/EditBox;setMaxLength(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/StructureBlockEditScreen#init INVOKE"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/entities/BlockAttachedEntityMixin",
          "targets": [
            "net/minecraft/world/entity/decoration/BlockAttachedEntity"
          ],
          "handler": "repurposedstructures_lowerLoggingLevel",
          "kind": "wrap-operation",
          "method": "readAdditionalSaveData",
          "at": "INVOKE",
          "at_target": "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/FixBambooPlacementMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/BambooFeature"
          ],
          "handler": "repurposedstructures_fixBambooNonAirCheck",
          "kind": "inject",
          "method": "place",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/WorldGenLevel;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/feature/BambooFeature#place INVOKE"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/LessBambooInStructuresMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/BambooFeature"
          ],
          "handler": "repurposedstructures_lessBambooInStructures",
          "kind": "inject",
          "method": "place",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/feature/BambooFeature#place HEAD"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/LessJungleBushInStructuresMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/TreeFeature"
          ],
          "handler": "repurposedstructures_lessJungleBushInStructures",
          "kind": "inject",
          "method": "place",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/feature/TreeFeature#place HEAD"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/NoDeltasInStructuresMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/DeltaFeature"
          ],
          "handler": "repurposedstructures_noDeltasInStructures",
          "kind": "inject",
          "method": "place",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/feature/DeltaFeature#place HEAD"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/NoFallsInStructuresMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/SpringFeature"
          ],
          "handler": "repurposedstructures_noLavaInStructures",
          "kind": "inject",
          "method": "place",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/feature/SpringFeature#place HEAD"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/NoGeodesInStructuresMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/GeodeFeature"
          ],
          "handler": "repurposedstructures_noGeodesInStructures",
          "kind": "inject",
          "method": "place",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/feature/GeodeFeature#place HEAD"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/NoLakesInStructuresMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/LakeFeature"
          ],
          "handler": "repurposedstructures_noLakesInStructures",
          "kind": "inject",
          "method": "place",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/feature/LakeFeature#place HEAD"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/NoSteppedColumnClusterFeatureMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/SteppedColumnClusterFeature"
          ],
          "handler": "repurposedstructures_noBasaltColumnsInStructures1",
          "kind": "wrap-operation",
          "method": "place",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/feature/SteppedColumnClusterFeature;canPlaceAt(Lnet/minecraft/world/level/WorldGenLevel;Lnet/minecraft/core/BlockPos$MutableBlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/NoSteppedColumnClusterFeatureMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/SteppedColumnClusterFeature"
          ],
          "handler": "repurposedstructures_noBasaltColumnsInStructures2",
          "kind": "wrap-operation",
          "method": "findSurface",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/feature/SteppedColumnClusterFeature;canPlaceAt(Lnet/minecraft/world/level/WorldGenLevel;Lnet/minecraft/core/BlockPos$MutableBlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/NoVinesInStructuresMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/VinesFeature"
          ],
          "handler": "repurposedstructures_noLavaInStructures",
          "kind": "inject",
          "method": "place",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Direction;values()[Lnet/minecraft/core/Direction;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/feature/VinesFeature#place INVOKE"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/features/SmarterSnowPlacingInStructuresMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/feature/SnowAndFreezeFeature"
          ],
          "handler": "repurposedstructures_smarterSnowPlacingInStructures",
          "kind": "wrap-operation",
          "method": "place",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/biome/Biome;shouldSnow(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/resources/BuiltInRegistriesMixin",
          "targets": [
            "net/minecraft/core/registries/BuiltInRegistries"
          ],
          "handler": "repurposedstructures_initCustomRegistries",
          "kind": "inject",
          "method": "<clinit>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/registries/BuiltInRegistries#<clinit> RETURN"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/structures/LocateCommandMixin",
          "targets": [
            "net/minecraft/server/commands/LocateCommand"
          ],
          "handler": "repurposedstructures_increaseLocateRadius",
          "kind": "inject",
          "method": "locateStructure",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/ChunkGenerator;findNearestMapStructure(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/HolderSet;Lnet/minecraft/core/BlockPos;IZ)Lcom/mojang/datafixers/util/Pair;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/commands/LocateCommand#locateStructure INVOKE"
        },
        {
          "mixin": "com/telepathicgrunt/repurposedstructures/mixins/structures/StructurePoolMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool"
          ],
          "handler": "repurposedstructures_increaseWeightLimit",
          "kind": "wrap-operation",
          "method": "lambda$static$0",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/serialization/Codec;intRange(II)Lcom/mojang/serialization/Codec;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 10,
      "accessors": 19,
      "hooks": {},
      "wanted": {
        "net/minecraft/core/registries/BuiltInRegistries#<clinit> @RETURN": 1,
        "net/minecraft/world/level/block/DetectorRailBlock#rotate @RETURN": 1,
        "net/minecraft/world/level/block/PoweredRailBlock#rotate @RETURN": 1,
        "net/minecraft/world/level/block/RailBlock#rotate @RETURN": 1,
        "net/minecraft/world/level/levelgen/feature/BambooFeature#place @HEAD": 1,
        "net/minecraft/world/level/levelgen/feature/DeltaFeature#place @HEAD": 1,
        "net/minecraft/world/level/levelgen/feature/GeodeFeature#place @HEAD": 1,
        "net/minecraft/world/level/levelgen/feature/LakeFeature#place @HEAD": 1,
        "net/minecraft/world/level/levelgen/feature/SpringFeature#place @HEAD": 1,
        "net/minecraft/world/level/levelgen/feature/TreeFeature#place @HEAD": 1
      },
      "wanted_calls": {
        "com/mojang/serialization/Codec#intRange @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/inventory/StructureBlockEditScreen#init @INVOKE": 1,
        "net/minecraft/server/commands/LocateCommand#locateStructure @INVOKE": 1,
        "net/minecraft/world/level/biome/Biome#shouldSnow @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/levelgen/feature/BambooFeature#place @INVOKE": 1,
        "net/minecraft/world/level/levelgen/feature/SteppedColumnClusterFeature#canPlaceAt @INVOKE (wrap-operation)": 2,
        "net/minecraft/world/level/levelgen/feature/VinesFeature#place @INVOKE": 1,
        "org/slf4j/Logger#error @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "BiomeModification",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BiomeModificationContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BiomeModificationContext$GenerationSettingsContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BiomeModifications",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BiomeSelectionContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricRegistryBuilder",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "IdentifiableResourceReloadListener",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModificationPhase",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "RegistryAttribute",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceManagerHelper",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopping",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        }
      ],
      "code": {
        "classes": 212,
        "features": {
          "worldgen": 18,
          "command": 1,
          "events": 1,
          "mixin": 29
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 212,
        "methods": 575,
        "tried": 575,
        "completed": 192,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/telepathicgrunt/repurposedstructures/world/predicates/MatterPhaseRuleTest$MATTER_PHASE;#clone()Ljava/lang/Object;": 1,
          "[Lcom/telepathicgrunt/repurposedstructures/world/structures/GenericJigsawStructure$BURYING_TYPE;#clone()Ljava/lang/Object;": 1,
          "[Lcom/telepathicgrunt/repurposedstructures/world/structures/GenericNetherJigsawStructure$LAND_SEARCH_DIRECTION;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/ImmutableList#copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;": 1,
          "com/google/common/collect/ImmutableMap#builder()Lcom/google/common/collect/ImmutableMap$Builder;": 2,
          "com/google/common/collect/Lists#newArrayList()Ljava/util/ArrayList;": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "com/telepathicgrunt/repurposedstructures/world/predicates/MatterPhaseRuleTest$MATTER_PHASE#ordinal()I": 1,
          "com/telepathicgrunt/repurposedstructures/world/structures/pieces/MonumentPieces$MonumentBuilding#GRIDROOM_SOURCE_INDEX": 1,
          "java/lang/Class#getClassLoader()Ljava/lang/ClassLoader;": 1,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/Arrays#stream([Ljava/lang/Object;)Ljava/util/stream/Stream;": 2,
          "java/util/EnumMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Locale#ROOT": 3,
          "java/util/function/BiConsumer#accept(Ljava/lang/Object;Ljava/lang/Object;)V": 1,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 2,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 2,
          "net/minecraft/client/gui/components/EditBox#setMaxLength(I)V": 1,
          "net/minecraft/core/BlockPos#ZERO": 1,
          "net/minecraft/core/BlockPos#below()Lnet/minecraft/core/BlockPos;": 3,
          "net/minecraft/core/BlockPos#getX()I": 1,
          "net/minecraft/core/BlockPos#getY()I": 2,
          "net/minecraft/core/Direction#get3DDataValue()I": 1,
          "net/minecraft/core/Direction#ordinal()I": 1,
          "net/minecraft/core/Direction$AxisDirection#POSITIVE": 1,
          "net/minecraft/core/HolderSet#iterator()Ljava/util/Iterator;": 1,
          "net/minecraft/core/HolderSet#size()I": 3,
          "net/minecraft/core/Registry#containsKey(Lnet/minecraft/resources/Identifier;)Z": 1,
          "net/minecraft/core/Registry#getKey(Ljava/lang/Object;)Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraft/core/Registry#getValue(Lnet/minecraft/resources/Identifier;)Ljava/lang/Object;": 1,
          "net/minecraft/core/Registry#iterator()Ljava/util/Iterator;": 1,
          "net/minecraft/core/Registry#keySet()Ljava/util/Set;": 1,
          "net/minecraft/core/Registry#stream()Ljava/util/stream/Stream;": 1,
          "net/minecraft/core/registries/Registries#LOOT_TABLE": 1,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/resources/Identifier#tryParse(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/server/MinecraftServer#reloadableRegistries()Lnet/minecraft/server/ReloadableServerRegistries$Holder;": 1,
          "net/minecraft/server/level/WorldGenRegion#getLevel()Lnet/minecraft/server/level/ServerLevel;": 1,
          "net/minecraft/server/packs/resources/PreparableReloadListener#reload(Lnet/minecraft/server/packs/resources/PreparableReloadListener$SharedState;Ljava/util/concurrent/Executor;Lnet/minecraft/server/packs/resources/PreparableReloadListener$PreparationBarrier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;": 1,
          "net/minecraft/util/RandomSource#nextBoolean()Z": 1,
          "net/minecraft/util/RandomSource#nextFloat()F": 1,
          "net/minecraft/util/valueproviders/ConstantInt#of(I)Lnet/minecraft/util/valueproviders/ConstantInt;": 1,
          "net/minecraft/util/valueproviders/IntProvider#sample(Lnet/minecraft/util/RandomSource;)I": 1,
          "net/minecraft/world/entity/EntityTypes#SKELETON": 1,
          "net/minecraft/world/entity/EntityTypes#SKELETON_HORSE": 1,
          "net/minecraft/world/level/WorldGenLevel#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 3,
          "net/minecraft/world/level/WorldGenLevel#getSeed()J": 1,
          "net/minecraft/world/level/WorldGenLevel#isWaterAt(Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/world/level/block/Rotation#CLOCKWISE_180": 3,
          "net/minecraft/world/level/block/state/BlockState#getProperties()Ljava/util/Collection;": 1,
          "net/minecraft/world/level/block/state/BlockState#getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;": 1,
          "net/minecraft/world/level/block/state/BlockState#isAir()Z": 3,
          "net/minecraft/world/level/chunk/ChunkGenerator#getMinY()I": 1,
          "net/minecraft/world/level/chunk/ChunkGeneratorStructureState#getLevelSeed()J": 1,
          "net/minecraft/world/level/levelgen/structure/Structure$GenerationContext#chunkGenerator()Lnet/minecraft/world/level/chunk/ChunkGenerator;": 3,
          "net/minecraft/world/level/levelgen/structure/Structure$GenerationContext#chunkPos()Lnet/minecraft/world/level/ChunkPos;": 8,
          "net/minecraft/world/level/levelgen/structure/Structure$GenerationContext#random()Lnet/minecraft/world/level/levelgen/WorldgenRandom;": 1,
          "net/minecraft/world/level/levelgen/structure/StructurePiece#move(III)V": 1,
          "net/minecraft/world/level/levelgen/structure/placement/RandomSpreadStructurePlacement#isStructureChunk(Lnet/minecraft/world/level/chunk/ChunkGeneratorStructureState;II)Z": 1,
          "net/minecraft/world/level/levelgen/structure/pools/SinglePoolElement#getSettings(Lnet/minecraft/world/level/block/Rotation;Lnet/minecraft/world/level/levelgen/structure/BoundingBox;Lnet/minecraft/world/level/levelgen/structure/templatesystem/LiquidSettings;Z)Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructurePlaceSettings;": 1,
          "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$StructureBlockInfo#pos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$StructureBlockInfo#state()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/phys/AABB#intersects(Lnet/minecraft/world/phys/AABB;)Z": 1,
          "new it/unimi/dsi/fastutil/objects/ObjectArrayList": 1,
          "new net/minecraft/core/BlockPos": 1,
          "new net/minecraft/core/BlockPos$MutableBlockPos": 24,
          "new net/minecraft/world/level/levelgen/structure/templatesystem/StructurePlaceSettings": 1,
          "new net/minecraft/world/level/storage/loot/LootContext$Builder": 1,
          "org/apache/commons/lang3/tuple/Pair#getLeft()Ljava/lang/Object;": 1,
          "org/apache/commons/lang3/tuple/Pair#getRight()Ljava/lang/Object;": 1,
          "org/apache/logging/log4j/Level#ERROR": 1,
          "org/slf4j/Logger#debug(Ljava/lang/String;Ljava/lang/Object;)V": 1
        },
        "runs": [
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureFire",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureChains",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureNetherwart",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/misc/structurepiececounter/StructurePieceCountsManager$RequiredPieceNeeds",
            "method": "getRequiredAmount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/misc/structurepiececounter/StructurePieceCountsManager$RequiredPieceNeeds",
            "method": "getMinDistanceFromCenter",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/misc/structurepiececounter/StructurePieceCountsManager$RequiredPieceNeeds",
            "method": "maxLimit",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/misc/structurepiececounter/StructurePieceCountsManager$RequiredPieceNeeds",
            "method": "minDistanceFromCenter",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureCrimsonPlants",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureCrimsonPlants",
            "method": "length",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/utils/GeneralUtils$HeightKey",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/utils/GeneralUtils$HeightKey",
            "method": "z",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/events/lifecycle/TagsUpdatedEvent",
            "method": "fromPacket",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/placements/AdvancedRandomSpread$SuperExclusionZone",
            "method": "chunkCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructurePowderSnow",
            "method": "range",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/services/fabric/FabricResourcefulRegistriesService",
            "method": "create",
            "desc": "(Lcom/telepathicgrunt/repurposedstructures/modinit/registry/ResourcefulRegistry;)Lcom/telepathicgrunt/repurposedstructures/modinit/registry/ResourcefulRegistry;",
            "value": "obj#139"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/services/fabric/FabricResourcefulRegistriesService",
            "method": "create",
            "desc": "(Lnet/minecraft/core/Registry;Ljava/lang/String;)Lcom/telepathicgrunt/repurposedstructures/modinit/registry/ResourcefulRegistry;",
            "value": "obj#144"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureBreakage",
            "method": "chance",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/MinecartFeature",
            "method": "waterBased",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/pieces/MansionPieces$FlagMatrix",
            "method": "get",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/pieces/MansionPieces$FlagMatrix",
            "method": "anyMatchAround",
            "desc": "(III)Z",
            "value": "1"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/placements/AdvancedRandomSpread",
            "method": "spacing",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/placements/AdvancedRandomSpread",
            "method": "separation",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/events/base/CancellableEventHandler",
            "method": "invoke",
            "desc": "(Ljava/lang/Object;Z)Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/events/base/CancellableEventHandler",
            "method": "invoke",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/pieces/MonumentPieces$FitSimpleRoom",
            "method": "fits",
            "desc": "(Lcom/telepathicgrunt/repurposedstructures/world/structures/pieces/MonumentPieces$RoomGraph;)Z",
            "value": "1"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/pieces/MonumentPieces$RoomGraph",
            "method": "isSpecial",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/utils/OpenSimplex2F",
            "method": "fastFloor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureShelfMushroom",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureShelfMushroom",
            "method": "xzRange",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureShelfMushroom",
            "method": "heightRange",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/placements/UnlimitedCountPlacement",
            "method": "of",
            "desc": "(Lnet/minecraft/util/valueproviders/IntProvider;)Lcom/telepathicgrunt/repurposedstructures/world/placements/UnlimitedCountPlacement;",
            "value": "obj#378"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/pieces/MonumentPieces$MonumentPiece",
            "method": "getRoomIndex",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureHangingMoss",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureHangingMoss",
            "method": "length",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureHangingMoss",
            "method": "xzRange",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureHangingMoss",
            "method": "heightRange",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/pieces/PieceLimitedJigsawManager$Entry",
            "method": "topYLimit",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/pieces/PieceLimitedJigsawManager$Entry",
            "method": "depth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureFlowers",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureFlowers",
            "method": "range",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/placements/MinDistanceFromWorldOriginPlacement",
            "method": "minDistanceFromWorldOrigin",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureSeagrass",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/utils/BoxOctree",
            "method": "roundAwayFromZero",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureEndRodChains",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/utils/GeneralUtils",
            "method": "isFullCube",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/SkeletonHorseman",
            "method": "speedModifier",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/SkeletonHorseman",
            "method": "health",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/NbtDungeon",
            "method": "replaceAir",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/NbtDungeon",
            "method": "minAirSpace",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/NbtDungeon",
            "method": "maxAirSpace",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/NbtDungeon",
            "method": "maxNumOfChests",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/NbtDungeon",
            "method": "airRequirementIsNowWater",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/NbtDungeon",
            "method": "structureYOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureChorus",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureGrass",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureGrass",
            "method": "range",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureVineBreakage",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureVineBreakage",
            "method": "length",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/MineshaftSupport",
            "method": "waterBased",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/MineshaftSupport",
            "method": "archOnly",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureVineAndLeaves",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureVineAndLeaves",
            "method": "length",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureVine",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureVine",
            "method": "length",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureVine",
            "method": "xzRange",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureVine",
            "method": "heightRange",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/MineshaftEndStructure",
            "method": "extraSpawningChecks",
            "desc": "(Lnet/minecraft/world/level/levelgen/structure/Structure$GenerationContext;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/BlockPos$MutableBlockPos;)Z",
            "value": "1"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/Skeletons",
            "method": "speedModifier",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/Skeletons",
            "method": "health",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/pieces/MansionPieces$MansionParameters$GridPos",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/structures/pieces/MansionPieces$MansionParameters$GridPos",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureWarpedPlants",
            "method": "attempts",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/StructureWarpedPlants",
            "method": "length",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/NbtFeature",
            "method": "allowInWater",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/telepathicgrunt/repurposedstructures/world/features/NbtFeature",
            "method": "heightOffset",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 72987
      },
      "verdict": "no",
      "summary": "none of its 19 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "resourcify",
      "name": "Resourcify",
      "version": "1.8.7",
      "license": "LGPL 3.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/dediamondpro/resourcify/Resourcify"
        },
        {
          "kind": "modmenu",
          "value": "dev/dediamondpro/resourcify/config/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "mixins.resourcify.json"
      ],
      "depends": [],
      "classes": 1399,
      "methods": 9888,
      "sites": [
        {
          "mixin": "dev/dediamondpro/resourcify/mixins/CreateWorldScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/CreateWorldScreen"
          ],
          "handler": "addTabs",
          "kind": "modify-arg",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/tabs/MenuTabBar$Builder;addTabs([Lnet/minecraft/client/gui/components/tabs/Tab;)Lnet/minecraft/client/gui/components/tabs/MenuTabBar$Builder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/dediamondpro/resourcify/mixins/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "dev/dediamondpro/resourcify/mixins/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;triggerImmediateNarration(Z)V",
          "cancellable": false,
          "hook": "screen_init_post",
          "why": "ScreenEvent.Init.Post: a screen's widgets are built, where a mod adds its own"
        },
        {
          "mixin": "dev/dediamondpro/resourcify/mixins/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "onResize",
          "kind": "inject",
          "method": "resize",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#resize TAIL"
        },
        {
          "mixin": "dev/dediamondpro/resourcify/mixins/TabManagerMixin",
          "targets": [
            "net/minecraft/client/gui/components/tabs/TabManager"
          ],
          "handler": "onResourcifyWorldTab",
          "kind": "inject",
          "method": "setCurrentTab*",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/tabs/TabManager#setCurrentTab* HEAD"
        }
      ],
      "listening": 3,
      "accessors": 2,
      "hooks": {
        "screen_init_post": 1,
        "tick": 1
      },
      "wanted": {
        "net/minecraft/client/gui/components/tabs/TabManager#setCurrentTab* @HEAD": 1,
        "net/minecraft/client/gui/screens/Screen#resize @TAIL": 1
      },
      "wanted_calls": {
        "net/minecraft/client/gui/components/tabs/MenuTabBar$Builder#addTabs @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "IdentifiableResourceReloadListener",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceManagerHelper",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 1399,
        "features": {
          "screen": 12,
          "renderer": 2,
          "mixin": 5
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 1399,
        "methods": 6226,
        "tried": 600,
        "completed": 241,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "[Ldev/dediamondpro/resourcify/libs/commonmark/ext/gfm/tables/TableCell$Alignment;#clone()Ljava/lang/Object;": 1,
          "[Ldev/dediamondpro/resourcify/libs/commonmark/parser/IncludeSourceSpans;#clone()Ljava/lang/Object;": 1,
          "[Ldev/dediamondpro/resourcify/libs/minemark/elements/ChildMovingElement$MarkerType;#clone()Ljava/lang/Object;": 1,
          "[Ldev/dediamondpro/resourcify/libs/universal/UGraphics$DrawMode;#clone()Ljava/lang/Object;": 1,
          "com/google/gson/reflect/TypeToken#<init>()V": 3,
          "com/mojang/blaze3d/Blaze3D#getTime()D": 1,
          "com/mojang/blaze3d/platform/NativeImage#read(Ljava/io/InputStream;)Lcom/mojang/blaze3d/platform/NativeImage;": 1,
          "com/mojang/blaze3d/systems/RenderSystem#getDevice()Lcom/mojang/renderpearl/api/device/GpuDevice;": 2,
          "com/mojang/blaze3d/vertex/BufferBuilder#addVertex(FFF)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 2,
          "com/mojang/blaze3d/vertex/BufferBuilder#build()Lcom/mojang/blaze3d/vertex/MeshData;": 2,
          "com/mojang/blaze3d/vertex/BufferBuilder#setColor(FFFF)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 2,
          "com/mojang/blaze3d/vertex/BufferBuilder#setNormal(FFF)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 2,
          "com/mojang/blaze3d/vertex/BufferBuilder#setUv(FF)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 1,
          "com/mojang/blaze3d/vertex/BufferBuilder#setUv1(II)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 1,
          "com/mojang/blaze3d/vertex/BufferBuilder#setUv2(II)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 1,
          "com/mojang/blaze3d/vertex/VertexConsumer#addVertex(FFF)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 1,
          "com/mojang/blaze3d/vertex/VertexConsumer#setColor(IIII)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 1,
          "com/mojang/blaze3d/vertex/VertexConsumer#setNormal(FFF)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 1,
          "com/mojang/blaze3d/vertex/VertexConsumer#setUv(FF)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 1,
          "com/mojang/blaze3d/vertex/VertexConsumer#setUv1(II)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 1,
          "com/mojang/blaze3d/vertex/VertexConsumer#setUv2(II)Lcom/mojang/blaze3d/vertex/VertexConsumer;": 1,
          "com/mojang/renderpearl/api/buffers/GpuBuffer#close()V": 1,
          "com/mojang/renderpearl/api/buffers/GpuBuffer#isClosed()Z": 1,
          "com/mojang/renderpearl/api/buffers/GpuBuffer#size()J": 1,
          "com/mojang/renderpearl/api/buffers/GpuBuffer#usage()I": 1,
          "com/mojang/renderpearl/api/buffers/GpuBufferSlice$MappedView#close()V": 1,
          "com/mojang/renderpearl/api/pipeline/PrimitiveTopology#ordinal()I": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_activeTexture(I)V": 2,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#_glUseProgram(I)V": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glAttachShader(II)V": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glCompileShader(I)V": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glCreateProgram()I": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glCreateShader(I)I": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glGetProgramInfoLog(II)Ljava/lang/String;": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glGetProgrami(II)I": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glGetShaderInfoLog(II)Ljava/lang/String;": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glGetShaderi(II)I": 1,
          "com/mojang/renderpearl/backend/opengl/GlStateManager#glLinkProgram(I)V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/UIConstraints#setChanged()V": 17,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/ConstraintType#ordinal()I": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#animationFrame()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#getHeight(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)F": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#getRadius(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)F": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#getTextScale(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)F": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#getWidth(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)F": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#getXPosition(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)F": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#getYPosition(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)F": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#pauseIfSupported()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#resumeIfSupported()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#stopIfSupported()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#to(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/SuperConstraint;": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/GeneralConstraint#visit(Ldev/dediamondpro/resourcify/libs/elementa/constraints/resolution/ConstraintVisitor;Ldev/dediamondpro/resourcify/libs/elementa/constraints/ConstraintType;Z)V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/HeightConstraint#animationFrame()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/HeightConstraint#pauseIfSupported()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/HeightConstraint#resumeIfSupported()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/HeightConstraint#stopIfSupported()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/HeightConstraint#to(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/SuperConstraint;": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/HeightConstraint#visit(Ldev/dediamondpro/resourcify/libs/elementa/constraints/resolution/ConstraintVisitor;Ldev/dediamondpro/resourcify/libs/elementa/constraints/ConstraintType;Z)V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/MasterConstraint#animationFrame()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/XConstraint#animationFrame()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/XConstraint#pauseIfSupported()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/XConstraint#resumeIfSupported()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/XConstraint#stopIfSupported()V": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/XConstraint#to(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/SuperConstraint;": 1,
          "dev/dediamondpro/resourcify/libs/elementa/constraints/XConstraint#visit(Ldev/dediamondpro/resourcify/libs/elementa/constraints/resolution/ConstraintVisitor;Ldev/dediamondpro/resourcify/libs/elementa/constraints/ConstraintType;Z)V": 1,
          "dev/dediamondpro/resourcify/libs/universal/render/UGpuSampler$AddressMode#ordinal()I": 1,
          "dev/dediamondpro/resourcify/libs/universal/render/UGpuSampler$FilterMode#ordinal()I": 1,
          "dev/dediamondpro/resourcify/libs/universal/render/UGpuTextureView#close()V": 1,
          "dev/dediamondpro/resourcify/libs/universal/wrappers/message/UTextComponent#Companion": 1,
          "java/awt/Color#WHITE": 3,
          "java/awt/Color#getAlpha()I": 1,
          "java/awt/Color#getBlue()I": 1,
          "java/awt/Color#getGreen()I": 1,
          "java/awt/Color#getRed()I": 3,
          "java/io/File#mkdirs()Z": 1,
          "java/lang/Character#isWhitespace(C)Z": 2,
          "java/lang/Integer#hashCode(I)I": 1,
          "java/lang/Number#floatValue()F": 19,
          "java/lang/Object#clone()Ljava/lang/Object;": 4,
          "java/lang/Runnable#run()V": 2,
          "java/lang/StackTraceElement#getClassName()Ljava/lang/String;": 1,
          "java/lang/String#intern()Ljava/lang/String;": 5,
          "java/lang/System#getProperty(Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/net/URL#openConnection()Ljava/net/URLConnection;": 2,
          "java/net/URLConnection#getInputStream()Ljava/io/InputStream;": 1,
          "java/nio/file/WatchService#close()V": 1,
          "java/nio/file/WatchService#poll()Ljava/nio/file/WatchKey;": 1,
          "java/util/Collections#emptyMap()Ljava/util/Map;": 1,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "java/util/regex/Pattern#matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;": 1,
          "javax/imageio/ImageIO#write(Ljava/awt/image/RenderedImage;Ljava/lang/String;Ljava/io/OutputStream;)Z": 1,
          "kotlin/Lazy#getValue()Ljava/lang/Object;": 1,
          "kotlin/Unit#INSTANCE": 3,
          "kotlin/collections/CollectionsKt#binarySearch$default(Ljava/util/List;IILkotlin/jvm/functions/Function1;ILjava/lang/Object;)I": 1,
          "kotlin/collections/CollectionsKt#createListBuilder()Ljava/util/List;": 2,
          "kotlin/collections/CollectionsKt#first(Ljava/util/List;)Ljava/lang/Object;": 1,
          "kotlin/collections/CollectionsKt#firstOrNull(Ljava/lang/Iterable;)Ljava/lang/Object;": 1,
          "kotlin/collections/CollectionsKt#lastOrNull(Ljava/util/List;)Ljava/lang/Object;": 2,
          "kotlin/collections/CollectionsKt#minOrNull(Ljava/lang/Iterable;)Ljava/lang/Float;": 1,
          "kotlin/collections/CollectionsKt#toList(Ljava/lang/Iterable;)Ljava/util/List;": 1,
          "kotlin/collections/MapsKt#emptyMap()Ljava/util/Map;": 2,
          "kotlin/io/FilesKt#readText$default(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String;": 1,
          "kotlin/jvm/functions/Function1#invoke(Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "kotlin/jvm/functions/Function3#invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "kotlin/ranges/RangesKt#coerceIn(FFF)F": 1,
          "kotlin/ranges/RangesKt#coerceIn(III)I": 5,
          "kotlin/sequences/Sequence#iterator()Ljava/util/Iterator;": 1,
          "kotlin/text/Charsets#UTF_8": 1,
          "kotlin/text/StringsKt#substringBefore(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 24,
          "net/minecraft/client/gui/screens/Screen#getTitle()Lnet/minecraft/network/chat/Component;": 1,
          "net/minecraft/client/renderer/texture/AbstractTexture#<init>()V": 1,
          "new com/mojang/blaze3d/vertex/BufferBuilder": 3,
          "new org/xml/sax/InputSource": 1,
          "new org/xml/sax/SAXNotRecognizedException": 4,
          "org/apache/commons/compress/archivers/zip/ZipArchiveEntry#getName()Ljava/lang/String;": 1,
          "org/lwjgl/opengl/GL11#glClear(I)V": 1,
          "org/lwjgl/opengl/GL11#glClearColor(FFFF)V": 1,
          "org/lwjgl/opengl/GL11#glClearDepth(D)V": 1,
          "org/lwjgl/opengl/GL11#glClearStencil(I)V": 1,
          "org/lwjgl/opengl/GL11#glDeleteTextures(I)V": 1,
          "org/lwjgl/opengl/GL11#glGetInteger(I)I": 4,
          "org/xml/sax/InputSource#getCharacterStream()Ljava/io/Reader;": 1,
          "org/xml/sax/ext/LexicalHandler#comment([CII)V": 1,
          "org/xml/sax/ext/LexicalHandler#startCDATA()V": 1
        },
        "runs": [
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeSearchData$Pagination",
            "method": "getTotalCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeSearchData$Pagination",
            "method": "component1",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeSearchData$Pagination",
            "method": "copy",
            "desc": "(I)Ldev/dediamondpro/resourcify/services/curseforge/CurseForgeSearchData$Pagination;",
            "value": "obj#3"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeSearchData$Pagination",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/minemark/elements/impl/table/TableRowElement",
            "method": "shouldDraw",
            "desc": "(Ldev/dediamondpro/resourcify/libs/minemark/data/ViewPort;FF)Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/ext/gfm/tables/TablesExtension",
            "method": "create",
            "desc": "()Ldev/dediamondpro/resourcify/libs/commonmark/Extension;",
            "value": "obj#93"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/node/Nodes$NodeIterable",
            "method": "iterator",
            "desc": "()Ljava/util/Iterator;",
            "value": "obj#106"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/constraints/animation/Animations$IN_OUT_EXP",
            "method": "getValue",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/renderer/impl/Rect$Companion",
            "method": "ltrb",
            "desc": "(IIII)Ldev/dediamondpro/resourcify/libs/elementa/renderer/impl/Rect;",
            "value": "obj#151"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/renderer/impl/Rect$Companion",
            "method": "ltrbChecked",
            "desc": "(IIII)Ldev/dediamondpro/resourcify/libs/elementa/renderer/impl/Rect;",
            "value": "obj#153"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/renderer/impl/Rect$Companion",
            "method": "xywh",
            "desc": "(IIII)Ldev/dediamondpro/resourcify/libs/elementa/renderer/impl/Rect;",
            "value": "obj#155"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/renderer/impl/Rect$Companion",
            "method": "xywhChecked",
            "desc": "(IIII)Ldev/dediamondpro/resourcify/libs/elementa/renderer/impl/Rect;",
            "value": "obj#157"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/constraints/SubtractiveConstraint",
            "method": "getCachedValue",
            "desc": "()Ljava/lang/Float;",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/constraints/SubtractiveConstraint",
            "method": "getRecalculate",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/constraints/SubtractiveConstraint",
            "method": "getCachedValue",
            "desc": "()Ljava/lang/Object;",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/tagsoup/Parser",
            "method": "truthValue",
            "desc": "(Z)Ljava/lang/Boolean;",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/tagsoup/Parser",
            "method": "expandEntities",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "obj#665"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/tagsoup/Parser",
            "method": "lookupEntity",
            "desc": "([CII)I",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/tagsoup/Parser",
            "method": "prefixOf",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/tagsoup/Parser",
            "method": "getEntity",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuDeviceImpl$info$1",
            "method": "getLimits",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuDevice$Limits;",
            "value": "obj#712"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/IProject",
            "method": "canBeInstalled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/components/plot/PlotStyle",
            "method": "copy",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/components/plot/PointStyle;Ldev/dediamondpro/resourcify/libs/elementa/components/plot/LineStyle;Ldev/dediamondpro/resourcify/libs/elementa/components/plot/GridStyle;Ldev/dediamondpro/resourcify/libs/elementa/components/plot/Padding;)Ldev/dediamondpro/resourcify/libs/elementa/components/plot/PlotStyle;",
            "value": "obj#746"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/components/plot/PlotStyle",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"PlotStyle(pointStyle=null, lineStyle=null, gridStyle=null, padding=null)\""
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/components/plot/PlotStyle",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/util/NetworkUtilKt",
            "method": "toURI",
            "desc": "(Ljava/lang/String;)Ljava/net/URI;",
            "value": "obj#758"
          },
          {
            "class": "dev/dediamondpro/resourcify/util/NetworkUtilKt",
            "method": "toURIOrNull",
            "desc": "(Ljava/lang/String;)Ljava/net/URI;",
            "value": "obj#759"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/ext/gfm/strikethrough/StrikethroughExtension$Builder",
            "method": "requireTwoTildes",
            "desc": "(Z)Ldev/dediamondpro/resourcify/libs/commonmark/ext/gfm/strikethrough/StrikethroughExtension$Builder;",
            "value": "obj#760"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/ext/gfm/strikethrough/StrikethroughExtension$Builder",
            "method": "build",
            "desc": "()Ldev/dediamondpro/resourcify/libs/commonmark/Extension;",
            "value": "obj#762"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeProject$Author",
            "method": "getRole",
            "desc": "()Ljava/lang/String;",
            "value": "\"Author\""
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeProject$Author",
            "method": "copy",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Ldev/dediamondpro/resourcify/services/curseforge/CurseForgeProject$Author;",
            "value": "obj#770"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeProject$Author",
            "method": "hashCode",
            "desc": "()I",
            "value": "108572896"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeProject$Author",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UGraphics",
            "method": "asUVertexConsumer",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/vertex/UVertexConsumer;",
            "value": "obj#780"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UGraphics",
            "method": "getFromTessellator",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/UGraphics;",
            "value": "obj#781"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UGraphics",
            "method": "getPlatformAdapter",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuPlatformAdapter;",
            "value": "obj#782"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UGraphics",
            "method": "getDevice",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuDevice;",
            "value": "obj#783"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UGraphics",
            "method": "isCoreProfile",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UGraphics",
            "method": "isOpenGl21Supported",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UGraphics",
            "method": "areShadersSupported",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UGraphics",
            "method": "endVertex",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/UGraphics;",
            "value": "obj#816"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/components/plot/Padding",
            "method": "getLeft",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/components/plot/Padding",
            "method": "getTop",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/components/plot/Padding",
            "method": "getRight",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/components/plot/Padding",
            "method": "getBottom",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/dsl/UtilitiesKt",
            "method": "floor",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/constraints/SuperConstraint;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/RoundingConstraint;",
            "value": "obj#832"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/dsl/UtilitiesKt",
            "method": "ceil",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/constraints/SuperConstraint;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/RoundingConstraint;",
            "value": "obj#837"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/dsl/UtilitiesKt",
            "method": "round",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/constraints/SuperConstraint;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/RoundingConstraint;",
            "value": "obj#838"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/dsl/ComponentConstraintsKt",
            "method": "componentXConstraint",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/XConstraint;",
            "value": "obj#858"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/dsl/ComponentConstraintsKt",
            "method": "componentYConstraint",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/YConstraint;",
            "value": "obj#859"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/dsl/ComponentConstraintsKt",
            "method": "componentWidthConstraint",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/WidthConstraint;",
            "value": "obj#860"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/dsl/ComponentConstraintsKt",
            "method": "componentHeightConstraint",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/HeightConstraint;",
            "value": "obj#861"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/dsl/ComponentConstraintsKt",
            "method": "componentRadiusConstraint",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/RadiusConstraint;",
            "value": "obj#862"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/dsl/ComponentConstraintsKt",
            "method": "componentTextScaleConstraint",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/UIComponent;)Ldev/dediamondpro/resourcify/libs/elementa/constraints/HeightConstraint;",
            "value": "obj#863"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UMath",
            "method": "sqrtDouble",
            "desc": "(D)F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/UMath",
            "method": "wrapAngleTo180",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getMAP_READ",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#959"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getMAP_WRITE",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#960"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getHINT_CLIENT_STORAGE",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#961"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getCOPY_DST",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#962"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getCOPY_SRC",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#963"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getVERTEX",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#964"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getINDEX",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#965"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getUNIFORM",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#966"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getUNIFORM_TEXEL_BUFFER",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#967"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage$Companion",
            "method": "getINDIRECT_PARAMETERS",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/render/UGpuBuffer$Usage;",
            "value": "obj#968"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/universal/vertex/VanillaVertexConsumer",
            "method": "endVertex",
            "desc": "()Ldev/dediamondpro/resourcify/libs/universal/vertex/UVertexConsumer;",
            "value": "obj#993"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/tagsoup/Parser$1",
            "method": "autoDetectingReader",
            "desc": "(Ljava/io/InputStream;)Ljava/io/Reader;",
            "value": "obj#998"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/minemark/elements/ChildMovingElement",
            "method": "getMarkerType",
            "desc": "()Ldev/dediamondpro/resourcify/libs/minemark/elements/ChildMovingElement$MarkerType;",
            "value": "obj#920"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/minemark/elements/ChildMovingElement",
            "method": "getOutsidePadding",
            "desc": "(Ldev/dediamondpro/resourcify/libs/minemark/LayoutData;Ljava/lang/Object;)F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/minemark/elements/ChildMovingElement",
            "method": "getInsidePadding",
            "desc": "(Ldev/dediamondpro/resourcify/libs/minemark/LayoutData;Ljava/lang/Object;)F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/minemark/elements/ChildMovingElement",
            "method": "getDrawnMarkerHeight",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/constraints/animation/Animations$IN_OUT_ELASTIC",
            "method": "getValue",
            "desc": "(F)F",
            "value": "0.00008478881f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/constraints/animation/Animations$OUT_ELASTIC",
            "method": "getValue",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/renderer/impl/ColoredBatchBuilder",
            "method": "getQuads",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/renderer/impl/ColoredBatchBuilder",
            "method": "accept",
            "desc": "(Ldev/dediamondpro/resourcify/libs/elementa/renderer/impl/Element;)Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "peek",
            "desc": "()C",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "peekCodePoint",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "peekPreviousCodePoint",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "next",
            "desc": "(C)Z",
            "value": "1"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "next",
            "desc": "(Ljava/lang/String;)Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "whitespace",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "find",
            "desc": "(C)I",
            "value": "-1"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "find",
            "desc": "(Ldev/dediamondpro/resourcify/libs/commonmark/internal/util/CharMatcher;)I",
            "value": "-1"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/internal/inline/Scanner",
            "method": "position",
            "desc": "()Ldev/dediamondpro/resourcify/libs/commonmark/internal/inline/Position;",
            "value": "obj#3580"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/components/UpdateFuncKt",
            "method": "getNOP_UPDATE_FUNC",
            "desc": "()Lkotlin/jvm/functions/Function2;",
            "value": "obj#3599"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/events/UIEvent",
            "method": "getPropagationStopped",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/events/UIEvent",
            "method": "getPropagationStoppedImmediately",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/renderer/impl/PostProcessingRendererCache$Entry",
            "method": "getAvailable",
            "desc": "()Ljava/util/List;",
            "value": "obj#3612"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/elementa/renderer/impl/PostProcessingRendererCache$Entry",
            "method": "getUsed",
            "desc": "()Ljava/util/List;",
            "value": "obj#3619"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeProject$Description",
            "method": "copy",
            "desc": "(Ljava/lang/String;)Ldev/dediamondpro/resourcify/services/curseforge/CurseForgeProject$Description;",
            "value": "obj#3637"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeProject$Description",
            "method": "hashCode",
            "desc": "()I",
            "value": "3392903"
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeProject$Description",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/dediamondpro/resourcify/libs/commonmark/node/Text",
            "method": "toStringAttributes",
            "desc": "()Ljava/lang/String;",
            "value": "\"literal=null\""
          },
          {
            "class": "dev/dediamondpro/resourcify/services/curseforge/CurseForgeVersion$Hash",
            "method": "getAlgo",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 248527
      },
      "verdict": "partly",
      "summary": "2 of 3 listening patch sites land on a Horizon hook (66%); of 5 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "rightclickharvest",
      "name": "Right Click Harvest",
      "version": "4.6.2+26.3.x",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "io/github/jamalam360/rightclickharvest/fabric/RightClickHarvestFabric"
        }
      ],
      "mixin_configs": [
        "rightclickharvest.mixins.json"
      ],
      "depends": [
        "jamlib"
      ],
      "classes": 13,
      "methods": 46,
      "sites": [],
      "listening": 0,
      "accessors": 1,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EventFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents$Before",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 13,
        "features": {
          "events": 3,
          "mixin": 1
        },
        "events": [
          "Event",
          "EventFactory",
          "PlayerBlockBreakEvents"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 13,
        "methods": 22,
        "tried": 22,
        "completed": 5,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lio/github/jamalam360/rightclickharvest/Config$ExperienceType;#clone()Ljava/lang/Object;": 1,
          "[Lio/github/jamalam360/rightclickharvest/Config$HungerLevel;#clone()Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/event/Event#invoker()Ljava/lang/Object;": 2,
          "net/fabricmc/fabric/api/event/player/PlayerBlockBreakEvents#BEFORE": 2,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/tags/ItemTags#HOES": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 4,
          "new io/github/jamalam360/jamlib/api/config/ConfigExtensions$Link": 1
        },
        "runs": [
          {
            "class": "io/github/jamalam360/rightclickharvest/RightClickHarvestPlatform",
            "method": "postPlaceEvent",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "architectury_inject_rightclickharvest_common_46a15e9a27cc47b984f638ffd3c49655_8e24a7d01ea875134c7ff622d7757213e736d06e728dd4f80c635bc2fb441198rightclickharvest462263xdevjar/PlatformMethods",
            "method": "getCurrentTarget",
            "desc": "()Ljava/lang/String;",
            "value": "\"fabric\""
          },
          {
            "class": "io/github/jamalam360/rightclickharvest/fabric/RightClickHarvestPlatformImpl",
            "method": "postPlaceEvent",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          }
        ],
        "insns": 215
      },
      "verdict": "works",
      "summary": "no patch sites: its content is carried over as a content mod"
    },
    {
      "mod_id": "rrls",
      "name": "Remove Reloading Screen",
      "version": "5.2.8+mc.26.3",
      "license": "OSL-3.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "org/redlance/dima_dencep/mods/rrls/fabric/RrlsFabric"
        }
      ],
      "mixin_configs": [
        "rrls.mixins.json"
      ],
      "depends": [],
      "classes": 55,
      "methods": 371,
      "sites": [
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "rrls$miniRender",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;extractDeferredSubtitles()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#extractRenderState INVOKE"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "rrls$miniRender",
          "kind": "wrap-operation",
          "method": "handleKeybinds",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/gui/Gui;overlay:Lnet/minecraft/client/gui/screens/Overlay;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "rrls$miniRender",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/gui/Gui;overlay:Lnet/minecraft/client/gui/screens/Overlay;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "rrls$init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/LoadingOverlay#<init> TAIL"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "rrls$screenrender",
          "kind": "wrap-with-condition",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;extractRenderStateWithTooltipAndSubtitles(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "rrls$reinitScreen",
          "kind": "wrap-with-condition",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Gui;setOverlay(Lnet/minecraft/client/gui/screens/Overlay;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "rrls$reinitScreen",
          "kind": "wrap-with-condition",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;init(II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "rrls$_clearColor",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/ARGB;setVector4fFromARGB32(Lorg/joml/Vector4f;I)Lorg/joml/Vector4f;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "rrls$lerp",
          "kind": "wrap-operation",
          "method": "extractProgressBar",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Math;round(F)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "rrls$rainbowProgress",
          "kind": "wrap-operation",
          "method": "extractProgressBar",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/ARGB;color(IIII)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "rrls$interpolateAtEnd",
          "kind": "inject",
          "method": "tick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/gui/screens/LoadingOverlay;fadeOutStart:J",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/LoadingOverlay#tick FIELD"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$screen",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "NEW",
          "at_target": "(Lnet/minecraft/network/chat/Component;)Lnet/minecraft/client/gui/screens/GenericMessageScreen;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$init",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/jtracy/TracyClient;isAvailable()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init> INVOKE"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$fixDH",
          "kind": "wrap-with-condition",
          "method": "onGameLoadFinished",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Runnable;run()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$onResourceReloadFailure",
          "kind": "inject",
          "method": "clearResourcePacksOnError",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#clearResourcePacksOnError HEAD"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$doubleLoad",
          "kind": "inject",
          "method": "clearResourcePacksOnError",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;reloadResourcePacks(ZLnet/minecraft/client/GameLoadCookie;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#clearResourcePacksOnError INVOKE"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$doubleLoad",
          "kind": "modify-arg",
          "method": "clearResourcePacksOnError",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;reloadResourcePacks(ZLnet/minecraft/client/GameLoadCookie;)Ljava/util/concurrent/CompletableFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$miniRenderTick",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Gui;overlay()Lnet/minecraft/client/gui/screens/Overlay;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$miniRenderWorldLoad",
          "kind": "wrap-operation",
          "method": "doWorldLoad",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Gui;overlay()Lnet/minecraft/client/gui/screens/Overlay;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$removeTick",
          "kind": "wrap-operation",
          "method": "setScreenAndShow",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;renderFrame(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$fixPanorama",
          "kind": "wrap-with-condition",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/GameRenderer;registerPanoramaTextures(Lnet/minecraft/client/renderer/texture/TextureManager;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "rrls$fixPanorama",
          "kind": "inject",
          "method": "<init>",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/Minecraft;gameRenderer:Lnet/minecraft/client/renderer/GameRenderer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init> FIELD"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/animation/LoadingOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/screens/LoadingOverlay"
          ],
          "handler": "rrls$changeAnimationSpeed",
          "kind": "modify-constant",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/animation/TitleScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "rrls$removeFade",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/TitleScreen#<init> RETURN"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/animation/TitleScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "rrls$changeAnimationSpeed",
          "kind": "modify-constant",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/compat/CubeMapMixin",
          "targets": [
            "net/minecraft/client/renderer/CubeMap"
          ],
          "handler": "rrls$earlyRegister",
          "kind": "wrap-operation",
          "method": "registerTextures",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/TextureManager;register(Lnet/minecraft/resources/Identifier;Lnet/minecraft/client/renderer/texture/AbstractTexture;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/compat/ItemModelResolverMixin",
          "targets": [
            "net/minecraft/client/renderer/item/ItemModelResolver"
          ],
          "handler": "rrls$fixItemsInMenu",
          "kind": "wrap-operation",
          "method": "appendItemLayers",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/item/ItemModelResolver;getItemModel(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/item/ItemModel;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/compat/RendererKeyboardMouseMixin",
          "targets": [
            "net/minecraft/client/KeyboardHandler",
            "net/minecraft/client/MouseHandler",
            "com/mojang/blaze3d/platform/FramerateLimitTracker"
          ],
          "handler": "rrls$checkRenderingState",
          "kind": "wrap-operation",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Gui;overlay()Lnet/minecraft/client/gui/screens/Overlay;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/compat/ServerPackManagerMixin",
          "targets": [
            "net/minecraft/client/resources/server/ServerPackManager"
          ],
          "handler": "earlyResourcePackStatusSend",
          "kind": "inject",
          "method": "pushNewPack",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/resources/server/ServerPackManager;registerForUpdate()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/server/ServerPackManager#pushNewPack INVOKE"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/CommandEncoderMixin",
          "targets": [
            "com/mojang/renderpearl/frontend/FrontendCommandEncoder"
          ],
          "handler": "rrls$exitRenderPass",
          "kind": "wrap-operation",
          "method": "writeToTexture",
          "at": "FIELD",
          "at_target": "Lcom/mojang/renderpearl/frontend/FrontendCommandEncoder;isInRenderPass:Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/CommandEncoderMixin",
          "targets": [
            "com/mojang/renderpearl/frontend/FrontendCommandEncoder"
          ],
          "handler": "rrls$exitRenderPass",
          "kind": "wrap-operation",
          "method": "writeToTexture",
          "at": "FIELD",
          "at_target": "Lcom/mojang/renderpearl/frontend/FrontendCommandEncoder;isInRenderPass:Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/CommandEncoderMixin",
          "targets": [
            "com/mojang/renderpearl/frontend/FrontendCommandEncoder"
          ],
          "handler": "rrls$exitRenderPass",
          "kind": "wrap-operation",
          "method": "createRenderPass",
          "at": "FIELD",
          "at_target": "Lcom/mojang/renderpearl/frontend/FrontendCommandEncoder;isInRenderPass:Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/CompilationCacheMixin",
          "targets": [
            "net/minecraft/client/renderer/ShaderManager$PostChainCache"
          ],
          "handler": "rrls$suppressMissingCache",
          "kind": "wrap-operation",
          "method": "getOrLoadPostChain",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/ShaderManager$PostChainCache;loadPostChain(Lnet/minecraft/resources/Identifier;Ljava/util/Set;)Lnet/minecraft/client/renderer/PostChain;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/EntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "rrls$workaroundEntityCrash",
          "kind": "wrap-operation",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/entity/EntityRenderDispatcher;getRenderer(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;)Lnet/minecraft/client/renderer/entity/EntityRenderer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/EntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "rrls$workaroundEntityCrash",
          "kind": "wrap-operation",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/CrashReport;forThrowable(Ljava/lang/Throwable;Ljava/lang/String;)Lnet/minecraft/CrashReport;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/GuiGraphicsExtractorMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "rrls$fixSpriteCrash",
          "kind": "wrap-operation",
          "method": "blitSprite",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/TextureAtlas;getSprite(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/GuiGraphicsExtractorMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "rrls$fixSpriteCrash",
          "kind": "wrap-operation",
          "method": "blitSprite",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/TextureAtlas;getSprite(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/ReloadableResourceManagerMixin",
          "targets": [
            "net/minecraft/server/packs/resources/ReloadableResourceManager"
          ],
          "handler": "rrls$initReloader",
          "kind": "inject",
          "method": "registerReloadListener",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/resources/ReloadableResourceManager#registerReloadListener TAIL"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/ReloadableResourceManagerMixin",
          "targets": [
            "net/minecraft/server/packs/resources/ReloadableResourceManager"
          ],
          "handler": "rrls$initReloaders",
          "kind": "inject",
          "method": "createReload",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/packs/resources/SimpleReloadInstance;create(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/List;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Z)Lnet/minecraft/server/packs/resources/ReloadInstance;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/resources/ReloadableResourceManager#createReload INVOKE"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/TextureManagerMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureManager"
          ],
          "handler": "rrls$earlyRegister",
          "kind": "wrap-operation",
          "method": "registerForNextReload",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/TextureManager;register(Lnet/minecraft/resources/Identifier;Lnet/minecraft/client/renderer/texture/AbstractTexture;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/textures/AbstractTextureMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/AbstractTexture"
          ],
          "handler": "rrls$useMissingTexture",
          "kind": "inject",
          "method": "getTexture",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/AbstractTexture#getTexture HEAD"
        },
        {
          "mixin": "org/redlance/dima_dencep/mods/rrls/mixins/workaround/textures/AbstractTextureMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/AbstractTexture"
          ],
          "handler": "rrls$useMissingTextureView",
          "kind": "inject",
          "method": "getTextureView",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/AbstractTexture#getTextureView HEAD"
        }
      ],
      "listening": 6,
      "accessors": 1,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/Minecraft#clearResourcePacksOnError @HEAD": 1,
        "net/minecraft/client/gui/screens/LoadingOverlay#<init> @TAIL": 1,
        "net/minecraft/client/gui/screens/TitleScreen#<init> @RETURN": 1,
        "net/minecraft/client/renderer/texture/AbstractTexture#getTexture @HEAD": 1,
        "net/minecraft/client/renderer/texture/AbstractTexture#getTextureView @HEAD": 1,
        "net/minecraft/server/packs/resources/ReloadableResourceManager#registerReloadListener @TAIL": 1
      },
      "wanted_calls": {
        "com/mojang/renderpearl/frontend/FrontendCommandEncoder#isInRenderPass:Z @FIELD (wrap-operation)": 3,
        "java/lang/Math#round @INVOKE (wrap-operation)": 1,
        "java/lang/Runnable#run @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/CrashReport#forThrowable @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/Minecraft#<init> @FIELD": 1,
        "net/minecraft/client/Minecraft#<init> @INVOKE": 1,
        "net/minecraft/client/Minecraft#<init> @NEW (wrap-operation)": 1,
        "net/minecraft/client/Minecraft#clearResourcePacksOnError @INVOKE": 1,
        "net/minecraft/client/Minecraft#reloadResourcePacks @INVOKE (modify-arg)": 1,
        "net/minecraft/client/Minecraft#renderFrame @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/Gui#extractRenderState @INVOKE": 1,
        "net/minecraft/client/gui/Gui#overlay @INVOKE (wrap-operation)": 3,
        "net/minecraft/client/gui/Gui#overlay:Lnet/minecraft/client/gui/screens/Overlay; @FIELD (wrap-operation)": 2,
        "net/minecraft/client/gui/Gui#setOverlay @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/gui/screens/LoadingOverlay#extractRenderState @HEAD (modify-constant)": 1,
        "net/minecraft/client/gui/screens/LoadingOverlay#tick @FIELD": 1,
        "net/minecraft/client/gui/screens/Screen#extractRenderStateWithTooltipAndSubtitles @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/gui/screens/Screen#init @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/gui/screens/TitleScreen#extractRenderState @HEAD (modify-constant)": 1,
        "net/minecraft/client/renderer/GameRenderer#registerPanoramaTextures @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/ShaderManager$PostChainCache#loadPostChain @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#getRenderer @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/item/ItemModelResolver#getItemModel @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/texture/TextureAtlas#getSprite @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/renderer/texture/TextureManager#register @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/resources/server/ServerPackManager#pushNewPack @INVOKE": 1,
        "net/minecraft/server/packs/resources/ReloadableResourceManager#createReload @INVOKE": 1,
        "net/minecraft/util/ARGB#color @INVOKE (wrap-operation)": 1,
        "net/minecraft/util/ARGB#setVector4fFromARGB32 @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvArray",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 55,
        "features": {
          "mixin": 22
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 55,
        "methods": 153,
        "tried": 153,
        "completed": 82,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lorg/redlance/dima_dencep/mods/rrls/config/AprilFool;#clone()Ljava/lang/Object;": 1,
          "[Lorg/redlance/dima_dencep/mods/rrls/config/DoubleLoad;#clone()Ljava/lang/Object;": 1,
          "[Lorg/redlance/dima_dencep/mods/rrls/config/HideType;#clone()Ljava/lang/Object;": 1,
          "[Lorg/redlance/dima_dencep/mods/rrls/config/Type;#clone()Ljava/lang/Object;": 1,
          "[Lorg/redlance/dima_dencep/mods/rrls/utils/Ease;#clone()Ljava/lang/Object;": 1,
          "[Lorg/redlance/dima_dencep/mods/rrls/utils/OverlayHelper$State;#clone()Ljava/lang/Object;": 1,
          "fuzs/forgeconfigapiport/fabric/api/v5/client/ConfigScreenFactoryRegistry#INSTANCE": 1,
          "java/lang/Class#forName(Ljava/lang/String;)Ljava/lang/Class;": 2,
          "java/lang/Class#getModule()Ljava/lang/Module;": 5,
          "java/util/concurrent/CompletableFuture#completedFuture(Ljava/lang/Object;)Ljava/util/concurrent/CompletableFuture;": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/fabricmc/loader/api/ModContainer#getMetadata()Lnet/fabricmc/loader/api/metadata/ModMetadata;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/screens/LoadingOverlay#rrls$resetProgress()V": 1,
          "net/minecraft/client/gui/screens/Overlay#isPausing()Z": 1,
          "net/minecraft/client/renderer/texture/ReloadableTexture#resourceId()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/client/resources/model/sprite/AtlasManager$AtlasEntry#config()Lnet/minecraft/client/resources/model/sprite/AtlasManager$AtlasConfig;": 2,
          "net/minecraft/server/packs/resources/PreparableReloadListener$SharedState#get(Lnet/minecraft/server/packs/resources/PreparableReloadListener$StateKey;)Ljava/lang/Object;": 1,
          "net/minecraft/util/ARGB#from8BitChannel(I)F": 1,
          "net/minecraft/util/Mth#clamp(FFF)F": 1,
          "net/minecraft/util/Mth#sin(D)F": 1,
          "net/minecraft/util/Util#backgroundExecutor()Lnet/minecraft/TracingExecutor;": 1,
          "net/minecraft/util/Util#getNanos()J": 1,
          "net/neoforged/fml/loading/moddiscovery/ModInfo#getModProperties()Ljava/util/Map;": 1,
          "net/neoforged/neoforge/client/gui/ConfigurationScreen$ConfigurationSectionScreen#added()V": 1,
          "net/neoforged/neoforge/client/gui/ConfigurationScreen$ConfigurationSectionScreen#onChanged(Ljava/lang/String;)V": 1,
          "net/neoforged/neoforge/client/gui/ConfigurationScreen$ConfigurationSectionScreen#rebuild()Lnet/neoforged/neoforge/client/gui/ConfigurationScreen$ConfigurationSectionScreen;": 2,
          "net/neoforged/neoforge/client/gui/ConfigurationScreen$ConfigurationSectionScreen#removed()V": 1,
          "net/neoforged/neoforge/client/gui/ConfigurationScreen$ConfigurationSectionScreen#tick()V": 1,
          "net/neoforged/neoforge/common/ModConfigSpec$BooleanValue#get()Ljava/lang/Object;": 10,
          "net/neoforged/neoforge/common/ModConfigSpec$ConfigValue#get()Ljava/lang/Object;": 3,
          "net/neoforged/neoforge/common/ModConfigSpec$EnumValue#get()Ljava/lang/Object;": 4,
          "org/redlance/dima_dencep/mods/rrls/RrlsConfig#getClass()Ljava/lang/Class;": 2,
          "org/redlance/dima_dencep/mods/rrls/config/AprilFool#ordinal()I": 1,
          "org/redlance/dima_dencep/mods/rrls/config/DoubleLoad#ordinal()I": 1,
          "org/redlance/dima_dencep/mods/rrls/config/HideType#ordinal()I": 1
        },
        "runs": [
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/OverlayHelper$State",
            "method": "isRendering",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "blockOverlay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "miniRender",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "enableScissor",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "rgbProgress",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "reloadText",
            "desc": "()Ljava/lang/String;",
            "value": "\"Edit in config!\""
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "interpolateProgress",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "interpolateAtEnd",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "easingArg",
            "desc": "()Ljava/lang/Float;",
            "value": "0f"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "animationSpeed",
            "desc": "()F",
            "value": "1000f"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "resetResources",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "reInitScreen",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "earlyPackStatusSend",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "skipForgeOverlay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "isServiceActive",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/FallbackConfigImpl",
            "method": "getPriority",
            "desc": "()I",
            "value": "-1000"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/OverlayHelper",
            "method": "isRenderingState",
            "desc": "(Lnet/minecraft/client/gui/screens/Overlay;)Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/RrlsMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/services/RrlsReloaderService$1",
            "method": "isServiceActive",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/Easing",
            "method": "sine",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/Easing",
            "method": "cubic",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/Easing",
            "method": "quadratic",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/Easing",
            "method": "exp",
            "desc": "(F)F",
            "value": "0.0009765625f"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/Easing",
            "method": "circle",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/Easing",
            "method": "catmullRom",
            "desc": "(F)F",
            "value": "2f"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/neoforge/config/NeoForgeConfigImpl",
            "method": "isServiceActive",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/services/ServiceUtils$1",
            "method": "tryAdvance",
            "desc": "(Ljava/util/function/Consumer;)Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/services/AdvancedService",
            "method": "getPriority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/ForgeLikeConfigImpl",
            "method": "isFloatLike",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/config/impl/ForgeLikeConfigImpl",
            "method": "getPriority",
            "desc": "()I",
            "value": "1000"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/DummyGuiGraphics",
            "method": "guiWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/DummyGuiGraphics",
            "method": "guiHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "org/redlance/dima_dencep/mods/rrls/utils/DummyGuiGraphics",
            "method": "containsPointInScissor",
            "desc": "(II)Z",
            "value": "0"
          }
        ],
        "insns": 875
      },
      "verdict": "no",
      "summary": "none of its 42 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "scalablelux",
      "name": "ScalableLux",
      "version": "0.3.0-alpha.0.6+26.3",
      "license": "LGPL-3.0-only",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "ca/spottedleaf/starlight/common/ScalableLuxEntrypoint"
        }
      ],
      "mixin_configs": [
        "scalablelux.mixins.json"
      ],
      "depends": [],
      "classes": 79,
      "methods": 710,
      "sites": [
        {
          "mixin": "ca/spottedleaf/starlight/mixin/client/multiplayer/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "starlightCallUpdateImmediately",
          "kind": "wrap-operation",
          "method": "handleLightUpdatePacket",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;queueLightUpdate(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/client/multiplayer/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "loadLightDataHook",
          "kind": "wrap-operation",
          "method": "readSectionList",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/lighting/LevelLightEngine;queueSectionData(Lnet/minecraft/world/level/LightLayer;Lnet/minecraft/core/SectionPos;Lnet/minecraft/world/level/chunk/DataLayer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/client/multiplayer/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "unloadLightDataHook",
          "kind": "wrap-operation",
          "method": "handleForgetLevelChunk",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientPacketListener;queueLightRemoval(Lnet/minecraft/network/protocol/game/ClientboundForgetLevelChunkPacket;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/client/multiplayer/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "postChunkLoadHookRedirect",
          "kind": "wrap-operation",
          "method": "handleLevelChunkWithLight",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;queueLightUpdate(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/client/multiplayer/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "postChunkLoadHook",
          "kind": "inject",
          "method": "handleLevelChunkWithLight",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/blockstate/BlockStateBaseMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase"
          ],
          "handler": "initLightAccessState",
          "kind": "inject",
          "method": "initCache",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache RETURN"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/chunk/ChunkAccessMixin",
          "targets": [
            "net/minecraft/world/level/chunk/ChunkAccess"
          ],
          "handler": "nullSources",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/ChunkAccess#<init> RETURN"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/chunk/ChunkAccessMixin",
          "targets": [
            "net/minecraft/world/level/chunk/ChunkAccess"
          ],
          "handler": "skipInit",
          "kind": "wrap-with-condition",
          "method": "initializeLightSources",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/lighting/ChunkSkyLightSources;fillFrom(Lnet/minecraft/world/level/chunk/ChunkAccess;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/chunk/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "onTransitionToFull",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#<init> TAIL"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/chunk/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "skipLightSources",
          "kind": "redirect",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/lighting/ChunkSkyLightSources;update(Lnet/minecraft/world/level/BlockGetter;III)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/chunk/ProtoChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/ProtoChunk"
          ],
          "handler": "skipLightSources",
          "kind": "redirect",
          "method": "setBlockState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/lighting/ChunkSkyLightSources;update(Lnet/minecraft/world/level/BlockGetter;III)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/lightengine/ChunkMapMixin",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "redirectLightEngine",
          "kind": "redirect",
          "method": "<init>",
          "at": "NEW",
          "at_target": "(Lnet/minecraft/world/level/chunk/LightChunkGetter;Lnet/minecraft/server/level/ChunkMap;ZLnet/minecraft/util/thread/ConsecutiveExecutor;Lnet/minecraft/server/level/ChunkTaskDispatcher;)Lnet/minecraft/server/level/ThreadedLevelLightEngine;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/lightengine/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "redirectLightEngine",
          "kind": "redirect",
          "method": "<init>",
          "at": "NEW",
          "at_target": "(Lnet/minecraft/world/level/chunk/LightChunkGetter;ZZ)Lnet/minecraft/world/level/lighting/LevelLightEngine;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/lightengine/LevelLightEngineMixin",
          "targets": [
            "net/minecraft/world/level/lighting/LevelLightEngine"
          ],
          "handler": "construct",
          "kind": "inject",
          "method": "<init>*",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/lighting/LevelLightEngine#<init>* TAIL"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/lightengine/ThreadedLevelLightEngineMixin",
          "targets": [
            "net/minecraft/server/level/ThreadedLevelLightEngine"
          ],
          "handler": "redirectUpdate",
          "kind": "wrap-operation",
          "method": "runUpdate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/lighting/LevelLightEngine;runLightUpdates()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/lightengine/ThreadedLevelLightEngineMixin",
          "targets": [
            "net/minecraft/server/level/ThreadedLevelLightEngine"
          ],
          "handler": "redirectHasUpdates",
          "kind": "wrap-operation",
          "method": "tryScheduleUpdate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/lighting/LevelLightEngine;hasLightWork()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/world/SerializableChunkDataMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SerializableChunkData"
          ],
          "handler": "prepareSaveLightHook",
          "kind": "inject",
          "method": "copyOf",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/storage/SerializableChunkData#copyOf RETURN"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/world/SerializableChunkDataMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SerializableChunkData"
          ],
          "handler": "loadLightHook",
          "kind": "inject",
          "method": "read",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/storage/SerializableChunkData#read RETURN"
        },
        {
          "mixin": "ca/spottedleaf/starlight/mixin/common/world/SerializableChunkDataMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SerializableChunkData"
          ],
          "handler": "noopVanillaLightRead",
          "kind": "wrap-operation",
          "method": "copyOf",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/lighting/LayerLightEventListener;getDataLayerData(Lnet/minecraft/core/SectionPos;)Lnet/minecraft/world/level/chunk/DataLayer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        }
      ],
      "listening": 7,
      "accessors": 0,
      "hooks": {
        "net_from_server": 1
      },
      "wanted": {
        "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase#initCache @RETURN": 1,
        "net/minecraft/world/level/chunk/ChunkAccess#<init> @RETURN": 1,
        "net/minecraft/world/level/chunk/LevelChunk#<init> @TAIL": 1,
        "net/minecraft/world/level/chunk/storage/SerializableChunkData#copyOf @RETURN": 1,
        "net/minecraft/world/level/chunk/storage/SerializableChunkData#read @RETURN": 1,
        "net/minecraft/world/level/lighting/LevelLightEngine#<init>* @TAIL": 1
      },
      "wanted_calls": {
        "net/minecraft/client/multiplayer/ClientChunkCache#<init> @NEW (redirect)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#queueLightUpdate @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/multiplayer/ClientPacketListener#queueLightRemoval @INVOKE (wrap-operation)": 1,
        "net/minecraft/server/level/ChunkMap#<init> @NEW (redirect)": 1,
        "net/minecraft/world/level/lighting/ChunkSkyLightSources#fillFrom @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/lighting/ChunkSkyLightSources#update @INVOKE (redirect)": 2,
        "net/minecraft/world/level/lighting/LayerLightEventListener#getDataLayerData @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/lighting/LevelLightEngine#hasLightWork @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/lighting/LevelLightEngine#queueSectionData @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/lighting/LevelLightEngine#runLightUpdates @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvArray",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 79,
        "features": {
          "mixin": 16
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 79,
        "methods": 480,
        "tried": 480,
        "completed": 135,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lca/spottedleaf/starlight/common/light/StarLightEngine$AxisDirection;#clone()Ljava/lang/Object;": 1,
          "[Lca/spottedleaf/starlight/interndep/flowsched/scheduler/ExceptionHandlingAction;#clone()Ljava/lang/Object;": 1,
          "ca/spottedleaf/starlight/interndep/flowsched/scheduler/ItemStatus#hashCode()I": 1,
          "ca/spottedleaf/starlight/mixin/common/world/WorldGenRegionMixin#getLightEngine()Lnet/minecraft/world/level/lighting/LevelLightEngine;": 2,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "it/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap#get(J)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap#isEmpty()Z": 2,
          "it/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap#isEmpty()Z": 1,
          "it/unimi/dsi/fastutil/objects/Object2ReferenceLinkedOpenHashMap#computeIfAbsent(Ljava/lang/Object;Lit/unimi/dsi/fastutil/objects/Object2ReferenceFunction;)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/Object2ReferenceLinkedOpenHashMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/Object2ReferenceLinkedOpenHashMap#object2ReferenceEntrySet()Lit/unimi/dsi/fastutil/objects/Object2ReferenceSortedMap$FastSortedEntrySet;": 1,
          "it/unimi/dsi/fastutil/objects/ReferenceArrayList#<init>()V": 1,
          "java/lang/AssertionError#printStackTrace()V": 4,
          "java/lang/Integer#numberOfLeadingZeros(I)I": 4,
          "java/lang/Integer#numberOfTrailingZeros(I)I": 1,
          "java/lang/Long#numberOfLeadingZeros(J)I": 4,
          "java/lang/Long#numberOfTrailingZeros(J)I": 1,
          "java/lang/Runnable#run()V": 2,
          "java/lang/String#format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 1,
          "java/lang/Throwable#printStackTrace()V": 3,
          "java/lang/invoke/VarHandle#get(Lca/spottedleaf/starlight/interndep/flowsched/executor/Task;)I": 1,
          "java/lang/invoke/VarHandle#get(Lca/spottedleaf/starlight/interndep/flowsched/scheduler/Cancellable;)Ljava/lang/Runnable;": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lca/spottedleaf/starlight/interndep/flowsched/executor/Task;)I": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lca/spottedleaf/starlight/interndep/flowsched/scheduler/Cancellable;)Ljava/lang/Object;": 2,
          "java/lang/invoke/VarHandle#getAcquire(Lca/spottedleaf/starlight/interndep/flowsched/scheduler/Cancellable;)Ljava/lang/Runnable;": 1,
          "java/lang/invoke/VarHandle#getAndSet(Lca/spottedleaf/starlight/interndep/flowsched/scheduler/Cancellable;Ljava/lang/Runnable;)Ljava/lang/Object;": 1,
          "java/util/ArrayDeque#pollFirst()Ljava/lang/Object;": 6,
          "java/util/ArrayDeque#size()I": 1,
          "java/util/Arrays#fill([Ljava/lang/Object;Ljava/lang/Object;)V": 1,
          "java/util/Arrays#fill([ZZ)V": 2,
          "java/util/Collections#newSetFromMap(Ljava/util/Map;)Ljava/util/Set;": 1,
          "java/util/Properties#getProperty(Ljava/lang/String;)Ljava/lang/String;": 2,
          "java/util/Queue#add(Ljava/lang/Object;)Z": 1,
          "java/util/Queue#isEmpty()Z": 2,
          "java/util/Queue#poll()Ljava/lang/Object;": 1,
          "java/util/concurrent/CompletableFuture#completedFuture(Ljava/lang/Object;)Ljava/util/concurrent/CompletableFuture;": 1,
          "java/util/concurrent/atomic/AtomicBoolean#compareAndSet(ZZ)Z": 1,
          "java/util/concurrent/atomic/AtomicInteger#get()I": 27,
          "java/util/concurrent/atomic/AtomicInteger#getAndIncrement()I": 1,
          "java/util/concurrent/atomic/AtomicIntegerFieldUpdater#compareAndSet(Ljava/lang/Object;II)Z": 1,
          "java/util/concurrent/atomic/AtomicIntegerFieldUpdater#decrementAndGet(Ljava/lang/Object;)I": 1,
          "java/util/concurrent/locks/StampedLock#tryOptimisticRead()J": 7,
          "java/util/concurrent/locks/StampedLock#writeLock()J": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getChunkSource()Lnet/minecraft/client/multiplayer/ClientChunkCache;": 5,
          "net/minecraft/core/BlockPos#getX()I": 7,
          "net/minecraft/core/BlockPos#getZ()I": 3,
          "net/minecraft/core/BlockPos#immutable()Lnet/minecraft/core/BlockPos;": 2,
          "net/minecraft/core/SectionPos#getX()I": 4,
          "net/minecraft/core/SectionPos#getZ()I": 7,
          "net/minecraft/core/SectionPos#x()I": 2,
          "net/minecraft/core/SectionPos#x(J)I": 3,
          "net/minecraft/server/level/ServerLevel#getChunkSource()Lnet/minecraft/server/level/ServerChunkCache;": 2,
          "net/minecraft/server/level/ServerLevel#getLightEngine()Lnet/minecraft/world/level/lighting/LevelLightEngine;": 1,
          "net/minecraft/server/level/ThreadedLevelLightEngine#close()V": 1,
          "net/minecraft/server/level/ThreadedLevelLightEngine#getLightSectionCount()I": 1,
          "net/minecraft/server/level/ThreadedLevelLightEngine#getMaxLightSection()I": 1,
          "net/minecraft/server/level/ThreadedLevelLightEngine#getMinLightSection()I": 1,
          "net/minecraft/server/level/ThreadedLevelLightEngine#tryScheduleUpdate()V": 1,
          "net/minecraft/server/level/ThreadedLevelLightEngine#updateSectionStatus(Lnet/minecraft/core/BlockPos;Z)V": 1,
          "net/minecraft/util/Mth#floor(D)I": 2,
          "net/minecraft/world/entity/Entity#getX()D": 2,
          "net/minecraft/world/entity/Entity#getZ()D": 1,
          "net/minecraft/world/level/ChunkPos#pack()J": 2,
          "net/minecraft/world/level/ChunkPos#x()I": 1,
          "net/minecraft/world/level/ChunkPos#z()I": 4,
          "net/minecraft/world/level/LevelHeightAccessor#getMaxSectionY()I": 7,
          "net/minecraft/world/level/LevelHeightAccessor#getMinSectionY()I": 3,
          "net/minecraft/world/level/LightLayer#BLOCK": 6,
          "net/minecraft/world/level/chunk/ChunkAccess#getPersistedStatus()Lnet/minecraft/world/level/chunk/status/ChunkStatus;": 2,
          "net/minecraft/world/level/chunk/ChunkAccess#getPos()Lnet/minecraft/world/level/ChunkPos;": 7,
          "net/minecraft/world/level/chunk/ChunkAccess#getSections()[Lnet/minecraft/world/level/chunk/LevelChunkSection;": 1,
          "net/minecraft/world/level/chunk/LightChunkGetter#getLevel()Lnet/minecraft/world/level/BlockGetter;": 3,
          "net/minecraft/world/level/chunk/storage/SerializableChunkData#lightCorrect()Z": 1,
          "net/minecraft/world/level/lighting/LevelLightEngine#<init>(Lnet/minecraft/world/level/chunk/LightChunkGetter;ZZ)V": 1,
          "net/minecraft/world/level/lighting/LevelLightEngine#getLightSectionCount()I": 1,
          "net/minecraft/world/level/lighting/LevelLightEngine#getMaxLightSection()I": 1,
          "net/minecraft/world/level/lighting/LevelLightEngine#getMinLightSection()I": 1,
          "net/minecraft/world/level/lighting/LevelLightEngine#updateSectionStatus(Lnet/minecraft/core/BlockPos;Z)V": 1,
          "new it/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap": 1,
          "new net/minecraft/world/level/chunk/DataLayer": 1
        },
        "runs": [
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/BusyRefCounter",
            "method": "isBusy",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/StarLightEngine",
            "method": "getFilledEmptySaveState",
            "desc": "(I)[Lca/spottedleaf/starlight/common/light/SWMRNibbleArray$SaveState;",
            "value": "obj#91"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/StarLightEngine",
            "method": "getFilledEmptyLight",
            "desc": "(I)[Lca/spottedleaf/starlight/common/light/SWMRNibbleArray;",
            "value": "obj#92"
          },
          {
            "class": "ca/spottedleaf/starlight/common/thread/LockTokenImpl",
            "method": "ownerTag",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/thread/LockTokenImpl",
            "method": "pos",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/CoordinateUtils",
            "method": "getNeighbourMappedIndex",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/CoordinateUtils",
            "method": "getChunkKey",
            "desc": "(II)J",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/CoordinateUtils",
            "method": "getChunkX",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/CoordinateUtils",
            "method": "getChunkZ",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/CoordinateUtils",
            "method": "getChunkSectionKey",
            "desc": "(III)J",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/CoordinateUtils",
            "method": "getChunkSectionX",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/CoordinateUtils",
            "method": "getChunkSectionY",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/CoordinateUtils",
            "method": "getChunkSectionZ",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/CoordinateUtils",
            "method": "getBlockKey",
            "desc": "(III)J",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/StatusAdvancingScheduler",
            "method": "tryHandleTransactionException",
            "desc": "(Lca/spottedleaf/starlight/interndep/flowsched/scheduler/ItemHolder;Lca/spottedleaf/starlight/interndep/flowsched/scheduler/ItemStatus;ZLjava/lang/Throwable;)Lca/spottedleaf/starlight/interndep/flowsched/scheduler/ExceptionHandlingAction;",
            "value": "obj#152"
          },
          {
            "class": "ca/spottedleaf/starlight/common/thread/SchedulingUtil",
            "method": "isExternallyManaged",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "fromVanilla",
            "desc": "(Lnet/minecraft/world/level/chunk/DataLayer;)Lca/spottedleaf/starlight/common/light/SWMRNibbleArray;",
            "value": "obj#286"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "getSaveState",
            "desc": "()Lca/spottedleaf/starlight/common/light/SWMRNibbleArray$SaveState;",
            "value": "obj#288"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "getSaveState",
            "desc": "(Z)Lca/spottedleaf/starlight/common/light/SWMRNibbleArray$SaveState;",
            "value": "obj#290"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "isDirty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "isNullNibbleUpdating",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "isNullNibbleVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "isUninitialisedUpdating",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "isUninitialisedVisible",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "isInitialisedUpdating",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "isInitialisedVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "isHiddenUpdating",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "isHiddenVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "updateVisible",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "getUpdating",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "getUpdating",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "getVisible",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/SWMRNibbleArray",
            "method": "getVisible",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/StarLightInterface",
            "method": "hasSkyLight",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/StarLightInterface",
            "method": "hasBlockLight",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/StarLightInterface",
            "method": "getSkyLightValue",
            "desc": "(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/chunk/ChunkAccess;)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/StarLightInterface",
            "method": "getBlockLightValue",
            "desc": "(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/chunk/ChunkAccess;)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/light/StarLightInterface",
            "method": "isClientSide",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/ItemHolder",
            "method": "isDependencyDirty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/ObjectFactory$DefaultObjectFactory",
            "method": "createConcurrentHashMap",
            "desc": "()Ljava/util/concurrent/ConcurrentMap;",
            "value": "obj#432"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/ObjectFactory$DefaultObjectFactory",
            "method": "newMPMCQueue",
            "desc": "()Ljava/util/Queue;",
            "value": "obj#436"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/ObjectFactory$DefaultObjectFactory",
            "method": "newMPSCQueue",
            "desc": "()Ljava/util/Queue;",
            "value": "obj#438"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/ItemTicket",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/ItemTicket",
            "method": "hashCode0",
            "desc": "()I",
            "value": "961"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/ItemTicket",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/scheduler/KeyStatusPair",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/interndep/flowsched/executor/SimpleTask",
            "method": "lockTokens",
            "desc": "()[Lca/spottedleaf/starlight/interndep/flowsched/executor/LockToken;",
            "value": "obj#491"
          },
          {
            "class": "ca/spottedleaf/starlight/mixin/common/chunk/ChunkAccessMixin",
            "method": "skipInit",
            "desc": "(Lnet/minecraft/world/level/lighting/ChunkSkyLightSources;Lnet/minecraft/world/level/chunk/ChunkAccess;)Z",
            "value": "1"
          },
          {
            "class": "ca/spottedleaf/starlight/common/integration/v0/ChunkSystemHooks",
            "method": "isTicketThreadSafe",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/integration/v0/ChunkSystemHooks",
            "method": "isNonFullTicket",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/integration/v0/ChunkSystemHooks",
            "method": "avoidLightCopy",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "isPowerOfTwo",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "isPowerOfTwo",
            "desc": "(J)Z",
            "value": "1"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "getTrailingBit",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "getTrailingBit",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "getDivisorMultiple",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "getDivisorShift",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "branchlessAbs",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "branchlessAbs",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "hash0",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "hash1",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "hash2",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "hash3",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "hash1",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "hash2",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "ca/spottedleaf/starlight/common/util/IntegerUtil",
            "method": "hash3",
            "desc": "(J)J",
            "value": "0"
          }
        ],
        "insns": 5194
      },
      "verdict": "no",
      "summary": "only 1 of 7 listening patch sites have a hook (14%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "servercore",
      "name": "ServerCore",
      "version": "1.5.20+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "me/wesley1808/servercore/fabric/common/ServerCoreFabric"
        }
      ],
      "mixin_configs": [
        "servercore.common.mixins.json",
        "servercore.fabric.mixins.json"
      ],
      "depends": [],
      "classes": 131,
      "methods": 641,
      "sites": [
        {
          "mixin": "me/wesley1808/servercore/fabric/mixin/optimizations/misc/BlockGetterMixin",
          "targets": [
            "net/minecraft/world/level/BlockGetter"
          ],
          "handler": "servercore$fastFluidCheck",
          "kind": "redirect",
          "method": "lambda$clip$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/BlockGetter;getFluidState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/material/FluidState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "servercore$setupActivationStates",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#<init> RETURN"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "servercore$replaceTickCount",
          "kind": "wrap-with-condition",
          "method": "commonTick",
          "at": "FIELD",
          "at_target": "net/minecraft/world/entity/Entity.tickCount:I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "servercore$onPistonMove",
          "kind": "inject",
          "method": "move",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;limitPistonMovement(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#move INVOKE"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "servercore$ignorePushingWhileInactive",
          "kind": "inject",
          "method": "push",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#push HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "servercore$onLoadNbt",
          "kind": "inject",
          "method": "load",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#load RETURN"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "servercore$onTagAdded",
          "kind": "inject",
          "method": "addTag",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#addTag HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "servercore$activateEntities",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/entity/EntityTickList;forEach(Ljava/util/function/Consumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerLevel#tick INVOKE"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "servercore$shouldTickEntity",
          "kind": "wrap-with-condition",
          "method": "tickNonPassenger",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;tick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "servercore$shouldTickPassenger",
          "kind": "wrap-with-condition",
          "method": "tickPassenger",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;rideTick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/fixes/CatMixin",
          "targets": [
            "net/minecraft/world/entity/animal/feline/Cat"
          ],
          "handler": "servercore$fixCatDespawning",
          "kind": "redirect",
          "method": "removeWhenFarAway",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/entity/animal/feline/Cat;tickCount:I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/fixes/OcelotMixin",
          "targets": [
            "net/minecraft/world/entity/animal/feline/Ocelot"
          ],
          "handler": "servercore$fixOcelotDespawning",
          "kind": "redirect",
          "method": "removeWhenFarAway",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/entity/animal/feline/Ocelot;tickCount:I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/activation_range/fixes/PistonMovingBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/piston/PistonMovingBlockEntity"
          ],
          "handler": "servercore$onPushEntity",
          "kind": "inject",
          "method": "moveCollidedEntities",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;setDeltaMovement(DDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/piston/PistonMovingBlockEntity#moveCollidedEntities INVOKE"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/breeding_cap/AllayMixin",
          "targets": [
            "net/minecraft/world/entity/animal/allay/Allay"
          ],
          "handler": "servercore$enforceBreedCap",
          "kind": "inject",
          "method": "duplicateAllay",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/allay/Allay#duplicateAllay HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/breeding_cap/DriedGhastBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/DriedGhastBlock"
          ],
          "handler": "servercore$enforceBreedCap",
          "kind": "wrap-with-condition",
          "method": "tickWaterlogged",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/DriedGhastBlock;spawnGhastling(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/breeding_cap/tasks/AnimalMakeLoveMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/AnimalMakeLove"
          ],
          "handler": "servercore$enforceBreedCap",
          "kind": "wrap-with-condition",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/Animal;spawnChildFromBreeding(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/animal/Animal;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/breeding_cap/tasks/BreedGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/BreedGoal"
          ],
          "handler": "servercore$enforceBreedCap",
          "kind": "wrap-with-condition",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/goal/BreedGoal;breed()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/breeding_cap/tasks/VillagerMakeLoveMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/VillagerMakeLove"
          ],
          "handler": "servercore$enforceBreedCap",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/npc/villager/Villager;eatAndDigestFood()V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/behavior/VillagerMakeLove#tick INVOKE"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/dynamic/ChunkMapMixin",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "servercore$forEachBlockTickingChunk$notTheCauseOfTickLag",
          "kind": "wrap-with-condition",
          "method": "forEachBlockTickingChunk",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkMap$DistanceManager;forEachEntityTickingChunk(Lit/unimi/dsi/fastutil/longs/LongConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/dynamic/MobCategoryMixin",
          "targets": [
            "net/minecraft/world/entity/MobCategory"
          ],
          "handler": "servercore$onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/MobCategory#<init> RETURN"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/dynamic/MobCategoryMixin",
          "targets": [
            "net/minecraft/world/entity/MobCategory"
          ],
          "handler": "servercore$getCapacity",
          "kind": "inject",
          "method": "getMaxInstancesPerChunk",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/MobCategory#getMaxInstancesPerChunk HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/dynamic/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "servercore$updateViewDistance",
          "kind": "inject",
          "method": "setViewDistance",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#setViewDistance HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/dynamic/PlayerListMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "servercore$updateSimulationDistance",
          "kind": "inject",
          "method": "setSimulationDistance",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#setSimulationDistance HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/ender_pearls/ServerPlayerMixin",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "servercore$preventEnderpearlRegistration",
          "kind": "inject",
          "method": "registerEnderPearl",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerPlayer#registerEnderPearl HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/ender_pearls/ServerPlayerMixin",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "servercore$preventEnderpearlLoading",
          "kind": "inject",
          "method": "loadAndSpawnEnderPearls",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerPlayer#loadAndSpawnEnderPearls HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/ender_pearls/ThrownEnderPearlMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearl"
          ],
          "handler": "servercore$preventEnderpearlChunkLoading",
          "kind": "wrap-with-condition",
          "method": "teleport",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;placePortalTicket(Lnet/minecraft/core/BlockPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/merging/ExperienceOrbMixin",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "servercore$modifyMergeFraction",
          "kind": "modify-constant",
          "method": "canMerge",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/merging/ExperienceOrbMixin",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "servercore$modifyMergeRadius",
          "kind": "modify-arg",
          "method": "scanForMerges",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/AABB;inflate(D)Lnet/minecraft/world/phys/AABB;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/merging/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "servercore$modifyMergeRadius",
          "kind": "modify-constant",
          "method": "mergeWithNeighbours",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/misc/MinecraftServerMixin",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "servercore$modifyAutoSaveInterval",
          "kind": "modify-constant",
          "method": "computeNextAutosaveInterval",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/misc/ServerGamePacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerGamePacketListenerImpl"
          ],
          "handler": "servercore$handleMoveVehicle",
          "kind": "inject",
          "method": "handleMoveVehicle",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/Vec3;lengthSqr()D",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerGamePacketListenerImpl#handleMoveVehicle INVOKE"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/misc/ServerGamePacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerGamePacketListenerImpl"
          ],
          "handler": "servercore$handlePlayerPositionChange",
          "kind": "inject",
          "method": "handlePlayerPositionChange",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerPlayer;move(Lnet/minecraft/world/entity/MoverType;Lnet/minecraft/world/phys/Vec3;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerGamePacketListenerImpl#handlePlayerPositionChange INVOKE"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/misc/ServerGamePacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerGamePacketListenerImpl"
          ],
          "handler": "servercore$preHandleMovePlayer",
          "kind": "inject",
          "method": "handleMovePlayer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerGamePacketListenerImpl#handleMovePlayer HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/misc/ServerGamePacketListenerImplMixin",
          "targets": [
            "net/minecraft/server/network/ServerGamePacketListenerImpl"
          ],
          "handler": "servercore$postHandleMovePlayer",
          "kind": "inject",
          "method": "handleMovePlayer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerGamePacketListenerImpl#handleMovePlayer RETURN"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/mob_spawning/BaseSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/BaseSpawner"
          ],
          "handler": "servercore$enforceMobcap",
          "kind": "inject",
          "method": "serverTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getEntities(Lnet/minecraft/world/level/entity/EntityTypeTest;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/BaseSpawner#serverTick INVOKE"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/mob_spawning/InfestedMobEffectMixin",
          "targets": [
            "net/minecraft/world/effect/InfestedMobEffect"
          ],
          "handler": "servercore$enforceMobcap",
          "kind": "inject",
          "method": "onMobHurt",
          "at": "INVOKE",
          "at_target": "Ljava/util/function/ToIntFunction;applyAsInt(Ljava/lang/Object;)I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/effect/InfestedMobEffect#onMobHurt INVOKE"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/mob_spawning/NaturalSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/NaturalSpawner"
          ],
          "handler": "servercore$alwaysSpawnPersistent",
          "kind": "modify-variable",
          "method": "getFilteredSpawningCategories",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/mob_spawning/NaturalSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/NaturalSpawner"
          ],
          "handler": "servercore$canSpawn",
          "kind": "redirect",
          "method": "getFilteredSpawningCategories",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/features/ticking/VillagerMixin",
          "targets": [
            "net/minecraft/world/entity/npc/villager/Villager"
          ],
          "handler": "servercore$shouldTickBrain",
          "kind": "wrap-with-condition",
          "method": "customServerAiStep",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/Brain;tick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/biome_lookups/NaturalSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/NaturalSpawner"
          ],
          "handler": "servercore$fastBiomeLookup",
          "kind": "redirect",
          "method": "getRandomSpawnMobAt",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getBiome(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/core/Holder;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/command_blocks/BaseCommandBlockMixin",
          "targets": [
            "net/minecraft/world/level/BaseCommandBlock"
          ],
          "handler": "servercore$useCachedParseResults",
          "kind": "redirect",
          "method": "performCommand",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/commands/Commands;performPrefixedCommand(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/command_blocks/BaseCommandBlockMixin",
          "targets": [
            "net/minecraft/world/level/BaseCommandBlock"
          ],
          "handler": "servercore$resetCache",
          "kind": "inject",
          "method": "load",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/BaseCommandBlock#load RETURN"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/command_blocks/BaseCommandBlockMixin",
          "targets": [
            "net/minecraft/world/level/BaseCommandBlock"
          ],
          "handler": "servercore$resetCache",
          "kind": "inject",
          "method": "setCommand",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/BaseCommandBlock#setCommand RETURN"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/misc/PathFinderMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/PathFinder"
          ],
          "handler": "servercore$reduceStreams",
          "kind": "redirect",
          "method": "findPath",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;stream()Ljava/util/stream/Stream;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/misc/PathFinderMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/PathFinder"
          ],
          "handler": "servercore$reduceStreams",
          "kind": "redirect",
          "method": "findPath",
          "at": "INVOKE",
          "at_target": "Ljava/util/stream/Collectors;toMap(Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/util/stream/Collector;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/misc/PathFinderMixin",
          "targets": [
            "net/minecraft/world/level/pathfinder/PathFinder"
          ],
          "handler": "servercore$reduceStreams",
          "kind": "redirect",
          "method": "findPath",
          "at": "INVOKE",
          "at_target": "Ljava/util/stream/Stream;collect(Ljava/util/stream/Collector;)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/sync_loads/DynamicGameEventListenerMixin",
          "targets": [
            "net/minecraft/world/level/gameevent/DynamicGameEventListener"
          ],
          "handler": "servercore$onlyUpdateIfLoaded",
          "kind": "redirect",
          "method": "ifChunkExists",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/LevelReader;getChunk(IILnet/minecraft/world/level/chunk/status/ChunkStatus;Z)Lnet/minecraft/world/level/chunk/ChunkAccess;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/sync_loads/LevelMixin",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "servercore$onlyUpdateIfLoaded",
          "kind": "redirect",
          "method": "updateNeighbourForOutputSignal",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;hasChunkAt(Lnet/minecraft/core/BlockPos;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/sync_loads/MapItemMixin",
          "targets": [
            "net/minecraft/world/item/MapItem"
          ],
          "handler": "servercore$onlyUpdateIfLoaded",
          "kind": "redirect",
          "method": "update",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getChunk(II)Lnet/minecraft/world/level/chunk/LevelChunk;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/sync_loads/MapItemMixin",
          "targets": [
            "net/minecraft/world/item/MapItem"
          ],
          "handler": "servercore$validateNotNull",
          "kind": "redirect",
          "method": "update",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/chunk/LevelChunk;isEmpty()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/sync_loads/RemoveBlockGoalMixin",
          "targets": [
            "net/minecraft/world/entity/ai/goal/RemoveBlockGoal"
          ],
          "handler": "servercore$onlyValidateIfLoaded",
          "kind": "redirect",
          "method": "isValidTarget",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/LevelReader;getChunk(IILnet/minecraft/world/level/chunk/status/ChunkStatus;Z)Lnet/minecraft/world/level/chunk/ChunkAccess;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/sync_loads/SleepInBedMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/SleepInBed"
          ],
          "handler": "servercore$onlyProcessIfLoaded",
          "kind": "inject",
          "method": "checkExtraStartConditions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;dimension()Lnet/minecraft/resources/ResourceKey;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/behavior/SleepInBed#checkExtraStartConditions INVOKE"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/tickets/ChunkGeneratorMixin",
          "targets": [
            "net/minecraft/world/level/chunk/ChunkGenerator"
          ],
          "handler": "servercore$preventAddingTickets",
          "kind": "redirect",
          "method": "getMobsAt",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/StructureManager;getAllStructuresAt(Lnet/minecraft/core/BlockPos;)Ljava/util/Map;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/tickets/NaturalSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/NaturalSpawner"
          ],
          "handler": "servercore$preventAddingTickets",
          "kind": "redirect",
          "method": "isInNetherFortressBounds",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/cache/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "servercore$onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerChunkCache#<init> RETURN"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/cache/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "servercore$beforeChunkTicks",
          "kind": "inject",
          "method": "tickChunks",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerChunkCache#tickChunks HEAD"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/cache/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "servercore$cacheBlockTickingChunks$notTheCauseOfTickLag",
          "kind": "redirect",
          "method": "tickChunks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkMap;forEachBlockTickingChunk(Ljava/util/function/Consumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/cache/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "servercore$cacheSpawnTickingChunks",
          "kind": "wrap-with-condition",
          "method": "tickChunks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkMap;collectSpawningChunks(Ljava/util/List;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/cache/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "servercore$ignoreUnloadedSpawnTicks",
          "kind": "wrap-with-condition",
          "method": "tickChunks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerChunkCache;tickSpawningChunk(Lnet/minecraft/world/level/chunk/LevelChunk;Ljava/util/List;Lnet/minecraft/world/level/NaturalSpawner$SpawnState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/cache/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "servercore$cancelShuffle",
          "kind": "redirect",
          "method": "tickChunks",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Util;shuffle(Ljava/util/List;Lnet/minecraft/util/RandomSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/cache/ServerChunkCacheMixin",
          "targets": [
            "net/minecraft/server/level/ServerChunkCache"
          ],
          "handler": "servercore$cancelListClear",
          "kind": "redirect",
          "method": "tickChunks",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;clear()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/random/LevelChunkMixin",
          "targets": [
            "net/minecraft/world/level/chunk/LevelChunk"
          ],
          "handler": "servercore$initLightingTick",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/LevelChunk#<init> RETURN"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/random/LiquidBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/LiquidBlock"
          ],
          "handler": "servercore$cancelDuplicateFluidTicks",
          "kind": "redirect",
          "method": "isRandomlyTicking",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/material/FluidState;isRandomlyTicking()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "me/wesley1808/servercore/mixin/optimizations/ticking/chunk/random/ServerLevelMixin",
          "targets": [
            "net/minecraft/server/level/ServerLevel"
          ],
          "handler": "servercore$replaceLightningCheck",
          "kind": "redirect",
          "method": "tickThunder",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/RandomSource;nextInt(I)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        }
      ],
      "listening": 18,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/server/level/ServerChunkCache#<init> @RETURN": 1,
        "net/minecraft/server/level/ServerChunkCache#tickChunks @HEAD": 1,
        "net/minecraft/server/level/ServerPlayer#loadAndSpawnEnderPearls @HEAD": 1,
        "net/minecraft/server/level/ServerPlayer#registerEnderPearl @HEAD": 1,
        "net/minecraft/server/network/ServerGamePacketListenerImpl#handleMovePlayer @HEAD": 1,
        "net/minecraft/server/network/ServerGamePacketListenerImpl#handleMovePlayer @RETURN": 1,
        "net/minecraft/server/players/PlayerList#setSimulationDistance @HEAD": 1,
        "net/minecraft/server/players/PlayerList#setViewDistance @HEAD": 1,
        "net/minecraft/world/entity/Entity#<init> @RETURN": 1,
        "net/minecraft/world/entity/Entity#addTag @HEAD": 1,
        "net/minecraft/world/entity/Entity#load @RETURN": 1,
        "net/minecraft/world/entity/Entity#push @HEAD": 1,
        "net/minecraft/world/entity/MobCategory#<init> @RETURN": 1,
        "net/minecraft/world/entity/MobCategory#getMaxInstancesPerChunk @HEAD": 1,
        "net/minecraft/world/entity/animal/allay/Allay#duplicateAllay @HEAD": 1,
        "net/minecraft/world/level/BaseCommandBlock#load @RETURN": 1,
        "net/minecraft/world/level/BaseCommandBlock#setCommand @RETURN": 1,
        "net/minecraft/world/level/chunk/LevelChunk#<init> @RETURN": 1
      },
      "wanted_calls": {
        "java/util/List#add @INVOKE (redirect)": 1,
        "java/util/List#clear @INVOKE (redirect)": 1,
        "java/util/Set#stream @INVOKE (redirect)": 1,
        "java/util/stream/Collectors#toMap @INVOKE (redirect)": 1,
        "java/util/stream/Stream#collect @INVOKE (redirect)": 1,
        "net/minecraft/commands/Commands#performPrefixedCommand @INVOKE (redirect)": 1,
        "net/minecraft/server/MinecraftServer#computeNextAutosaveInterval @HEAD (modify-constant)": 1,
        "net/minecraft/server/level/ChunkMap#collectSpawningChunks @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/server/level/ChunkMap#forEachBlockTickingChunk @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ChunkMap$DistanceManager#forEachEntityTickingChunk @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/server/level/ServerChunkCache#tickSpawningChunk @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/server/level/ServerLevel#getBiome @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#getBlockState @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerLevel#tick @INVOKE": 1,
        "net/minecraft/server/network/ServerGamePacketListenerImpl#handleMoveVehicle @INVOKE": 1,
        "net/minecraft/server/network/ServerGamePacketListenerImpl#handlePlayerPositionChange @INVOKE": 1,
        "net/minecraft/util/RandomSource#nextInt @INVOKE (redirect)": 1,
        "net/minecraft/util/Util#shuffle @INVOKE (redirect)": 1,
        "net/minecraft/world/effect/InfestedMobEffect#onMobHurt @INVOKE": 1,
        "net/minecraft/world/entity/Entity#commonTick @FIELD (wrap-with-condition)": 1,
        "net/minecraft/world/entity/Entity#move @INVOKE": 1,
        "net/minecraft/world/entity/Entity#placePortalTicket @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/Entity#rideTick @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/Entity#tick @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/ExperienceOrb#canMerge @HEAD (modify-constant)": 1,
        "net/minecraft/world/entity/ai/Brain#tick @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/ai/behavior/SleepInBed#checkExtraStartConditions @INVOKE": 1,
        "net/minecraft/world/entity/ai/behavior/VillagerMakeLove#tick @INVOKE": 1,
        "net/minecraft/world/entity/ai/goal/BreedGoal#breed @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/animal/Animal#spawnChildFromBreeding @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/animal/feline/Cat#tickCount:I @FIELD (redirect)": 1,
        "net/minecraft/world/entity/animal/feline/Ocelot#tickCount:I @FIELD (redirect)": 1,
        "net/minecraft/world/entity/item/ItemEntity#mergeWithNeighbours @HEAD (modify-constant)": 1,
        "net/minecraft/world/level/BaseSpawner#serverTick @INVOKE": 1,
        "net/minecraft/world/level/BlockGetter#getFluidState @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#getChunk @INVOKE (redirect)": 1,
        "net/minecraft/world/level/Level#hasChunkAt @INVOKE (redirect)": 1,
        "net/minecraft/world/level/LevelReader#getChunk @INVOKE (redirect)": 2,
        "net/minecraft/world/level/NaturalSpawner#getFilteredSpawningCategories @HEAD (modify-variable)": 1,
        "net/minecraft/world/level/StructureManager#getAllStructuresAt @INVOKE (redirect)": 1,
        "net/minecraft/world/level/block/DriedGhastBlock#spawnGhastling @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/block/piston/PistonMovingBlockEntity#moveCollidedEntities @INVOKE": 1,
        "net/minecraft/world/level/chunk/LevelChunk#isEmpty @INVOKE (redirect)": 1,
        "net/minecraft/world/level/material/FluidState#isRandomlyTicking @INVOKE (redirect)": 1,
        "net/minecraft/world/phys/AABB#inflate @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarted",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopped",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerTickEvents",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "ServerTickEvents$EndTick",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "TriState",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 131,
        "features": {
          "command": 1,
          "events": 1,
          "mixin": 56
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 131,
        "methods": 279,
        "tried": 279,
        "completed": 99,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/wesley1808/servercore/common/dynamic/DynamicSetting;#clone()Ljava/lang/Object;": 4,
          "[Lme/wesley1808/servercore/common/utils/statistics/GroupBy;#clone()Ljava/lang/Object;": 1,
          "[Lme/wesley1808/servercore/common/utils/statistics/StatisticType;#clone()Ljava/lang/Object;": 1,
          "com/google/common/cache/Cache#get(Ljava/lang/Object;Ljava/util/concurrent/Callable;)Ljava/lang/Object;": 1,
          "com/google/common/collect/Lists#newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;": 2,
          "com/mojang/brigadier/context/CommandContext#getSource()Ljava/lang/Object;": 3,
          "eu/pb4/placeholders/api/ParserContext#of()Leu/pb4/placeholders/api/ParserContext;": 1,
          "it/unimi/dsi/fastutil/objects/ObjectArrayList#add(Ljava/lang/Object;)Z": 1,
          "it/unimi/dsi/fastutil/objects/ObjectArrayList#iterator()Lit/unimi/dsi/fastutil/objects/ObjectListIterator;": 1,
          "it/unimi/dsi/fastutil/objects/ObjectArrayList#listIterator(I)Lit/unimi/dsi/fastutil/objects/ObjectListIterator;": 2,
          "java/lang/String#format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 1,
          "java/lang/String#replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;": 1,
          "java/lang/System#lineSeparator()Ljava/lang/String;": 1,
          "java/nio/file/Files#createDirectories(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;": 2,
          "java/util/ServiceLoader#load(Ljava/lang/Class;)Ljava/util/ServiceLoader;": 1,
          "java/util/function/IntFunction#apply(I)Ljava/lang/Object;": 1,
          "me/lucko/spark/api/SparkProvider#get()Lme/lucko/spark/api/Spark;": 1,
          "me/wesley1808/servercore/common/utils/statistics/StatisticType#ordinal()I": 2,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 2,
          "net/minecraft/ChatFormatting#AQUA": 1,
          "net/minecraft/ChatFormatting#DARK_AQUA": 1,
          "net/minecraft/ChatFormatting#GREEN": 1,
          "net/minecraft/commands/CommandSourceStack#getServer()Lnet/minecraft/server/MinecraftServer;": 2,
          "net/minecraft/commands/Commands#literal(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;": 5,
          "net/minecraft/core/BlockPos#getX()I": 4,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/TextColor#serialize()Ljava/lang/String;": 2,
          "net/minecraft/server/MinecraftServer#getAllLevels()Ljava/lang/Iterable;": 1,
          "net/minecraft/server/MinecraftServer#getCurrentSmoothedTickTime()F": 2,
          "net/minecraft/server/MinecraftServer#getPlayerList()Lnet/minecraft/server/players/PlayerList;": 2,
          "net/minecraft/server/MinecraftServer#getTickCount()I": 2,
          "net/minecraft/server/level/ChunkHolder#UNLOADED_LEVEL_CHUNK_FUTURE": 1,
          "net/minecraft/server/level/ChunkLevel#isEntityTicking(I)Z": 1,
          "net/minecraft/server/level/ServerLevel#getChunkSource()Lnet/minecraft/server/level/ServerChunkCache;": 2,
          "net/minecraft/server/level/ServerPlayer#chunkPosition()Lnet/minecraft/world/level/ChunkPos;": 1,
          "net/minecraft/world/entity/AgeableMob#setAge(I)V": 2,
          "net/minecraft/world/entity/Entity#getType()Lnet/minecraft/world/entity/EntityType;": 1,
          "net/minecraft/world/entity/Entity#isInWater()Z": 1,
          "net/minecraft/world/entity/Entity#isPushedByFluid()Z": 1,
          "net/minecraft/world/entity/Entity#level()Lnet/minecraft/world/level/Level;": 2,
          "net/minecraft/world/entity/Entity#servercore$getActivatedTick()I": 1,
          "net/minecraft/world/entity/Entity#servercore$getActivationType()Lme/wesley1808/servercore/common/config/data/activation_range/ActivationType;": 4,
          "net/minecraft/world/entity/Entity#servercore$isInactive()Z": 1,
          "net/minecraft/world/entity/EntityType#getKey(Lnet/minecraft/world/entity/EntityType;)Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraft/world/entity/EntityTypes#HOPPER_MINECART": 1,
          "net/minecraft/world/entity/MobCategory#values()[Lnet/minecraft/world/entity/MobCategory;": 1,
          "net/minecraft/world/entity/ai/goal/GoalSelector#getAvailableGoals()Ljava/util/Set;": 2,
          "net/minecraft/world/entity/player/Player#chunkPosition()Lnet/minecraft/world/level/ChunkPos;": 1,
          "net/minecraft/world/level/LocalMobCapCalculator#getPlayersNear(Lnet/minecraft/world/level/ChunkPos;)Ljava/util/List;": 1,
          "net/minecraft/world/level/NaturalSpawner$SpawnState#getSpawnableChunkCount()I": 1,
          "net/minecraft/world/level/chunk/status/ChunkStatus#FULL": 1,
          "net/minecraft/world/level/entity/EntityTypeTest#forClass(Ljava/lang/Class;)Lnet/minecraft/world/level/entity/EntityTypeTest;": 1,
          "new it/unimi/dsi/fastutil/objects/Object2IntOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/Object2ObjectOpenHashMap": 2,
          "new it/unimi/dsi/fastutil/objects/ObjectArrayList": 6,
          "new space/arim/dazzleconf/ext/snakeyaml/SnakeYamlOptions$Builder": 1,
          "org/slf4j/Logger#warn(Ljava/lang/String;Ljava/lang/Object;)V": 1,
          "space/arim/dazzleconf/serialiser/FlexibleType#getString()Ljava/lang/String;": 4
        },
        "runs": [
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationTypeImpl",
            "method": "activationRange",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationTypeImpl",
            "method": "tickInterval",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationTypeImpl",
            "method": "wakeupInterval",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationTypeImpl",
            "method": "extraHeightUp",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationTypeImpl",
            "method": "extraHeightDown",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/utils/Util",
            "method": "iteratePage",
            "desc": "(Ljava/util/List;IILjava/util/function/BiConsumer;)Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/utils/Util",
            "method": "getIndex",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/breeding_cap/BreedingCapConfigImpl",
            "method": "enabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/collections/FilteredList$FilteringIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/collections/FilteredList$FilteringIterator",
            "method": "calculateNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/dynamic/DynamicManager",
            "method": "getAverageTickTime",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/OptimizationConfig",
            "method": "optimizedCopy",
            "desc": "()Lme/wesley1808/servercore/common/config/OptimizationConfig;",
            "value": "obj#52"
          },
          {
            "class": "me/wesley1808/servercore/common/config/OptimizationConfig",
            "method": "optimizedCopy",
            "desc": "()Lme/wesley1808/servercore/common/config/Copyable;",
            "value": "obj#53"
          },
          {
            "class": "me/wesley1808/servercore/common/utils/Mobcaps",
            "method": "canSpawnForCategory",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/ChunkPos;Lnet/minecraft/world/entity/MobCategory;Lme/wesley1808/servercore/common/config/data/mob_spawning/EnforcedMobcap;)Z",
            "value": "1"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationRangeConfigImpl",
            "method": "enabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationRangeConfigImpl",
            "method": "tickNewEntities",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationRangeConfigImpl",
            "method": "useVerticalRange",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationRangeConfigImpl",
            "method": "skipNonImmune",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationRangeConfigImpl",
            "method": "villagerTickPanic",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationRangeConfigImpl",
            "method": "villagerWorkImmunityAfter",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/activation_range/ActivationRangeConfigImpl",
            "method": "villagerWorkImmunityFor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/utils/ChunkTickManager",
            "method": "distanceFromSource",
            "desc": "(BI)I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/ConfigManager",
            "method": "isLoaded",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/FeatureConfigImpl",
            "method": "preventEnderpearlChunkLoading",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/FeatureConfigImpl",
            "method": "chunkTickDistanceAffectsRandomTicks",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/FeatureConfigImpl",
            "method": "preventMovingIntoUnloadedChunks",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/FeatureConfigImpl",
            "method": "autosaveIntervalSeconds",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/FeatureConfigImpl",
            "method": "xpMergeFraction",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/FeatureConfigImpl",
            "method": "xpMergeRadius",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/FeatureConfigImpl",
            "method": "itemMergeRadius",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/FeatureConfigImpl",
            "method": "lobotomizeVillagers",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/FeatureConfigImpl",
            "method": "lobotomizedTickInterval",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/Config",
            "method": "shouldValidate",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "architectury_inject_ServerCore_common_d1ae532af7a646beabfd8b5f48fd21ef_573af8e6f3d314fc0a5c71d466fed7846bee300f29768364804600dfba69b6f7servercore1520263devjar/PlatformMethods",
            "method": "getCurrentTarget",
            "desc": "()Ljava/lang/String;",
            "value": "\"fabric\""
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/dynamic/DynamicConfigImpl",
            "method": "enabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/dynamic/DynamicConfigImpl",
            "method": "targetMspt",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/mob_spawning/MobSpawnEntryImpl",
            "method": "capacity",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/mob_spawning/MobSpawnEntryImpl",
            "method": "spawnInterval",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/mob_spawning/MobSpawnEntryImpl",
            "method": "despawnDistance",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/dynamic/SettingImpl",
            "method": "increment",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/dynamic/SettingImpl",
            "method": "interval",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/mob_spawning/EnforcedMobcapImpl",
            "method": "enforcesMobcap",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/mob_spawning/EnforcedMobcapImpl",
            "method": "additionalCapacity",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/breeding_cap/BreedingCapImpl",
            "method": "limit",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/breeding_cap/BreedingCapImpl",
            "method": "range",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/config/impl/breeding_cap/BreedingCapImpl",
            "method": "unlimitedHeight",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/dynamic/DynamicSetting",
            "method": "get",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/dynamic/DynamicSetting",
            "method": "getLowerBound",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/dynamic/DynamicSetting",
            "method": "getUpperBound",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/dynamic/DynamicSetting",
            "method": "getDefaultValue",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/dynamic/LinkedSetting",
            "method": "shouldRun",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "me/wesley1808/servercore/common/utils/ChunkManager",
            "method": "hasChunk",
            "desc": "(Lnet/minecraft/world/level/Level;II)Z",
            "value": "1"
          },
          {
            "class": "me/wesley1808/servercore/common/utils/ChunkManager",
            "method": "hasChunk",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/server/level/ChunkHolder;)Z",
            "value": "0"
          }
        ],
        "insns": 1609
      },
      "verdict": "no",
      "summary": "none of its 64 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "shouldersurfing",
      "name": "Shoulder Surfing Reloaded",
      "version": "5.3.0",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/github/exopandora/shouldersurfing/fabric/ShoulderSurfingFabric"
        },
        {
          "kind": "jade",
          "value": "com/github/exopandora/shouldersurfing/integration/jade/ShoulderSurfingJadePlugin"
        }
      ],
      "mixin_configs": [
        "shouldersurfing.common.mixins.json",
        "shouldersurfing.common.compat.mixins.json",
        "shouldersurfing.fabric.mixins.json",
        "shouldersurfing.fabric.compat.mixins.json"
      ],
      "depends": [
        "forgeconfigapiport"
      ],
      "classes": 215,
      "methods": 1269,
      "sites": [
        {
          "mixin": "com/github/exopandora/shouldersurfing/fabric/mixin/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "rotationYXZ",
          "kind": "modify-arg",
          "method": "setRotation",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Quaternionf;rotationYXZ(FFF)Lorg/joml/Quaternionf;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/fabric/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "preRenderCrosshair",
          "kind": "inject",
          "method": "extractCrosshair",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/fabric/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "postRenderCrosshair",
          "kind": "inject",
          "method": "extractCrosshair",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/fabric/mixin/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "render",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "world_drawn",
          "why": "RenderLevelStageEvent: the whole level is drawn"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/fabric/mixin/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "aiStep",
          "kind": "inject",
          "method": "aiStep",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/ClientInput;tick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/LocalPlayer#aiStep INVOKE"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/fabric/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "client_start",
          "why": "the client object is built"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/fabric/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onStartTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/AbstractClientPlayerMixin",
          "targets": [
            "net/minecraft/client/player/AbstractClientPlayer"
          ],
          "handler": "isFirstPerson",
          "kind": "modify-variable",
          "method": "getFieldOfViewModifier",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/BeeStingerModelMixin",
          "targets": [
            "net/minecraft/client/model/animal/bee/BeeStingerModel"
          ],
          "handler": "init",
          "kind": "modify-arg",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/model/Model.<init>(Lnet/minecraft/client/model/geom/ModelPart;Ljava/util/function/Function;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "setupRotations",
          "kind": "inject",
          "method": "alignWithEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Camera#alignWithEntity HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "setupRotations",
          "kind": "inject",
          "method": "alignWithEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Camera;setPosition(DDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Camera#alignWithEntity INVOKE"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "setupPosition",
          "kind": "redirect",
          "method": "alignWithEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Camera;move(FFF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "calculateFov",
          "kind": "modify-variable",
          "method": "calculateFov",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/CapeLayerMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/layers/CapeLayer"
          ],
          "handler": "entitySolid",
          "kind": "redirect",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/renderer/rendertype/RenderTypes.entitySolid(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/rendertype/RenderType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "playSeededSound",
          "kind": "inject",
          "method": "playSeededSound",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/multiplayer/ClientLevel.playSound(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZJ)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#playSeededSound INVOKE"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "playLocalSound",
          "kind": "inject",
          "method": "playLocalSound",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#playLocalSound HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "handleLogin",
          "kind": "inject",
          "method": "handleLogin",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "handleRespawn",
          "kind": "inject",
          "method": "handleRespawn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "handleMovePlayer",
          "kind": "inject",
          "method": "handleMovePlayer",
          "at": "INVOKE",
          "at_target": "net/minecraft/network/protocol/PacketUtils.ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/CompassAngleStateMixin",
          "targets": [
            "net/minecraft/client/renderer/item/properties/numeric/CompassAngleState"
          ],
          "handler": "getVisualRotationYInDegrees",
          "kind": "redirect",
          "method": "getWrappedVisualRotationY",
          "at": "INVOKE",
          "at_target": "net/minecraft/world/entity/ItemOwner.getVisualRotationYInDegrees()F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/DebugScreenOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "extractLines",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractLines HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/EntityBoundSoundInstanceMixin",
          "targets": [
            "net/minecraft/client/resources/sounds/EntityBoundSoundInstance"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/sounds/EntityBoundSoundInstance#<init> TAIL"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/EntityBoundSoundInstanceMixin",
          "targets": [
            "net/minecraft/client/resources/sounds/EntityBoundSoundInstance"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/sounds/EntityBoundSoundInstance#tick TAIL"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/EntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "preRender",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/EntityRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderDispatcher"
          ],
          "handler": "postRender",
          "kind": "inject",
          "method": "submit",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit TAIL"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/EntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderer"
          ],
          "handler": "createRenderState",
          "kind": "inject",
          "method": "createRenderState",
          "at": "INVOKE_ASSIGN",
          "at_target": "net/minecraft/client/renderer/entity/EntityRenderer.createRenderState ()Lnet/minecraft/client/renderer/entity/state/EntityRenderState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderer#createRenderState INVOKE_ASSIGN"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "render",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render TAIL"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "doRenderCrosshair",
          "kind": "redirect",
          "method": "render3dHud",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/CameraType.isFirstPerson()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "extractOptions",
          "kind": "inject",
          "method": "extractOptions",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#extractOptions TAIL"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "bobView",
          "kind": "inject",
          "method": "bobView",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "camera_shake",
          "why": "the camera's shake, which a mod may change"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "isCrosshairVisible",
          "kind": "redirect",
          "method": "extractCrosshair",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/CameraType.isFirstPerson()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "isCrosshairVisible",
          "kind": "redirect",
          "method": "extractCrosshair",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/gui/components/debug/DebugScreenEntryList.isCurrentlyEnabled(Lnet/minecraft/resources/Identifier;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "isFirstPerson",
          "kind": "redirect",
          "method": "extractCameraOverlays",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/CameraType.isFirstPerson()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/ItemMixin",
          "targets": [
            "net/minecraft/world/item/Item"
          ],
          "handler": "getPlayerPOVHitResult",
          "kind": "inject",
          "method": "getPlayerPOVHitResult",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/Item#getPlayerPOVHitResult HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "getEntityHitResult",
          "kind": "redirect",
          "method": "pick",
          "at": "INVOKE",
          "at_target": "net/minecraft/world/entity/projectile/ProjectileUtil.getEntityHitResult(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;D)Lnet/minecraft/world/phys/EntityHitResult;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/MinecartMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/Minecart"
          ],
          "handler": "positionRider",
          "kind": "inject",
          "method": "positionRider",
          "at": "INVOKE",
          "at_target": "net/minecraft/world/entity/vehicle/minecart/AbstractMinecart.positionRider(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/entity/Entity$MoveFunction;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/minecart/Minecart#positionRider INVOKE"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/MouseHandlerMixin",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "isFirstPerson",
          "kind": "redirect",
          "method": "turnPlayer",
          "at": "INVOKE",
          "at_target": "net/minecraft/client/CameraType.isFirstPerson()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/MultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "predict",
          "kind": "inject",
          "method": "lambda$useItem$0",
          "at": "TAIL",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/MultiPlayerGameMode#lambda$useItem$0 TAIL"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/OptionsMixin",
          "targets": [
            "net/minecraft/client/Options"
          ],
          "handler": "setCameraType",
          "kind": "inject",
          "method": "setCameraType",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Options#setCameraType HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/ProjectileUtilMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/ProjectileUtil"
          ],
          "handler": "getHitEntitiesAlong",
          "kind": "inject",
          "method": "getHitEntitiesAlong",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/ProjectileUtil#getHitEntitiesAlong HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/RenderPipelinesMixin",
          "targets": [
            "net/minecraft/client/renderer/RenderPipelines"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<clinit>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/RenderPipelines#<clinit> TAIL"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/RenderTypesMixin",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "armorCutoutNoCull",
          "kind": "inject",
          "method": "armorCutoutNoCull",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/rendertype/RenderTypes#armorCutoutNoCull HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/RenderTypesMixin",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "armorCutoutNoCullGlint",
          "kind": "inject",
          "method": "armorCutoutNoCullGlint",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/rendertype/RenderTypes#armorCutoutNoCullGlint HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/RenderTypesMixin",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "armorTrim",
          "kind": "inject",
          "method": "armorTrim",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/rendertype/RenderTypes#armorTrim HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/RenderTypesMixin",
          "targets": [
            "net/minecraft/client/renderer/rendertype/RenderTypes"
          ],
          "handler": "trimmedArmorGlint",
          "kind": "inject",
          "method": "trimmedArmorGlint",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/rendertype/RenderTypes#trimmedArmorGlint HEAD"
        },
        {
          "mixin": "com/github/exopandora/shouldersurfing/mixin/SubmitNodeCollectionMixin",
          "targets": [
            "net/minecraft/client/renderer/SubmitNodeCollection"
          ],
          "handler": "submitModel",
          "kind": "modify-variable",
          "method": "submitModel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        }
      ],
      "listening": 26,
      "accessors": 8,
      "hooks": {
        "camera_shake": 1,
        "client_start": 1,
        "hud": 2,
        "net_from_server": 3,
        "tick": 1,
        "world_drawn": 1
      },
      "wanted": {
        "net/minecraft/client/Camera#alignWithEntity @HEAD": 1,
        "net/minecraft/client/Options#setCameraType @HEAD": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractLines @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#playLocalSound @HEAD": 1,
        "net/minecraft/client/multiplayer/MultiPlayerGameMode#lambda$useItem$0 @TAIL": 1,
        "net/minecraft/client/renderer/GameRenderer#extractOptions @TAIL": 1,
        "net/minecraft/client/renderer/GameRenderer#render @TAIL": 1,
        "net/minecraft/client/renderer/RenderPipelines#<clinit> @TAIL": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderDispatcher#submit @TAIL": 1,
        "net/minecraft/client/renderer/rendertype/RenderTypes#armorCutoutNoCull @HEAD": 1,
        "net/minecraft/client/renderer/rendertype/RenderTypes#armorCutoutNoCullGlint @HEAD": 1,
        "net/minecraft/client/renderer/rendertype/RenderTypes#armorTrim @HEAD": 1,
        "net/minecraft/client/renderer/rendertype/RenderTypes#trimmedArmorGlint @HEAD": 1,
        "net/minecraft/client/resources/sounds/EntityBoundSoundInstance#<init> @TAIL": 1,
        "net/minecraft/client/resources/sounds/EntityBoundSoundInstance#tick @TAIL": 1,
        "net/minecraft/world/entity/projectile/ProjectileUtil#getHitEntitiesAlong @HEAD": 1,
        "net/minecraft/world/item/Item#getPlayerPOVHitResult @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Camera#alignWithEntity @INVOKE": 1,
        "net/minecraft/client/Camera#calculateFov @TAIL (modify-variable)": 1,
        "net/minecraft/client/Camera#move @INVOKE (redirect)": 1,
        "net/minecraft/client/MouseHandler#turnPlayer @INVOKE (redirect)": 1,
        "net/minecraft/client/gui/Hud#extractCameraOverlays @INVOKE (redirect)": 1,
        "net/minecraft/client/gui/Hud#extractCrosshair @INVOKE (redirect)": 2,
        "net/minecraft/client/model/animal/bee/BeeStingerModel#<init> @INVOKE (modify-arg)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#playSeededSound @INVOKE": 1,
        "net/minecraft/client/player/AbstractClientPlayer#getFieldOfViewModifier @HEAD (modify-variable)": 1,
        "net/minecraft/client/player/LocalPlayer#aiStep @INVOKE": 1,
        "net/minecraft/client/player/LocalPlayer#pick @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/GameRenderer#render3dHud @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/SubmitNodeCollection#submitModel @HEAD (modify-variable)": 1,
        "net/minecraft/client/renderer/entity/EntityRenderer#createRenderState @INVOKE_ASSIGN": 1,
        "net/minecraft/client/renderer/entity/layers/CapeLayer#submit @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/item/properties/numeric/CompassAngleState#getWrappedVisualRotationY @INVOKE (redirect)": 1,
        "net/minecraft/world/entity/vehicle/minecart/Minecart#positionRider @INVOKE": 1,
        "org/joml/Quaternionf#rotationYXZ @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "VersionPredicate",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "HudElementRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 215,
        "features": {
          "events": 1,
          "mixin": 48
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 215,
        "methods": 667,
        "tried": 600,
        "completed": 169,
        "handlers_tried": 9,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/github/exopandora/shouldersurfing/api/client/CameraDistanceAttributeMode;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/api/client/CrosshairVisibility;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/api/client/Perspective;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/api/client/ViewBobbingMode;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickOrigin;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/CameraEntityDeltaMovementTickEventHandler;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeCameraDragEventHandlerImpl;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeCameraEntityTransparencyEventHandlerImpl$Aiming;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeCameraEntityTransparencyEventHandlerImpl$Climbing;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeCameraEntityTransparencyEventHandlerImpl;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeCameraSwayEventHandlerImpl;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputePlayerAimStateEventHandlerImpl;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputePlayerAttackStateEventHandlerImpl$Post;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputePlayerAttackStateEventHandlerImpl$Pre;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputePlayerInteractionStateEventHandlerImpl$Post;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputePlayerInteractionStateEventHandlerImpl$Pre;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputePlayerPickStateEventHandlerImpl$Post;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputePlayerRideBoatStateEventHandlerImpl;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputePlayerUseItemStateEventHandlerImpl$Post;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputePlayerUseItemStateEventHandlerImpl$Pre;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$AimingModifiersAndMultipliers;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$CameraDistanceAttribute;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$CameraDistanceAttributePassenger;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$CenterWhenLookingDown;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$ClimbingModifiersAndMultipliers;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$DynamicOffsets;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$EntityScale;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$FallFlyingModifiersAndMultipliers;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$OffsetLimits;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl$PassengerModifiersAndMultipliers;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTemporaryFirstPersonStateEventHandlerImpl$ConstrainedSpace;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/ComputeTemporaryFirstPersonStateEventHandlerImpl$WhenAiming;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/client/event/handler/SetupCameraRotationEventHandlerImpl;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/compat/Mods;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/compat/cobblemon/event/handler/CobblemonEventHandler;#clone()Ljava/lang/Object;": 1,
          "[Lcom/github/exopandora/shouldersurfing/compat/create/event/handler/CreateModEventHandler;#clone()Ljava/lang/Object;": 1,
          "com/github/exopandora/shouldersurfing/api/client/Perspective#ordinal()I": 1,
          "com/github/exopandora/shouldersurfing/api/event/Event#getClass()Ljava/lang/Class;": 1,
          "com/github/exopandora/shouldersurfing/compat/mixin/optifabricreforged/CameraMixin#shouldersurfing$getZRot()F": 1,
          "com/github/exopandora/shouldersurfing/fabric/mixin/CameraMixin#shouldersurfing$getZRot()F": 1,
          "java/lang/Class#forName(Ljava/lang/String;)Ljava/lang/Class;": 1,
          "java/nio/file/Files#newBufferedReader(Ljava/nio/file/Path;)Ljava/io/BufferedReader;": 2,
          "java/util/PriorityQueue#size()I": 1,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "java/util/regex/Pattern#compile(Ljava/lang/String;)Ljava/util/regex/Pattern;": 1,
          "mcp/mobius/waila/api/IClientRegistrar#rayCastVector(Lmcp/mobius/waila/api/IRayCastVectorProvider;)V": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/fabricmc/loader/api/Version#parse(Ljava/lang/String;)Lnet/fabricmc/loader/api/Version;": 1,
          "net/fabricmc/loader/api/metadata/version/VersionPredicate#parse(Ljava/lang/String;)Lnet/fabricmc/loader/api/metadata/version/VersionPredicate;": 1,
          "net/irisshaders/iris/pipeline/programs/ShaderKey#ENTITIES_TRANSLUCENT": 1,
          "net/minecraft/client/Camera#forwardVector()Lorg/joml/Vector3fc;": 1,
          "net/minecraft/client/CameraType#isFirstPerson()Z": 1,
          "net/minecraft/client/CameraType#ordinal()I": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 31,
          "net/minecraft/network/protocol/game/ClientboundRespawnPacket#shouldKeep(B)Z": 2,
          "net/minecraft/util/ARGB#as8BitChannel(F)I": 2,
          "net/minecraft/util/Mth#clamp(FFF)F": 1,
          "net/minecraft/util/Mth#cos(D)F": 2,
          "net/minecraft/world/entity/Entity#getBbWidth()F": 1,
          "net/minecraft/world/entity/Entity#getEyePosition(F)Lnet/minecraft/world/phys/Vec3;": 7,
          "net/minecraft/world/entity/Entity#getVehicle()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/world/entity/Entity#isNoGravity()Z": 1,
          "net/minecraft/world/entity/Entity#isPickable()Z": 1,
          "net/minecraft/world/entity/Entity#isSpectator()Z": 1,
          "net/minecraft/world/entity/player/Player#blockInteractionRange()D": 2,
          "net/minecraft/world/entity/player/Player#getVehicle()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/world/level/ClipContext#getFrom()Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/world/phys/Vec3#ZERO": 2,
          "net/neoforged/neoforge/common/ModConfigSpec#isLoaded()Z": 1,
          "net/neoforged/neoforge/common/ModConfigSpec#save()V": 1,
          "net/neoforged/neoforge/common/ModConfigSpec$BooleanValue#get()Ljava/lang/Object;": 25,
          "net/neoforged/neoforge/common/ModConfigSpec$ConfigValue#get()Ljava/lang/Object;": 31,
          "net/neoforged/neoforge/common/ModConfigSpec$DoubleValue#get()Ljava/lang/Object;": 67,
          "net/neoforged/neoforge/common/ModConfigSpec$EnumValue#get()Ljava/lang/Object;": 1,
          "net/neoforged/neoforge/common/ModConfigSpec$IntValue#get()Ljava/lang/Object;": 11,
          "new net/minecraft/client/KeyMapping": 1,
          "new net/minecraft/world/phys/Vec2": 1,
          "new net/minecraft/world/phys/Vec3": 16,
          "snownee/jade/api/IWailaClientRegistration#addRayTraceCallback(Lsnownee/jade/api/callback/JadeRayTraceCallback;)V": 1
        },
        "runs": [
          {
            "class": "com/github/exopandora/shouldersurfing/event/EventBus",
            "method": "freeze",
            "desc": "()Lcom/github/exopandora/shouldersurfing/event/EventBus;",
            "value": "obj#11"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputePlayerAttackStateEvent",
            "method": "getResult",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/event/CancellableEvent",
            "method": "isCancelled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/config/Config$ClientConfig",
            "method": "requiresSaving",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/config/Config$ClientConfig",
            "method": "isValidItemUseAnimation",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/config/Config$ClientConfig",
            "method": "isValidDataComponentId",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/config/Config$ClientConfig",
            "method": "isValidDouble",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/event/EventHandler",
            "method": "priority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/event/EventHandler",
            "method": "index",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputeCameraEntityTransparencyEvent",
            "method": "getPartialTick",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputeCameraEntityTransparencyEvent",
            "method": "getResult",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputePlayerInteractionStateEvent",
            "method": "getResult",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ForceVanillaPlayerInputEvent",
            "method": "getResult",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/compat/cobblemon/event/handler/CobblemonEventHandler",
            "method": "isAdaptiveItemStack",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/compat/cobblemon/event/handler/CobblemonEventHandler",
            "method": "hasActiveBoatBehaviour",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/compat/cobblemon/event/handler/CobblemonEventHandler",
            "method": "hasActiveSubmarineBehaviour",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/compat/cobblemon/event/handler/CobblemonEventHandler",
            "method": "hasActiveDolphinBehaviour",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "computeIsAiming",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "computeIsCameraDecoupled",
            "desc": "(Lnet/minecraft/world/entity/Entity;ZZ)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "computeIsLookFollowingCrosshairTarget",
            "desc": "(Lnet/minecraft/world/entity/Entity;Z)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "isLookFollowingCrosshairTarget",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "isShoulderSurfing",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "isAiming",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "isCameraDecoupled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "isFreeLooking",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "isTemporaryFirstPerson",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfing",
            "method": "isPlayerRotationUpdateRequired",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputePlayerPickStateEvent",
            "method": "getResult",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/compat/ShoulderSurfingCompatMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/plugin/PluginLoader",
            "method": "getPluginContainers",
            "desc": "()Ljava/util/List;",
            "value": "obj#309"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputePlayerRideBoatStateEvent",
            "method": "getResult",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/math/Vec2f",
            "method": "negate",
            "desc": "()Lcom/github/exopandora/shouldersurfing/api/math/Vec2f;",
            "value": "obj#327"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/math/Vec2f",
            "method": "add",
            "desc": "(FF)Lcom/github/exopandora/shouldersurfing/api/math/Vec2f;",
            "value": "obj#329"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/math/Vec2f",
            "method": "scale",
            "desc": "(F)Lcom/github/exopandora/shouldersurfing/api/math/Vec2f;",
            "value": "obj#335"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/math/Vec2f",
            "method": "divide",
            "desc": "(F)Lcom/github/exopandora/shouldersurfing/api/math/Vec2f;",
            "value": "obj#339"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/math/Vec2f",
            "method": "lengthSquared",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/math/Vec2f",
            "method": "x",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/math/Vec2f",
            "method": "y",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/renderer/CameraEntityRenderer",
            "method": "applyCameraEntityAlphaContextAware",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/renderer/CameraEntityRenderer",
            "method": "isRenderingCameraEntity",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/renderer/CameraEntityRenderer",
            "method": "getCameraEntityAlpha",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder",
            "method": "withFluidContext",
            "desc": "(Lnet/minecraft/world/level/ClipContext$Fluid;)Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder;",
            "value": "obj#383"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder",
            "method": "withEntity",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder;",
            "value": "obj#384"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder",
            "method": "withEntityPickOrigin",
            "desc": "(Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickOrigin;)Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder;",
            "value": "obj#385"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder",
            "method": "withBlockPickOrigin",
            "desc": "(Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickOrigin;)Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder;",
            "value": "obj#386"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder",
            "method": "withPickVector",
            "desc": "(Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickVector;)Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder;",
            "value": "obj#387"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder",
            "method": "withEntityFilter",
            "desc": "(Ljava/util/function/Predicate;)Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder;",
            "value": "obj#388"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder",
            "method": "dynamicTrace",
            "desc": "()Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder;",
            "value": "obj#389"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder",
            "method": "offsetTrace",
            "desc": "()Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder;",
            "value": "obj#390"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder",
            "method": "obstructionTrace",
            "desc": "(Lnet/minecraft/world/phys/Vec3;)Lcom/github/exopandora/shouldersurfing/api/client/world/phys/PickContext$Builder;",
            "value": "obj#391"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputeTemporaryFirstPersonStateEvent",
            "method": "getResult",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputeCameraSwayEvent",
            "method": "getPartialTick",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/util/EntityHelper",
            "method": "getScale",
            "desc": "(Lnet/minecraft/world/entity/Entity;)F",
            "value": "1f"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/util/EntityHelper",
            "method": "isScoping",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputeCameraCouplingEvent",
            "method": "getResult",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfingCamera",
            "method": "isCameraTurningWithVehicle",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/client/ShoulderSurfingCamera",
            "method": "getCameraDistance",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/math/MathHelper",
            "method": "roundDouble",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/event/HandlerList",
            "method": "isEventCancellable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputeCameraDragEvent",
            "method": "getPartialTick",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/github/exopandora/shouldersurfing/api/client/event/ComputePlayerAimStateEvent",
            "method": "getResult",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 4670
      },
      "verdict": "partly",
      "summary": "9 of 26 listening patch sites land on a Horizon hook (34%); of 46 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "shulkerboxtooltip",
      "name": "Shulker Box Tooltip",
      "version": "5.4.3+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/misterpemodder/shulkerboxtooltip/fabric/ShulkerBoxTooltipClientImpl"
        },
        {
          "kind": "main",
          "value": "com/misterpemodder/shulkerboxtooltip/fabric/ShulkerBoxTooltipImpl"
        },
        {
          "kind": "modmenu",
          "value": "com/misterpemodder/shulkerboxtooltip/impl/ModMenuCompat"
        },
        {
          "kind": "shulkerboxtooltip",
          "value": "com/misterpemodder/shulkerboxtooltip/fabric/ShulkerBoxTooltipImpl"
        }
      ],
      "mixin_configs": [
        "shulkerboxtooltip-common.mixins.json",
        "shulkerboxtooltip-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 221,
      "methods": 1318,
      "sites": [
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/fabric/AbstractContainerScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "lockTooltipPosition",
          "kind": "wrap-operation",
          "method": "extractTooltip",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;setTooltipForNextFrame(Lnet/minecraft/client/gui/Font;Ljava/util/List;Ljava/util/Optional;IILnet/minecraft/resources/Identifier;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/fabric/GuiGraphicsMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "captureTooltipYPosition",
          "kind": "wrap-operation",
          "method": "tooltip",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipPositioner;positionTooltip(IIIIII)Lorg/joml/Vector2ic;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/fabric/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "onGetTooltipData",
          "kind": "inject",
          "method": "getTooltipImage",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#getTooltipImage HEAD"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/fabric/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "onGetTooltip",
          "kind": "inject",
          "method": "getTooltipLines",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "tooltip",
          "why": "ItemTooltipEvent"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/PlayerEnderChestContainerHookMixin",
          "targets": [
            "net/minecraft/world/inventory/PlayerEnderChestContainer"
          ],
          "handler": "onSetChanged",
          "kind": "inject",
          "method": "setChanged",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/PlayerEnderChestContainer#setChanged HEAD"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/AbstractContainerScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "forceFocusSlot",
          "kind": "inject",
          "method": "isHovering",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#isHovering HEAD"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/AbstractContainerScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "enableLockKeyHints",
          "kind": "inject",
          "method": "extractTooltip",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractTooltip HEAD"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/AbstractContainerScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "disableLockKeyHints",
          "kind": "inject",
          "method": "extractTooltip",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractTooltip RETURN"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/BundleMouseActionsMixin",
          "targets": [
            "net/minecraft/client/gui/BundleMouseActions"
          ],
          "handler": "changeOnScrollAmountOfShownItems",
          "kind": "wrap-operation",
          "method": "onMouseScrolled",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/BundleItem;getNumberOfItemsToShow(Lnet/minecraft/world/item/ItemStack;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/BundleMouseActionsMixin",
          "targets": [
            "net/minecraft/client/gui/BundleMouseActions"
          ],
          "handler": "toggleSelectedItemsBypassLimit",
          "kind": "wrap-operation",
          "method": "onMouseScrolled",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/BundleMouseActions;toggleSelectedBundleItem(Lnet/minecraft/world/item/ItemStack;II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/BundleMouseActionsMixin",
          "targets": [
            "net/minecraft/client/gui/BundleMouseActions"
          ],
          "handler": "getNextScrollWheelSelectionInPreview",
          "kind": "wrap-operation",
          "method": "onMouseScrolled",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/ScrollWheelHandler;getNextScrollWheelSelection(DII)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/ItemContainerContentsMixin",
          "targets": [
            "net/minecraft/world/item/component/ItemContainerContents"
          ],
          "handler": "addToTooltip",
          "kind": "inject",
          "method": "addToTooltip",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/component/ItemContainerContents#addToTooltip HEAD"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "removeLore",
          "kind": "inject",
          "method": "addToTooltip",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#addToTooltip HEAD"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/KeyboardHandlerMixin",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "onKey",
          "kind": "inject",
          "method": "keyPress",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "key",
          "why": "a key is pressed"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "onScreenClosed",
          "kind": "inject",
          "method": "onClose",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#onClose HEAD"
        },
        {
          "mixin": "com/misterpemodder/shulkerboxtooltip/mixin/client/ScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "captureMousePosition",
          "kind": "inject",
          "method": "extractRenderStateWithTooltipAndSubtitles",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/Screen;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/Screen#extractRenderStateWithTooltipAndSubtitles INVOKE"
        }
      ],
      "listening": 10,
      "accessors": 2,
      "hooks": {
        "key": 1,
        "tooltip": 1
      },
      "wanted": {
        "net/minecraft/client/gui/screens/Screen#onClose @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractTooltip @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractTooltip @RETURN": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#isHovering @HEAD": 1,
        "net/minecraft/world/inventory/PlayerEnderChestContainer#setChanged @HEAD": 1,
        "net/minecraft/world/item/ItemStack#addToTooltip @HEAD": 1,
        "net/minecraft/world/item/ItemStack#getTooltipImage @HEAD": 1,
        "net/minecraft/world/item/component/ItemContainerContents#addToTooltip @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/ScrollWheelHandler#getNextScrollWheelSelection @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/BundleMouseActions#toggleSelectedBundleItem @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#setTooltipForNextFrame @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/screens/Screen#extractRenderStateWithTooltipAndSubtitles @INVOKE": 1,
        "net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipPositioner#positionTooltip @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/item/BundleItem#getNumberOfItemsToShow @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Init",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientTooltipComponentCallback",
          "horizon": "hook:tooltip_component",
          "note": "a tooltip component is drawn",
          "classes": 1
        },
        {
          "class": "ClientboundPlayChannelEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientboundPlayChannelEvents$Register",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientboundPlayChannelEvents$Unregister",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "ServerEntityLevelChangeEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityLevelChangeEvents$AfterPlayerChange",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Init",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerboundPlayChannelEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerboundPlayChannelEvents$Register",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerboundPlayChannelEvents$Unregister",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 221,
        "features": {
          "screen": 13,
          "network": 1,
          "events": 2,
          "mixin": 13
        },
        "events": [
          "Event",
          "ServerEntityLevelChangeEvents"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 221,
        "methods": 899,
        "tried": 600,
        "completed": 261,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/misterpemodder/shulkerboxtooltip/api/config/CompactPreviewOrder;#clone()Ljava/lang/Object;": 1,
          "[Lcom/misterpemodder/shulkerboxtooltip/api/config/ItemStackMergingStrategy;#clone()Ljava/lang/Object;": 1,
          "[Lcom/misterpemodder/shulkerboxtooltip/api/config/Theme;#clone()Ljava/lang/Object;": 1,
          "[Lcom/misterpemodder/shulkerboxtooltip/impl/config/BundleTheme;#clone()Ljava/lang/Object;": 1,
          "[Lcom/misterpemodder/shulkerboxtooltip/impl/config/Configuration$EnderChestSyncType;#clone()Ljava/lang/Object;": 1,
          "[Lcom/misterpemodder/shulkerboxtooltip/impl/config/Configuration$LootTableInfoType;#clone()Ljava/lang/Object;": 1,
          "[Lcom/misterpemodder/shulkerboxtooltip/impl/config/Configuration$PreviewPosition;#clone()Ljava/lang/Object;": 1,
          "[Lcom/misterpemodder/shulkerboxtooltip/impl/network/context/MessageContext$Side;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/BiMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/google/common/collect/BiMap#inverse()Lcom/google/common/collect/BiMap;": 1,
          "com/google/common/collect/BiMap#keySet()Ljava/util/Set;": 1,
          "com/google/common/collect/BiMap#values()Ljava/util/Set;": 1,
          "com/google/common/collect/ImmutableList#builder()Lcom/google/common/collect/ImmutableList$Builder;": 2,
          "com/google/common/collect/ImmutableList#iterator()Lcom/google/common/collect/UnmodifiableIterator;": 2,
          "com/google/common/collect/ImmutableList#stream()Ljava/util/stream/Stream;": 6,
          "com/google/common/collect/ImmutableSet#builder()Lcom/google/common/collect/ImmutableSet$Builder;": 1,
          "com/misterpemodder/shulkerboxtooltip/api/config/CompactPreviewOrder#name()Ljava/lang/String;": 1,
          "com/misterpemodder/shulkerboxtooltip/api/config/CompactPreviewOrder#ordinal()I": 1,
          "com/misterpemodder/shulkerboxtooltip/api/config/ItemStackMergingStrategy#name()Ljava/lang/String;": 1,
          "com/misterpemodder/shulkerboxtooltip/api/config/Theme#name()Ljava/lang/String;": 1,
          "com/misterpemodder/shulkerboxtooltip/impl/config/BundleTheme#name()Ljava/lang/String;": 1,
          "com/misterpemodder/shulkerboxtooltip/impl/config/Configuration$EnderChestSyncType#name()Ljava/lang/String;": 1,
          "com/misterpemodder/shulkerboxtooltip/impl/config/Configuration$LootTableInfoType#name()Ljava/lang/String;": 1,
          "com/misterpemodder/shulkerboxtooltip/impl/config/Configuration$PreviewPosition#name()Ljava/lang/String;": 1,
          "com/misterpemodder/shulkerboxtooltip/impl/config/gui/ConfigEntryList#children()Ljava/util/List;": 1,
          "com/misterpemodder/shulkerboxtooltip/impl/network/channel/C2SChannel#registerPayloadType()V": 1,
          "com/misterpemodder/shulkerboxtooltip/impl/network/channel/S2CChannel#registerPayloadType()V": 1,
          "com/mojang/blaze3d/platform/InputConstants#UNKNOWN": 1,
          "com/mojang/blaze3d/platform/InputConstants$Type#KEYBOARD": 3,
          "java/io/Writer#append(Ljava/lang/CharSequence;)Ljava/io/Writer;": 2,
          "java/io/Writer#write(Ljava/lang/String;)V": 4,
          "java/lang/Character#isUpperCase(C)Z": 1,
          "java/lang/Character#isWhitespace(I)Z": 1,
          "java/lang/Character#toChars(I)[C": 1,
          "java/lang/Class#getFields()[Ljava/lang/reflect/Field;": 3,
          "java/lang/Class#isInterface()Z": 1,
          "java/lang/Integer#toString(I)Ljava/lang/String;": 1,
          "java/lang/String#split(Ljava/lang/String;)[Ljava/lang/String;": 2,
          "java/lang/reflect/Field#setAccessible(Z)V": 4,
          "java/math/BigDecimal#toString()Ljava/lang/String;": 1,
          "java/math/BigInteger#toString(I)Ljava/lang/String;": 1,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 2,
          "java/util/List#hashCode()I": 1,
          "java/util/Objects#hashCode(Ljava/lang/Object;)I": 1,
          "java/util/concurrent/atomic/AtomicBoolean#get()Z": 3,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 1,
          "java/util/function/UnaryOperator#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/networking/v1/PayloadTypeRegistry#serverboundPlay()Lnet/fabricmc/fabric/api/networking/v1/PayloadTypeRegistry;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 10,
          "net/minecraft/client/Minecraft#getCurrentServer()Lnet/minecraft/client/multiplayer/ServerData;": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 6,
          "net/minecraft/client/Minecraft#getSingleplayerServer()Lnet/minecraft/client/server/IntegratedServer;": 3,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList#extractWidgetRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/components/tabs/TabManager#getCurrentTab()Lnet/minecraft/client/gui/components/tabs/Tab;": 1,
          "net/minecraft/client/gui/components/tabs/TabNavigationBar#children()Ljava/util/List;": 1,
          "net/minecraft/client/gui/layouts/HeaderAndFooterLayout#getFooterHeight()I": 1,
          "net/minecraft/client/gui/layouts/HeaderAndFooterLayout#getHeaderHeight()I": 1,
          "net/minecraft/client/gui/narration/NarratableEntry$NarrationPriority#HOVERED": 1,
          "net/minecraft/client/gui/narration/NarratedElementType#TITLE": 1,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/nbt/CompoundTag#getCompound(Ljava/lang/String;)Ljava/util/Optional;": 1,
          "net/minecraft/network/FriendlyByteBuf#readInt()I": 5,
          "net/minecraft/network/FriendlyByteBuf#readNbt()Lnet/minecraft/nbt/CompoundTag;": 2,
          "net/minecraft/network/FriendlyByteBuf#writeInt(I)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Component#translatable(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Style#EMPTY": 3,
          "net/minecraft/network/protocol/common/custom/CustomPacketPayload$Type#id()Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraft/util/ProblemReporter#DISCARDING": 1,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 1,
          "net/minecraft/world/level/block/ColorCollection#NAMES": 1,
          "new net/minecraft/nbt/CompoundTag": 5,
          "new net/minecraft/network/protocol/common/custom/CustomPacketPayload$Type": 2,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#getReturnValue()Ljava/lang/Object;": 2
        },
        "runs": [
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/impl/CommentParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/util/ServerEnvironmentUtil",
            "method": "makeConfiguration",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/impl/config/Configuration;",
            "value": "obj#6"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/network/ProtocolVersion",
            "method": "major",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/network/ProtocolVersion",
            "method": "minor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/config/Configuration",
            "method": "itemStackMergingStrategy",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/api/config/ItemStackMergingStrategy;",
            "value": "obj#10"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/config/Configuration",
            "method": "compactPreviewOrder",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/api/config/CompactPreviewOrder;",
            "value": "obj#12"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/config/Configuration",
            "method": "defaultMaxRowSize",
            "desc": "()I",
            "value": "9"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/config/Configuration",
            "method": "shortItemCounts",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/config/Configuration",
            "method": "useColors",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "architectury_inject_ShulkerBoxTooltip_common_7947391bf5d7490794f101df6f512573_51a787d101df4e066596b7c67c97a308892638881a3c0877ccee19bcf55092fcshulkerboxtooltipcommon543263rawjar/PlatformMethods",
            "method": "getCurrentTarget",
            "desc": "()Ljava/lang/String;",
            "value": "\"fabric\""
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/PreviewContextImpl$Builder",
            "method": "withOwner",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Lcom/misterpemodder/shulkerboxtooltip/impl/PreviewContextImpl$Builder;",
            "value": "obj#81"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/PreviewContextImpl$Builder",
            "method": "withRegistryLookup",
            "desc": "(Lnet/minecraft/core/HolderLookup$Provider;)Lcom/misterpemodder/shulkerboxtooltip/impl/PreviewContextImpl$Builder;",
            "value": "obj#82"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/PreviewContextImpl$Builder",
            "method": "build",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/api/PreviewContext;",
            "value": "obj#84"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/PreviewContextImpl$Builder",
            "method": "withRegistryLookup",
            "desc": "(Lnet/minecraft/core/HolderLookup$Provider;)Lcom/misterpemodder/shulkerboxtooltip/api/PreviewContext$Builder;",
            "value": "obj#85"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/PreviewContextImpl$Builder",
            "method": "withOwner",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Lcom/misterpemodder/shulkerboxtooltip/api/PreviewContext$Builder;",
            "value": "obj#86"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/provider/EnderChestCache",
            "method": "hasCachedInventory",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/provider/EnderChestCache",
            "method": "hasCachedItems",
            "desc": "(Lnet/minecraft/core/HolderLookup$Provider;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/provider/ShulkerBoxPreviewProvider",
            "method": "showTooltipHints",
            "desc": "(Lcom/misterpemodder/shulkerboxtooltip/api/PreviewContext;)Z",
            "value": "1"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/RenderContextImpl",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/RenderContextImpl",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/RenderContextImpl",
            "method": "viewportWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/RenderContextImpl",
            "method": "viewportHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/RenderContextImpl",
            "method": "mouseX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/RenderContextImpl",
            "method": "mouseY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/RenderContextImpl",
            "method": "tooltipTopX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/RenderContextImpl",
            "method": "tooltipTopY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/util/Key",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/api/provider/BlockEntityPreviewProvider",
            "method": "getInventoryMaxSize",
            "desc": "(Lcom/misterpemodder/shulkerboxtooltip/api/PreviewContext;)I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/api/provider/BlockEntityPreviewProvider",
            "method": "getMaxRowSize",
            "desc": "(Lcom/misterpemodder/shulkerboxtooltip/api/PreviewContext;)I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/api/provider/BlockEntityPreviewProvider",
            "method": "getCompactMaxRowSize",
            "desc": "(Lcom/misterpemodder/shulkerboxtooltip/api/PreviewContext;)I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/api/provider/BlockEntityPreviewProvider",
            "method": "canUseLootTables",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/api/provider/BlockEntityPreviewProvider",
            "method": "getItemCount",
            "desc": "(Ljava/util/List;)I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/mixin/client/GuiGraphicsMixin",
            "method": "getTooltipTopXPosition",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/mixin/client/GuiGraphicsMixin",
            "method": "getTooltipTopYPosition",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/mixin/client/GuiGraphicsMixin",
            "method": "getMouseX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/mixin/client/GuiGraphicsMixin",
            "method": "getMouseY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/config/gui/ConfigCategoryTab",
            "method": "keyPressed",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "withComments",
            "desc": "(Z)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#176"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "printWhitespace",
            "desc": "(Z)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#178"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "printCommas",
            "desc": "(Z)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#180"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "printTrailingCommas",
            "desc": "(Z)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#182"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "bareSpecialNumerics",
            "desc": "(Z)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#184"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "bareRootObject",
            "desc": "(Z)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#186"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "printUnquotedKeys",
            "desc": "(Z)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#188"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder",
            "method": "build",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar;",
            "value": "obj#191"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asBoolean",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asByte",
            "desc": "(B)B",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asChar",
            "desc": "(C)C",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asShort",
            "desc": "(S)S",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asInt",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asLong",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asFloat",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "asDouble",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "clone",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#228"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "of",
            "desc": "(Ljava/lang/String;)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#229"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "of",
            "desc": "(Ljava/lang/Double;)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#232"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "of",
            "desc": "(Ljava/lang/Long;)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#233"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "of",
            "desc": "(Ljava/lang/Boolean;)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive;",
            "value": "obj#234"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "clone",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonElement;",
            "value": "obj#236"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonPrimitive",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#238"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonArray$Entry",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonArray$Entry",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/util/ItemKey",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/util/ItemKey",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonNull",
            "method": "toString",
            "desc": "()Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonNull",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonNull",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonNull",
            "method": "toJson",
            "desc": "(ZZI)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonNull",
            "method": "clone",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonNull;",
            "value": "obj#252"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonNull",
            "method": "clone",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonElement;",
            "value": "obj#253"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonNull",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#254"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/BasePreviewRenderer",
            "method": "getMaxRowSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/BasePreviewRenderer",
            "method": "findCompactSelectedSlot",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/impl/ElementParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/VanillaPreviewRenderer",
            "method": "getOutsideXOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/VanillaPreviewRenderer",
            "method": "getOutsideYOffset",
            "desc": "()I",
            "value": "8"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/api/renderer/PreviewRenderer",
            "method": "getOutsideXOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/api/renderer/PreviewRenderer",
            "method": "getOutsideYOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/Jankson$Builder",
            "method": "allowBareRootObject",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/Jankson$Builder;",
            "value": "obj#356"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/Jankson$Builder",
            "method": "build",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/Jankson;",
            "value": "obj#360"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/config/ClientConfiguration",
            "method": "useColors",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode",
            "method": "builder",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#375"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode",
            "method": "restartRequired",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/util/ShulkerBoxTooltipUtil",
            "method": "rgbToComponents",
            "desc": "(I)[F",
            "value": "obj#398"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/RootConfigNode",
            "method": "getName",
            "desc": "()Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/CategoryConfigNode$Builder",
            "method": "name",
            "desc": "(Ljava/lang/String;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/CategoryConfigNode$Builder;",
            "value": "obj#440"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/CategoryConfigNode$Builder",
            "method": "title",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/CategoryConfigNode$Builder;",
            "value": "obj#442"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/CategoryConfigNode$Builder",
            "method": "tooltip",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/CategoryConfigNode$Builder;",
            "value": "obj#444"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "getDelta",
            "desc": "(Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject;)Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject;",
            "value": "obj#485"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "getBoolean",
            "desc": "(Ljava/lang/String;Z)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "getByte",
            "desc": "(Ljava/lang/String;B)B",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "getChar",
            "desc": "(Ljava/lang/String;C)C",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "getShort",
            "desc": "(Ljava/lang/String;S)S",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "getInt",
            "desc": "(Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "getLong",
            "desc": "(Ljava/lang/String;J)J",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "getFloat",
            "desc": "(Ljava/lang/String;F)F",
            "value": "0f"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "getDouble",
            "desc": "(Ljava/lang/String;D)D",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "clone",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject;",
            "value": "obj#560"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "containsValue",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "entrySet",
            "desc": "()Ljava/util/Set;",
            "value": "obj#581"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "keySet",
            "desc": "()Ljava/util/Set;",
            "value": "obj#592"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "values",
            "desc": "()Ljava/util/Collection;",
            "value": "obj#606"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "clone",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonElement;",
            "value": "obj#612"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonObject",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#619"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/impl/ArrayParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/impl/ArrayParserContext",
            "method": "getResult",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonArray;",
            "value": "obj#650"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/impl/ArrayParserContext",
            "method": "getResult",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#654"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/network/message/C2SEnderChestUpdateRequest$Type",
            "method": "decode",
            "desc": "(Lnet/minecraft/network/FriendlyByteBuf;)Lcom/misterpemodder/shulkerboxtooltip/impl/network/message/C2SEnderChestUpdateRequest;",
            "value": "obj#662"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/network/message/C2SEnderChestUpdateRequest$Type",
            "method": "decode",
            "desc": "(Lnet/minecraft/network/FriendlyByteBuf;)Ljava/lang/Object;",
            "value": "obj#666"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/impl/ObjectParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/ModPreviewRenderer",
            "method": "getOutsideXOffset",
            "desc": "()I",
            "value": "-4"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/renderer/ModPreviewRenderer",
            "method": "getOutsideYOffset",
            "desc": "()I",
            "value": "4"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/hook/EnderChestScreenDetector",
            "method": "isEnderChestScreen",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar",
            "method": "hasComments",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar",
            "method": "shouldOutputWhitespace",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar",
            "method": "builder",
            "desc": "()Lcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/JsonGrammar$Builder;",
            "value": "obj#740"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/impl/StringParserContext",
            "method": "consume",
            "desc": "(ILcom/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/Jankson;)Z",
            "value": "1"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/shadowed/blue/endless/jankson/impl/StringParserContext",
            "method": "isComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/ShulkerBoxTooltipClient",
            "method": "isPreviewKeyPressed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/ShulkerBoxTooltipClient",
            "method": "isFullPreviewKeyPressed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/ShulkerBoxTooltipClient",
            "method": "isLockPreviewKeyPressed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/ShulkerBoxTooltipClient",
            "method": "isKeyPressed",
            "desc": "(Lcom/misterpemodder/shulkerboxtooltip/impl/util/Key;)Z",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/provider/OverridingPreviewProvider",
            "method": "getPriority",
            "desc": "()I",
            "value": "1000"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/color/ColorRegistryImpl",
            "method": "registeredKeysCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/provider/GenericContainerPreviewProvider",
            "method": "getWindowColorKey",
            "desc": "(Lcom/misterpemodder/shulkerboxtooltip/api/PreviewContext;)Lcom/misterpemodder/shulkerboxtooltip/api/color/ColorKey;",
            "value": "obj#856"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/provider/GenericContainerPreviewProvider",
            "method": "getPriority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/api/PreviewContext",
            "method": "builder",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Lcom/misterpemodder/shulkerboxtooltip/api/PreviewContext$Builder;",
            "value": "obj#870"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder",
            "method": "type",
            "desc": "(Ljava/lang/Class;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#887"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder",
            "method": "valueType",
            "desc": "(Ljava/lang/Class;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#889"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder",
            "method": "name",
            "desc": "(Ljava/lang/String;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#891"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder",
            "method": "title",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#893"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder",
            "method": "tooltip",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#895"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder",
            "method": "prefix",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#897"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder",
            "method": "defaultValue",
            "desc": "(Ljava/lang/Object;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#899"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder",
            "method": "requiresRestart",
            "desc": "(Z)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#901"
          },
          {
            "class": "com/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder",
            "method": "valueReader",
            "desc": "(Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$ValueReader;)Lcom/misterpemodder/shulkerboxtooltip/impl/tree/ValueConfigNode$Builder;",
            "value": "obj#903"
          }
        ],
        "insns": 8615
      },
      "verdict": "partly",
      "summary": "2 of 10 listening patch sites land on a Horizon hook (20%); of 16 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "voicechat",
      "name": "Simple Voice Chat",
      "version": "2.6.27+26.3",
      "license": "All Rights Reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "de/maxhenkel/voicechat/FabricVoicechatClientMod"
        },
        {
          "kind": "main",
          "value": "de/maxhenkel/voicechat/FabricVoicechatMod"
        },
        {
          "kind": "modmenu",
          "value": "de/maxhenkel/voicechat/integration/ModMenu"
        }
      ],
      "mixin_configs": [
        "voicechat.mixins.json"
      ],
      "depends": [],
      "classes": 704,
      "methods": 4322,
      "sites": [
        {
          "mixin": "de/maxhenkel/voicechat/mixin/AvatarRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "submitNameTag",
          "kind": "wrap-operation",
          "method": "submitNameDisplay",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/entity/player/AvatarRenderer;submitNameDisplay(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "frame",
          "why": "RenderFrameEvent.Pre: once a frame, before it draws"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/IntegratedServerMixin",
          "targets": [
            "net/minecraft/client/server/IntegratedServer"
          ],
          "handler": "publishServer",
          "kind": "inject",
          "method": "publishServer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/server/IntegratedServer#publishServer RETURN"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/KeyboardMixin",
          "targets": [
            "net/minecraft/client/KeyboardHandler"
          ],
          "handler": "onKey",
          "kind": "inject",
          "method": "keyPress",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;getWindow()Lcom/mojang/blaze3d/platform/Window;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/KeyboardHandler#keyPress INVOKE"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "disconnect",
          "kind": "inject",
          "method": "disconnect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_disconnecting",
          "why": "ClientPlayerNetworkEvent.LoggingOut: the connection ends"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "handleKeybinds",
          "kind": "inject",
          "method": "handleKeybinds",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "key",
          "why": "the frame's keys are handled"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/MouseMixin",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "onMouseButton",
          "kind": "inject",
          "method": "onButton",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/MouseHandler#onButton HEAD"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/PlayerEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/social/PlayerEntry"
          ],
          "handler": "onCreate",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/social/PlayerEntry#<init> TAIL"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/PlayerEntryMixin",
          "targets": [
            "net/minecraft/client/gui/screens/social/PlayerEntry"
          ],
          "handler": "extractContent",
          "kind": "inject",
          "method": "extractContent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/Button;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/social/PlayerEntry#extractContent INVOKE"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/PlayerManagerMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "onPlayerConnect",
          "kind": "inject",
          "method": "placeNewPlayer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "player_logged_in",
          "why": "PlayerEvent.PlayerLoggedInEvent"
        },
        {
          "mixin": "de/maxhenkel/voicechat/mixin/PlayerManagerMixin",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "onPlayerConnect",
          "kind": "inject",
          "method": "remove",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "player_logged_out",
          "why": "PlayerEvent.PlayerLoggedOutEvent"
        }
      ],
      "listening": 8,
      "accessors": 1,
      "hooks": {
        "client_disconnecting": 1,
        "frame": 1,
        "key": 1,
        "player_logged_in": 1,
        "player_logged_out": 1
      },
      "wanted": {
        "net/minecraft/client/MouseHandler#onButton @HEAD": 1,
        "net/minecraft/client/gui/screens/social/PlayerEntry#<init> @TAIL": 1,
        "net/minecraft/client/server/IntegratedServer#publishServer @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/client/KeyboardHandler#keyPress @INVOKE": 1,
        "net/minecraft/client/gui/screens/social/PlayerEntry#extractContent @INVOKE": 1,
        "net/minecraft/client/renderer/entity/player/AvatarRenderer#submitNameDisplay @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 10
        },
        {
          "class": "EventFactory",
          "horizon": "",
          "note": "",
          "classes": 8
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "HudElementRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarted",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopping",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "VanillaHudElements",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 704,
        "features": {
          "screen": 54,
          "command": 1,
          "network": 1,
          "events": 2,
          "mixin": 10
        },
        "events": [
          "Event",
          "EventFactory"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 704,
        "methods": 2567,
        "tried": 600,
        "completed": 360,
        "handlers_tried": 5,
        "handlers_completed": 1,
        "missing": {
          "[Lde/maxhenkel/voicechat/Voicechat$Loader;#clone()Ljava/lang/Object;": 1,
          "[Lde/maxhenkel/voicechat/gui/widgets/MicTestButton$State;#clone()Ljava/lang/Object;": 1,
          "[Lde/maxhenkel/voicechat/permission/PermissionType;#clone()Ljava/lang/Object;": 1,
          "[Lde/maxhenkel/voicechat/voice/client/GroupPlayerIconOrientation;#clone()Ljava/lang/Object;": 1,
          "[Lde/maxhenkel/voicechat/voice/client/speaker/AudioType;#clone()Ljava/lang/Object;": 1,
          "com/mojang/brigadier/context/CommandContext#getSource()Ljava/lang/Object;": 2,
          "de/maxhenkel/voicechat/gui/VoiceChatScreenBase#clearWidgets()V": 1,
          "de/maxhenkel/voicechat/gui/onboarding/OnboardingScreenBase#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 2,
          "de/maxhenkel/voicechat/gui/widgets/EnumButton#defaultButtonNarrationText(Lnet/minecraft/client/gui/narration/NarrationElementOutput;)V": 1,
          "de/maxhenkel/voicechat/gui/widgets/ImageButton#defaultButtonNarrationText(Lnet/minecraft/client/gui/narration/NarrationElementOutput;)V": 1,
          "de/maxhenkel/voicechat/gui/widgets/ImageButton#extractDefaultSprite(Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V": 1,
          "de/maxhenkel/voicechat/gui/widgets/ListScreenListBase#setRectangle(IIII)V": 1,
          "de/maxhenkel/voicechat/permission/PermissionType#ordinal()I": 1,
          "de/maxhenkel/voicechat/plugins/impl/GroupImpl$TypeImpl#NORMAL": 1,
          "de/maxhenkel/voicechat/plugins/impl/GroupImpl$TypeImpl#OPEN": 1,
          "io/netty/buffer/ByteBuf#readBytes([B)Lio/netty/buffer/ByteBuf;": 1,
          "io/netty/buffer/ByteBuf#writeBytes([B)Lio/netty/buffer/ByteBuf;": 1,
          "java/io/BufferedReader#close()V": 1,
          "java/io/BufferedReader#readLine()Ljava/lang/String;": 1,
          "java/lang/Class#getClassLoader()Ljava/lang/ClassLoader;": 1,
          "java/lang/Class#getPackageName()Ljava/lang/String;": 1,
          "java/lang/String#format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 3,
          "java/lang/ref/Cleaner$Cleanable#clean()V": 4,
          "java/security/SecureRandom#nextBytes([B)V": 2,
          "java/util/Arrays#fill([SIIS)V": 1,
          "java/util/Arrays#fill([SS)V": 1,
          "java/util/Arrays#hashCode([B)I": 1,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collections#emptyMap()Ljava/util/Map;": 1,
          "java/util/Collections#unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;": 1,
          "java/util/Timer#cancel()V": 1,
          "java/util/concurrent/ExecutorService#execute(Ljava/lang/Runnable;)V": 1,
          "java/util/concurrent/TimeUnit#MILLISECONDS": 1,
          "net/fabricmc/fabric/api/event/Event#invoker()Ljava/lang/Object;": 4,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 3,
          "net/minecraft/client/gui/GuiGraphicsExtractor#pose()Lorg/joml/Matrix3x2fStack;": 1,
          "net/minecraft/client/gui/screens/Screen#<init>(Lnet/minecraft/network/chat/Component;)V": 2,
          "net/minecraft/client/gui/screens/Screen#init()V": 2,
          "net/minecraft/client/renderer/RenderPipelines#GUI_TEXTURED": 1,
          "net/minecraft/commands/CommandSourceStack#getPlayerOrException()Lnet/minecraft/server/level/ServerPlayer;": 1,
          "net/minecraft/commands/Commands#literal(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;": 1,
          "net/minecraft/network/FriendlyByteBuf#readBoolean()Z": 2,
          "net/minecraft/network/FriendlyByteBuf#readByteArray(I)[B": 2,
          "net/minecraft/network/FriendlyByteBuf#writeByteArray([B)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/server/level/ServerPlayer#getName()Lnet/minecraft/network/chat/Component;": 1,
          "net/minecraft/world/entity/Entity#getUUID()Ljava/util/UUID;": 1,
          "net/minecraft/world/entity/Entity#position()Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/world/entity/player/Player#getUUID()Ljava/util/UUID;": 1,
          "new org/joml/Vector3f": 4,
          "org/lwjgl/openal/AL11#alIsSource(I)Z": 1
        },
        "runs": [
          {
            "class": "de/maxhenkel/opus4j/OpusEncoder",
            "method": "isClosed",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/KissFFT",
            "method": "S_MUL",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/KissFFT",
            "method": "S_MUL",
            "desc": "(IS)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/KissFFT",
            "method": "HALF_OF",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/speex4j/NativeInitializer",
            "method": "isLoaded",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/audiochannel/LocationalAudioChannelImpl",
            "method": "getDistance",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/natives/OpusManager",
            "method": "instance",
            "desc": "()Lde/maxhenkel/voicechat/natives/OpusManager;",
            "value": "obj#64"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/GainQuantization",
            "method": "silk_gains_ID",
            "desc": "([BI)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/EntityImpl",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/EntityImpl",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/configbuilder/custom/StringMap",
            "method": "builder",
            "desc": "()Lde/maxhenkel/voicechat/configbuilder/custom/StringMap$Builder;",
            "value": "obj#112"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/server/ServerGroupManager",
            "method": "removeGroup",
            "desc": "(Ljava/util/UUID;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/CodeSigns",
            "method": "silk_enc_map",
            "desc": "(I)I",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/CodeSigns",
            "method": "silk_dec_map",
            "desc": "(I)I",
            "value": "-1"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Sigmoid",
            "method": "silk_sigm_Q15",
            "desc": "(I)I",
            "value": "16384"
          },
          {
            "class": "de/maxhenkel/voicechat/configbuilder/entry/serializer/FloatSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Float;",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/configbuilder/entry/serializer/FloatSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Float;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/voicechat/configbuilder/entry/serializer/FloatSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/voicechat/configbuilder/entry/serializer/FloatSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Object;",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/EventBuilder",
            "method": "addEvent",
            "desc": "(Ljava/lang/Class;Ljava/util/function/Consumer;I)Lde/maxhenkel/voicechat/plugins/EventBuilder;",
            "value": "obj#180"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/EventBuilder",
            "method": "build",
            "desc": "()Ljava/util/Map;",
            "value": "obj#189"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/EventBuilder",
            "method": "create",
            "desc": "()Lde/maxhenkel/voicechat/plugins/EventBuilder;",
            "value": "obj#192"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/RawUdpPacketImpl",
            "method": "getTimestamp",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/common/ConnectionCheckPacket",
            "method": "fromBytes",
            "desc": "(Lnet/minecraft/network/FriendlyByteBuf;)Lde/maxhenkel/voicechat/voice/common/ConnectionCheckPacket;",
            "value": "obj#215"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/common/ConnectionCheckPacket",
            "method": "fromBytes",
            "desc": "(Lnet/minecraft/network/FriendlyByteBuf;)Lde/maxhenkel/voicechat/voice/common/Packet;",
            "value": "obj#218"
          },
          {
            "class": "de/maxhenkel/voicechat/configbuilder/CommentedProperties$LineReader",
            "method": "fromInputStream",
            "desc": "(Ljava/io/InputStream;)Lde/maxhenkel/voicechat/configbuilder/CommentedProperties$LineReader;",
            "value": "obj#219"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/AudioPacketBuffer",
            "method": "getSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/ClientPlayerStateManager",
            "method": "isPlayerDisabled",
            "desc": "(Ljava/util/UUID;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/ClientPlayerStateManager",
            "method": "isDisconnected",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/voicechat/gui/widgets/MicAmplificationSlider",
            "method": "gainToValue",
            "desc": "(D)D",
            "value": "0.625"
          },
          {
            "class": "de/maxhenkel/voicechat/gui/widgets/MicAmplificationSlider",
            "method": "valueToGain",
            "desc": "(D)D",
            "value": "-40"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/common/MicPacket",
            "method": "getTTL",
            "desc": "()J",
            "value": "500"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/common/MicPacket",
            "method": "getSequenceNumber",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/common/MicPacket",
            "method": "isWhispering",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl",
            "method": "sender",
            "desc": "(Ljava/util/UUID;)Lde/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl;",
            "value": "obj#320"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl",
            "method": "opusEncodedData",
            "desc": "([B)Lde/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl;",
            "value": "obj#321"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl",
            "method": "sequenceNumber",
            "desc": "(J)Lde/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl;",
            "value": "obj#322"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl",
            "method": "category",
            "desc": "(Ljava/lang/String;)Lde/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl;",
            "value": "obj#323"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl",
            "method": "category",
            "desc": "(Ljava/lang/String;)Lde/maxhenkel/voicechat/api/packets/SoundPacket$Builder;",
            "value": "obj#324"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl",
            "method": "sequenceNumber",
            "desc": "(J)Lde/maxhenkel/voicechat/api/packets/SoundPacket$Builder;",
            "value": "obj#325"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl",
            "method": "opusEncodedData",
            "desc": "([B)Lde/maxhenkel/voicechat/api/packets/SoundPacket$Builder;",
            "value": "obj#326"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/SoundPacketImpl$BuilderImpl",
            "method": "sender",
            "desc": "(Ljava/util/UUID;)Lde/maxhenkel/voicechat/api/packets/SoundPacket$Builder;",
            "value": "obj#327"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/common/Secret",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/EncodePulses",
            "method": "combine_and_check",
            "desc": "([I[III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/ClientVoicechat",
            "method": "setRecording",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/ClientVoicechat",
            "method": "getStartTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/ClientVoicechat",
            "method": "closeAudioChannel",
            "desc": "(Ljava/util/UUID;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/server/PingManager$Ping",
            "method": "isTimedOut",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/OpusPacketInfo",
            "method": "getNumFrames",
            "desc": "([BII)I",
            "value": "-1"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/OpusPacketInfo",
            "method": "getNumSamples",
            "desc": "([BIII)I",
            "value": "-1"
          },
          {
            "class": "de/maxhenkel/nativeutils/NativeInitializer",
            "method": "isLoaded",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/speaker/FakeALSpeaker",
            "method": "getFormat",
            "desc": "()I",
            "value": "4355"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/speaker/FakeALSpeaker",
            "method": "getVolume",
            "desc": "(FLnet/minecraft/world/phys/Vec3;F)F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "CapToUInt32",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "CapToUInt32",
            "desc": "(I)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16SU",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_32_Q16",
            "desc": "(SI)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_32_Q16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_32_P16",
            "desc": "(SI)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_32_P16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_32_Q15",
            "desc": "(SI)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_32_Q15",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT32_32_Q31",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "QCONST16",
            "desc": "(FI)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "QCONST32",
            "desc": "(FI)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "NEG16",
            "desc": "(S)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "NEG16",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "NEG32",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "EXTRACT16",
            "desc": "(I)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "EXTEND32",
            "desc": "(S)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "EXTEND32",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHR16",
            "desc": "(SI)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHR16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHL16",
            "desc": "(SI)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHL16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHR32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHL32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "PSHR32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "PSHR16",
            "desc": "(SI)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "PSHR16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "VSHR32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHR",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHL",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHR",
            "desc": "(SI)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SHL",
            "desc": "(SI)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "PSHR",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SATURATE",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SATURATE16",
            "desc": "(I)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "ROUND16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "ROUND16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "HALF16",
            "desc": "(S)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "HALF16",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "HALF32",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "ADD16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "ADD16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SUB16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SUB16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "ADD32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SUB32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16",
            "desc": "(SS)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAC16_16",
            "desc": "(SSS)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAC16_16",
            "desc": "(ISS)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAC16_16",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAC16_32_Q15",
            "desc": "(ISS)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAC16_32_Q15",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAC16_32_Q16",
            "desc": "(ISS)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAC16_32_Q16",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q11_32",
            "desc": "(SS)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q11_32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q11",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q11",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q13",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q13",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q14",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q14",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q15",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_Q15",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_P13",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_P13",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_P14",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_P14",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_P15",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MULT16_16_P15",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SAT16",
            "desc": "(I)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SIG2WORD16",
            "desc": "(I)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MIN",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAX",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MIN16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAX16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MIN16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAX16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MIN16",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAX16",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MIN",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAX",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "IMIN",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "IMIN",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "IMAX",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MIN32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAX32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MIN32",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MAX32",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "ABS16",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "ABS16",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "ABS16",
            "desc": "(S)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "ABS32",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_zlog2",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_maxabs16",
            "desc": "([III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_maxabs32",
            "desc": "([III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_maxabs32",
            "desc": "([SII)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "FRAC_MUL16",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "isqrt32",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_sqrt",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_rsqrt_norm",
            "desc": "(I)I",
            "value": "82050"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_log2",
            "desc": "(I)I",
            "value": "-32767"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_exp2_frac",
            "desc": "(I)I",
            "value": "16383"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_exp2",
            "desc": "(I)I",
            "value": "65532"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_atan01",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "celt_cos_norm",
            "desc": "(I)I",
            "value": "32767"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "_celt_cos_pi_2",
            "desc": "(I)I",
            "value": "32767"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "FLOAT2INT16",
            "desc": "(F)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ROR32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_MUL",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_MLA",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMULTT",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMLATT",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMLALBB",
            "desc": "(JSS)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMULL",
            "desc": "(II)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD32_ovflw",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD32_ovflw",
            "desc": "(JJ)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SUB32_ovflw",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_MLA_ovflw",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMLABB_ovflw",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMULBB",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMULWB",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMLABB",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD64",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SUB16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SUB32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SUB64",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SAT8",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SAT16",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SAT32",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_SAT16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_SAT32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_SAT64",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SUB_SAT16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SUB_SAT32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SUB_SAT64",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_POS_SAT8",
            "desc": "(BB)B",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_POS_SAT16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_POS_SAT32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_POS_SAT64",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LSHIFT8",
            "desc": "(BI)B",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LSHIFT16",
            "desc": "(SI)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LSHIFT32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LSHIFT64",
            "desc": "(JI)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LSHIFT",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LSHIFT_ovflw",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LSHIFT_SAT32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_RSHIFT8",
            "desc": "(BI)B",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_RSHIFT16",
            "desc": "(SI)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_RSHIFT32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_RSHIFT",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_RSHIFT64",
            "desc": "(JI)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_RSHIFT_uint",
            "desc": "(JI)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_LSHIFT",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_LSHIFT32",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_RSHIFT",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_RSHIFT32",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_ADD_RSHIFT_uint",
            "desc": "(JJI)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SUB_LSHIFT32",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SUB_RSHIFT32",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_RSHIFT_ROUND",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_RSHIFT_ROUND64",
            "desc": "(JI)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_min",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_max",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_min",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_max",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SILK_CONST",
            "desc": "(FI)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_min_int",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_min_16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_min_32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_min_64",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_max_int",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_max_16",
            "desc": "(SS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_max_32",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_max_64",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LIMIT",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LIMIT",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LIMIT_int",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LIMIT_16",
            "desc": "(SSS)S",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_LIMIT_32",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_abs",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_abs_int16",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_abs_int32",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_abs_int64",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_sign",
            "desc": "(I)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_RAND",
            "desc": "(I)I",
            "value": "907633515"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMMUL",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMLAWT",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMLAWB",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMULWT",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMULBT",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMLABT",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMLAL",
            "desc": "(JII)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MatrixGetPointer",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMULWW",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SMLAWW",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_CLZ64",
            "desc": "(J)I",
            "value": "64"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_CLZ32",
            "desc": "(I)I",
            "value": "32"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_SQRT_APPROX",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "MUL32_FRAC_Q",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_lin2log",
            "desc": "(I)I",
            "value": "-128"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_log2lin",
            "desc": "(I)I",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_inner_prod_aligned_scale",
            "desc": "([S[SII)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "silk_inner_prod_self",
            "desc": "([SII)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "EC_MINI",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "EC_ILOG",
            "desc": "(J)I",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "abs",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Inlines",
            "method": "SignedByteToUnsignedInt",
            "desc": "(B)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/speaker/ALSpeaker",
            "method": "getFormat",
            "desc": "()I",
            "value": "4353"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/LocationalSoundPacketImpl$BuilderImpl",
            "method": "position",
            "desc": "(Lde/maxhenkel/voicechat/api/Position;)Lde/maxhenkel/voicechat/plugins/impl/packets/LocationalSoundPacketImpl$BuilderImpl;",
            "value": "obj#560"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/LocationalSoundPacketImpl$BuilderImpl",
            "method": "distance",
            "desc": "(F)Lde/maxhenkel/voicechat/plugins/impl/packets/LocationalSoundPacketImpl$BuilderImpl;",
            "value": "obj#561"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/LocationalSoundPacketImpl$BuilderImpl",
            "method": "distance",
            "desc": "(F)Lde/maxhenkel/voicechat/api/packets/LocationalSoundPacket$Builder;",
            "value": "obj#563"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/packets/LocationalSoundPacketImpl$BuilderImpl",
            "method": "position",
            "desc": "(Lde/maxhenkel/voicechat/api/Position;)Lde/maxhenkel/voicechat/api/packets/LocationalSoundPacket$Builder;",
            "value": "obj#564"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/events/AlcContextEventImpl",
            "method": "getContext",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/events/AlcContextEventImpl",
            "method": "isCancellable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/VoicechatClientApiImpl",
            "method": "instance",
            "desc": "()Lde/maxhenkel/voicechat/api/VoicechatClientApi;",
            "value": "obj#577"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/VoicechatClientApiImpl",
            "method": "createStaticAudioChannel",
            "desc": "(Ljava/util/UUID;)Lde/maxhenkel/voicechat/api/audiochannel/ClientStaticAudioChannel;",
            "value": "obj#633"
          },
          {
            "class": "de/maxhenkel/voicechat/plugins/impl/VoicechatClientApiImpl",
            "method": "getVolumeConfig",
            "desc": "()Lde/maxhenkel/voicechat/api/config/VolumeConfigAccessor;",
            "value": "obj#642"
          },
          {
            "class": "de/maxhenkel/voicechat/voice/client/MicThread",
            "method": "isClosed",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Laplace",
            "method": "ec_laplace_get_freq1",
            "desc": "(JI)J",
            "value": "16368"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Arrays",
            "method": "InitTwoDimensionalArrayInt",
            "desc": "(II)[[I",
            "value": "obj#693"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Arrays",
            "method": "InitTwoDimensionalArrayFloat",
            "desc": "(II)[[F",
            "value": "obj#694"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Arrays",
            "method": "InitTwoDimensionalArrayShort",
            "desc": "(II)[[S",
            "value": "obj#695"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Arrays",
            "method": "InitTwoDimensionalArrayByte",
            "desc": "(II)[[B",
            "value": "obj#696"
          },
          {
            "class": "de/maxhenkel/voicechat/concentus/Arrays",
            "method": "InitThreeDimensionalArrayByte",
            "desc": "(III)[[[B",
            "value": "obj#697"
          }
        ],
        "insns": 9502
      },
      "verdict": "partly",
      "summary": "5 of 8 listening patch sites land on a Horizon hook (62%); of 11 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "skyboxify",
      "name": "Skyboxify",
      "version": "3.4",
      "license": "GPL-3.0-with-linking-exception",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "btw/lowercase/skyboxify/SkyboxifyClient"
        },
        {
          "kind": "modmenu",
          "value": "btw/lowercase/skyboxify/config/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "skyboxify.mixins.json"
      ],
      "depends": [
        "yet_another_config_lib_v3"
      ],
      "classes": 73,
      "methods": 409,
      "sites": [
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinLevelRenderer_SkyEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$initialize",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#<init> TAIL"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinLevelRenderer_SkyEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$getLocals",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#extractRenderState HEAD"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinLevelRenderer_SkyEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$renderEndSkybox",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SkyRenderer;renderEndSky(Lcom/mojang/renderpearl/api/commands/RenderPass;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#render INVOKE"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinLevelRenderer_SkyEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$skyDiscEvent$top",
          "kind": "wrap-with-condition",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SkyRenderer;renderSkyDisc(Lcom/mojang/renderpearl/api/commands/RenderPass;Lorg/joml/Vector3fc;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinLevelRenderer_SkyEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$renderSkyboxes",
          "kind": "wrap-with-condition",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SkyRenderer;renderSunMoonAndStars(Lcom/mojang/renderpearl/api/commands/RenderPass;Lcom/mojang/blaze3d/vertex/PoseStack;FFFLnet/minecraft/world/level/MoonPhase;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinLevelRenderer_SkyEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$skyDiscEvent$bottom",
          "kind": "wrap-with-condition",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SkyRenderer;renderDarkDisc(Lcom/mojang/renderpearl/api/commands/RenderPass;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinLevelRenderer_SkyEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$allowNetherSky",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/dimension/DimensionType;skybox()Lnet/minecraft/world/level/dimension/DimensionType$Skybox;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinMinecraft_CloseBuffers",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "skyboxify$closeBuffers",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_stopping",
          "why": "the client stops"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinSkyRenderer_CelestialEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$toggleSun",
          "kind": "wrap-with-condition",
          "method": "renderSunMoonAndStars",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SkyRenderer;renderSun(Lcom/mojang/renderpearl/api/commands/RenderPass;FLcom/mojang/blaze3d/vertex/PoseStack;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinSkyRenderer_CelestialEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$toggleMoon",
          "kind": "wrap-with-condition",
          "method": "renderSunMoonAndStars",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SkyRenderer;renderMoon(Lcom/mojang/renderpearl/api/commands/RenderPass;Lnet/minecraft/world/level/MoonPhase;FLcom/mojang/blaze3d/vertex/PoseStack;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "btw/lowercase/skyboxify/mixins/MixinSkyRenderer_CelestialEvents",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "skyboxify$toggleStars",
          "kind": "wrap-with-condition",
          "method": "renderSunMoonAndStars",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SkyRenderer;renderStars(Lcom/mojang/renderpearl/api/commands/RenderPass;FLcom/mojang/blaze3d/vertex/PoseStack;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        }
      ],
      "listening": 3,
      "accessors": 0,
      "hooks": {
        "client_stopping": 1
      },
      "wanted": {
        "net/minecraft/client/renderer/SkyRenderer#<init> @TAIL": 1,
        "net/minecraft/client/renderer/SkyRenderer#extractRenderState @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/renderer/SkyRenderer#render @INVOKE": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderDarkDisc @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderMoon @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderSkyDisc @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderStars @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderSun @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderSunMoonAndStars @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/dimension/DimensionType#skybox @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientCommands",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndLevelTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "FabricClientCommandSource",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "RenderStateDataKey",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 73,
        "features": {
          "screen": 4,
          "command": 1,
          "events": 1,
          "mixin": 5
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 73,
        "methods": 249,
        "tried": 249,
        "completed": 108,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lbtw/lowercase/skyboxify/events/SkyEvents$Celestial$Type;#clone()Ljava/lang/Object;": 1,
          "[Lbtw/lowercase/skyboxify/events/SkyEvents$Disc$Type;#clone()Ljava/lang/Object;": 1,
          "[Lbtw/lowercase/skyboxify/screen/widget/Text$Alignment;#clone()Ljava/lang/Object;": 1,
          "[Lbtw/lowercase/skyboxify/skybox/SkyPart;#clone()Ljava/lang/Object;": 1,
          "[Lbtw/lowercase/skyboxify/skybox/impl/components/Blend;#clone()Ljava/lang/Object;": 1,
          "[Lbtw/lowercase/skyboxify/skybox/impl/components/Weather$Condition;#clone()Ljava/lang/Object;": 1,
          "[Lbtw/lowercase/skyboxify/utils/BlendFunction$DstFactor;#clone()Ljava/lang/Object;": 1,
          "[Lbtw/lowercase/skyboxify/utils/BlendFunction$SrcFactor;#clone()Ljava/lang/Object;": 1,
          "[Lbtw/lowercase/skyboxify/utils/FilteringMode;#clone()Ljava/lang/Object;": 1,
          "[Lbtw/lowercase/skyboxify/utils/IrisPipeline;#clone()Ljava/lang/Object;": 1,
          "btw/lowercase/skyboxify/events/Event#getClass()Ljava/lang/Class;": 1,
          "btw/lowercase/skyboxify/skybox/impl/components/Blend#name()Ljava/lang/String;": 1,
          "btw/lowercase/skyboxify/skybox/impl/components/Weather$Condition#name()Ljava/lang/String;": 1,
          "btw/lowercase/skyboxify/utils/BlendFunction$DstFactor#ordinal()I": 1,
          "btw/lowercase/skyboxify/utils/BlendFunction$SrcFactor#ordinal()I": 1,
          "btw/lowercase/skyboxify/utils/IrisPipeline#name()Ljava/lang/String;": 1,
          "com/mojang/brigadier/context/CommandContext#getSource()Ljava/lang/Object;": 2,
          "com/mojang/renderpearl/api/buffers/GpuBuffer#close()V": 1,
          "com/mojang/renderpearl/api/vertex/VertexFormat#getVertexSize()I": 1,
          "com/mojang/serialization/Codec#STRING": 1,
          "com/mojang/serialization/Codec#orElse(Ljava/lang/Object;)Lcom/mojang/serialization/Codec;": 2,
          "dev/isxander/yacl3/config/v2/api/ConfigClassHandler#instance()Ljava/lang/Object;": 1,
          "java/nio/file/Files#isDirectory(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z": 1,
          "java/util/Map#containsValue(Ljava/lang/Object;)Z": 1,
          "java/util/Properties#containsKey(Ljava/lang/Object;)Z": 3,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 7,
          "net/minecraft/client/gui/screens/Screen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/input/KeyEvent#key()I": 2,
          "net/minecraft/client/input/MouseButtonEvent#x()D": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getOverworldClockTime()J": 1,
          "net/minecraft/client/renderer/RenderPipelines#GUI_TEXTURED": 4,
          "net/minecraft/core/Holder#isBound()Z": 1,
          "net/minecraft/network/chat/Component#getString()Ljava/lang/String;": 2,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/server/packs/resources/PreparableReloadListener$SharedState#resourceManager()Lnet/minecraft/server/packs/resources/ResourceManager;": 1,
          "net/minecraft/util/ARGB#white(F)I": 3,
          "net/minecraft/util/Mth#clamp(FFF)F": 1,
          "new com/mojang/renderpearl/api/pipeline/BlendFunction": 1
        },
        "runs": [
          {
            "class": "btw/lowercase/skyboxify/utils/CommonUtils",
            "method": "isInTimeInterval",
            "desc": "(III)Z",
            "value": "1"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Range",
            "method": "contains",
            "desc": "(F)Z",
            "value": "1"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Range",
            "method": "min",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Range",
            "method": "max",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Text",
            "method": "hasShadow",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Text",
            "method": "getColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/components/Box",
            "method": "contains",
            "desc": "(II)Z",
            "value": "1"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/components/Box",
            "method": "top",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/components/Box",
            "method": "bottom",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/components/Box",
            "method": "left",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/components/Box",
            "method": "right",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/components/Box",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/components/Box",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/SimpleButton",
            "method": "builder",
            "desc": "(Lnet/minecraft/network/chat/Component;Ljava/util/function/Consumer;)Lbtw/lowercase/skyboxify/screen/widget/SimpleButton$Builder;",
            "value": "obj#61"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/UV",
            "method": "minU",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/UV",
            "method": "minV",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/UV",
            "method": "maxU",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/UV",
            "method": "maxV",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Text$Builder",
            "method": "position",
            "desc": "(II)Lbtw/lowercase/skyboxify/screen/widget/Text$Builder;",
            "value": "obj#73"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Text$Builder",
            "method": "withColor",
            "desc": "(I)Lbtw/lowercase/skyboxify/screen/widget/Text$Builder;",
            "value": "obj#74"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Text$Builder",
            "method": "withShadow",
            "desc": "(Z)Lbtw/lowercase/skyboxify/screen/widget/Text$Builder;",
            "value": "obj#75"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Text$Builder",
            "method": "aligned",
            "desc": "(Lbtw/lowercase/skyboxify/screen/widget/Text$Alignment;)Lbtw/lowercase/skyboxify/screen/widget/Text$Builder;",
            "value": "obj#76"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Text$Builder",
            "method": "centered",
            "desc": "()Lbtw/lowercase/skyboxify/screen/widget/Text$Builder;",
            "value": "obj#77"
          },
          {
            "class": "btw/lowercase/skyboxify/events/CancellableEvent",
            "method": "isCancelled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/SimpleButton$Builder",
            "method": "position",
            "desc": "(II)Lbtw/lowercase/skyboxify/screen/widget/SimpleButton$Builder;",
            "value": "obj#112"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Gidget",
            "method": "onMouseMove",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Gidget",
            "method": "onMouseClicked",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Gidget",
            "method": "onMouseScrolled",
            "desc": "(DDDD)Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Gidget",
            "method": "onKeyDown",
            "desc": "(III)Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/Gidget",
            "method": "onKeyUp",
            "desc": "(III)Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/Skybox",
            "method": "isActive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/Skyboxify",
            "method": "getGlobalEventManager",
            "desc": "()Lbtw/lowercase/skyboxify/events/EventManager;",
            "value": "obj#150"
          },
          {
            "class": "btw/lowercase/skyboxify/screen/widget/components/Scrollbar",
            "method": "getScrollY",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Biomes",
            "method": "exclusion",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/events/SkyEvents$Extraction",
            "method": "tickDelta",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Loop",
            "method": "days",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/SkyLayer",
            "method": "getAngle",
            "desc": "(Lnet/minecraft/world/level/Level;F)F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/SkyLayer",
            "method": "rotate",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/SkyLayer",
            "method": "speed",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/SkyLayer",
            "method": "transition",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/SkyLayer",
            "method": "currentAlpha",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Fade",
            "method": "getAlpha",
            "desc": "(I)F",
            "value": "1f"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Fade",
            "method": "calculateCyclicTimeDistance",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Fade",
            "method": "startIn",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Fade",
            "method": "endIn",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Fade",
            "method": "startOut",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Fade",
            "method": "endOut",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/impl/components/Fade",
            "method": "alwaysOn",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/renderer/StaticGeometry",
            "method": "indexCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/skybox/renderer/StaticGeometry",
            "method": "isClosed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "btw/lowercase/skyboxify/events/SkyEvents$SunMoonStars",
            "method": "isInNether",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 2129
      },
      "verdict": "partly",
      "summary": "1 of 3 listening patch sites land on a Horizon hook (33%); of 11 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "smoothscroll",
      "name": "Smooth Scrolling",
      "version": "3.0.2",
      "license": "gpl-3.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "io/github/smajloslovakian/smoothscroll/SmoothSc"
        },
        {
          "kind": "main",
          "value": "io/github/smajloslovakian/smoothscroll/SmoothScrolling"
        },
        {
          "kind": "modmenu",
          "value": "io/github/smajloslovakian/smoothscroll/menu/ModMenuImpl"
        }
      ],
      "mixin_configs": [
        "smoothscroll.mixins.json",
        "smoothscroll.client.mixins.json"
      ],
      "depends": [],
      "classes": 38,
      "methods": 236,
      "sites": [
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "renderWrap",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "modifyYPos",
          "kind": "modify-variable",
          "method": "extractRenderState",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "forVisibleLineWrap",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;forEachLine(Lnet/minecraft/client/gui/components/ChatComponent$AlphaCalculator;Lnet/minecraft/client/gui/components/ChatComponent$LineConsumer;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "opacity",
          "kind": "modify-variable",
          "method": "forEachLine",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "onNewMessage",
          "kind": "modify-variable",
          "method": "addMessageToDisplayQueue",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "addLinesAbove",
          "kind": "modify-variable",
          "method": "forEachLine",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "scrollbarVisibleLines",
          "kind": "modify-variable",
          "method": "extractRenderState",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "scrollbarSmooth",
          "kind": "modify-variable",
          "method": "extractRenderState",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "refreshH",
          "kind": "inject",
          "method": "refreshTrimmedMessages",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#refreshTrimmedMessages HEAD"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "refreshT",
          "kind": "inject",
          "method": "refreshTrimmedMessages",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/ChatComponent#refreshTrimmedMessages TAIL"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "unclampScroll",
          "kind": "wrap-operation",
          "method": "mouseScrolled",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Mth;clamp(DDD)D",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/ChatScreen"
          ],
          "handler": "mouseScrolledWrap",
          "kind": "wrap-operation",
          "method": "mouseScrolled",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;scrollChat(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/CommandSuggestionsMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions"
          ],
          "handler": "unclampScroll",
          "kind": "wrap-operation",
          "method": "mouseScrolled",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Mth;clamp(DDD)D",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/SuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "translate",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;get(I)Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#extractRenderState INVOKE"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/SuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "unTranslate",
          "kind": "modify-variable",
          "method": "extractRenderState",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/SuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "mouseClickedRedirectCondition",
          "kind": "redirect",
          "method": "mouseClicked",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/Rect2i;contains(II)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/SuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "addLineUnder",
          "kind": "modify-variable",
          "method": "extractRenderState",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/SuggestionsListMixin",
          "targets": [
            "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList"
          ],
          "handler": "requestCursorRectCondition",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/Rect2i;contains(II)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/CreativeScreen/CreativeModeInventoryScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen"
          ],
          "handler": "drawBackgroundWrap",
          "kind": "wrap-operation",
          "method": "extractBackground",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blit(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIFFIIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/CreativeScreen/CreativeModeInventoryScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen"
          ],
          "handler": "superMouseScrolledWrap",
          "kind": "wrap-operation",
          "method": "mouseScrolled",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/AbstractContainerScreen;mouseScrolled(DDDD)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Hotbar/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "moveSelector",
          "kind": "wrap-operation",
          "method": "extractItemHotbar",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blitSprite(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Hotbar/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "moveHotbar",
          "kind": "wrap-operation",
          "method": "extractItemHotbar",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blitSprite(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Hotbar/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "moveItems",
          "kind": "wrap-operation",
          "method": "extractItemHotbar",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;extractSlot(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IILnet/minecraft/client/DeltaTracker;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Miscellaneous/MinecraftClientMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onResReload",
          "kind": "inject",
          "method": "reloadResourcePacks",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#reloadResourcePacks HEAD"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Miscellaneous/SDLEventHandlerMixin",
          "targets": [
            "com/mojang/blaze3d/platform/SDLEventHandler"
          ],
          "handler": "handleMouseWheelEvent",
          "kind": "inject",
          "method": "handleMouseWheelEvent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/platform/SDLEventHandler#handleMouseWheelEvent HEAD"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Widgets/AbstractScrollAreaMixin",
          "targets": [
            "net/minecraft/client/gui/components/AbstractScrollArea"
          ],
          "handler": "setScrollT",
          "kind": "inject",
          "method": "setScrollAmount",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/AbstractScrollArea#setScrollAmount TAIL"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Widgets/AbstractScrollAreaMixin",
          "targets": [
            "net/minecraft/client/gui/components/AbstractScrollArea"
          ],
          "handler": "updateScroll",
          "kind": "inject",
          "method": "extractScrollbar",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/AbstractScrollArea#extractScrollbar HEAD"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Widgets/EditBoxMixin",
          "targets": [
            "net/minecraft/client/gui/components/EditBox"
          ],
          "handler": "drawBackground",
          "kind": "wrap-operation",
          "method": "extractWidgetRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blitSprite(Lcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "io/github/smajloslovakian/smoothscroll/mixin/client/Widgets/EditBoxMixin",
          "targets": [
            "net/minecraft/client/gui/components/EditBox"
          ],
          "handler": "addCharacters",
          "kind": "modify-variable",
          "method": "extractWidgetRenderState",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        }
      ],
      "listening": 7,
      "accessors": 1,
      "hooks": {
        "hud": 1
      },
      "wanted": {
        "com/mojang/blaze3d/platform/SDLEventHandler#handleMouseWheelEvent @HEAD": 1,
        "net/minecraft/client/Minecraft#reloadResourcePacks @HEAD": 1,
        "net/minecraft/client/gui/components/AbstractScrollArea#extractScrollbar @HEAD": 1,
        "net/minecraft/client/gui/components/AbstractScrollArea#setScrollAmount @TAIL": 1,
        "net/minecraft/client/gui/components/ChatComponent#refreshTrimmedMessages @HEAD": 1,
        "net/minecraft/client/gui/components/ChatComponent#refreshTrimmedMessages @TAIL": 1
      },
      "wanted_calls": {
        "net/minecraft/client/gui/GuiGraphicsExtractor#blit @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @INVOKE (wrap-operation)": 3,
        "net/minecraft/client/gui/Hud#extractSlot @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/components/ChatComponent#addMessageToDisplayQueue @STORE (modify-variable)": 1,
        "net/minecraft/client/gui/components/ChatComponent#extractRenderState @STORE (modify-variable)": 3,
        "net/minecraft/client/gui/components/ChatComponent#forEachLine @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/components/ChatComponent#forEachLine @STORE (modify-variable)": 2,
        "net/minecraft/client/gui/components/ChatComponent#scrollChat @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#extractRenderState @INVOKE": 1,
        "net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList#extractRenderState @STORE (modify-variable)": 2,
        "net/minecraft/client/gui/components/EditBox#extractWidgetRenderState @STORE (modify-variable)": 1,
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#mouseScrolled @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/Rect2i#contains @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/Rect2i#contains @INVOKE (wrap-operation)": 1,
        "net/minecraft/util/Mth#clamp @INVOKE (wrap-operation)": 2
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ObjectShare",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 38,
        "features": {
          "screen": 2,
          "mixin": 21
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 38,
        "methods": 158,
        "tried": 158,
        "completed": 79,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 11,
          "io/github/smajloslovakian/smoothscroll/mixin/client/Widgets/EditBoxMixin#isHovered()Z": 1,
          "java/lang/Runnable#run()V": 1,
          "java/util/List#forEach(Ljava/util/function/Consumer;)V": 1,
          "java/util/List#of()Ljava/util/List;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 3,
          "net/minecraft/client/Minecraft#getDeltaTracker()Lnet/minecraft/client/DeltaTracker;": 4,
          "net/minecraft/client/gui/Font#plainSubstrByWidth(Ljava/lang/String;I)Ljava/lang/String;": 1,
          "net/minecraft/client/gui/GuiGraphicsExtractor#enableScissor(IIII)V": 1,
          "net/minecraft/client/gui/GuiGraphicsExtractor#guiWidth()I": 1,
          "net/minecraft/client/gui/GuiGraphicsExtractor#pose()Lorg/joml/Matrix3x2fStack;": 1,
          "net/minecraft/client/gui/layouts/HeaderAndFooterLayout#getContentHeight()I": 1,
          "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractContents(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractSlot(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/world/inventory/Slot;II)V": 1,
          "net/minecraft/client/renderer/Rect2i#contains(II)Z": 1,
          "net/minecraft/client/renderer/Rect2i#getY()I": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 3,
          "net/minecraft/world/item/CreativeModeTab#canScroll()Z": 3,
          "new net/minecraft/client/input/MouseButtonEvent": 3,
          "new net/minecraft/client/model/geom/builders/UVPair": 3,
          "org/lwjgl/sdl/SDL_Event#wheel()Lorg/lwjgl/sdl/SDL_MouseWheelEvent;": 1
        },
        "runs": [
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "clampScroll",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "opacity",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "addLinesAbove",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "scrollbarVisibleLines",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "scrollbarSmooth",
            "desc": "(IIII)I",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "getLineHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "getScale",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "getLinesPerPage",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "isChatFocused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatComponentMixin",
            "method": "getDrawOffset",
            "desc": "()D",
            "value": "-0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/cfg/CfgValue",
            "method": "exists",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/cfg/CfgValue",
            "method": "getStep",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/cfg/CfgValue",
            "method": "getMax",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/cfg/CfgValue",
            "method": "getMin",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/cfg/CfgValue",
            "method": "enHelfStep",
            "desc": "(D)J",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/cfg/CfgValue",
            "method": "enStep",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/cfg/CfgValue",
            "method": "enMinMax",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/cfg/CfgValue",
            "method": "deMinMax",
            "desc": "(D)D",
            "value": "NaN"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/ChatScreenMixin",
            "method": "unclampScroll",
            "desc": "(DDDLcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)D",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/SuggestionsListMixin",
            "method": "mouseClickedRedirectCondition",
            "desc": "(Lnet/minecraft/client/renderer/Rect2i;II)Z",
            "value": "1"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/SuggestionsListMixin",
            "method": "addLineUnder",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/SuggestionsListMixin",
            "method": "getDrawOffset",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Widgets/EditBoxMixin",
            "method": "getInnerWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Chat/CommandSuggestionsMixin",
            "method": "unclampScroll",
            "desc": "(DDDLcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)D",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/CreativeScreen/CreativeModeInventoryScreenMixin",
            "method": "isMouseInbounds",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/SmoothSc",
            "method": "clamp",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "io/github/smajloslovakian/smoothscroll/mixin/client/Miscellaneous/TransformationMixin",
            "method": "withScissorWrap",
            "desc": "(Lnet/minecraft/client/gui/navigation/ScreenRectangle;Lcom/llamalad7/mixinextras/injector/wrapoperation/Operation;)Lnet/minecraft/client/gui/ActiveTextCollector$Parameters;",
            "value": "obj#162"
          }
        ],
        "insns": 1582
      },
      "verdict": "no",
      "summary": "only 1 of 7 listening patch sites have a hook (14%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "sodium-extra",
      "name": "Sodium Extra",
      "version": "0.9.6-beta.3+mc26.3",
      "license": "LGPLv3",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/flashyreese/mods/sodiumextra/SodiumExtraFabricClientModInitializer"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraConfig"
        }
      ],
      "mixin_configs": [
        "sodium-extra.mixins.json"
      ],
      "depends": [
        "sodium"
      ],
      "classes": 101,
      "methods": 480,
      "sites": [
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/adaptive_sync/MixinGlSurface",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlSurface"
          ],
          "handler": "addFifoRelaxedPresentMode",
          "kind": "inject",
          "method": "supportedPresentModes",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlSurface#supportedPresentModes RETURN"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/adaptive_sync/MixinGlSurface",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlSurface"
          ],
          "handler": "setSwapInterval",
          "kind": "wrap-operation",
          "method": "configure",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/sdl/SDLVideo;SDL_GL_SetSwapInterval(I)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/animation/MixinTextureAtlas",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "cycleAnimationFrames",
          "kind": "wrap-with-condition",
          "method": "cycleAnimationFrames",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/SpriteContents$AnimationState;tick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/animation/MixinTextureAtlas",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "upload",
          "kind": "wrap-operation",
          "method": "upload",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;createAnimationState(Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;I)Lnet/minecraft/client/renderer/texture/SpriteContents$AnimationState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/biome_colors/MixinBiomeColors",
          "targets": [
            "net/minecraft/client/renderer/BiomeColors"
          ],
          "handler": "grassColor",
          "kind": "inject",
          "method": "getAverageGrassColor",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/BiomeColors#getAverageGrassColor RETURN"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/biome_colors/MixinBiomeColors",
          "targets": [
            "net/minecraft/client/renderer/BiomeColors"
          ],
          "handler": "waterColor",
          "kind": "inject",
          "method": "getAverageWaterColor",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/BiomeColors#getAverageWaterColor RETURN"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/biome_colors/MixinBiomeColors",
          "targets": [
            "net/minecraft/client/renderer/BiomeColors"
          ],
          "handler": "foliageColor",
          "kind": "inject",
          "method": "getAverageFoliageColor",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/BiomeColors#getAverageFoliageColor RETURN"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/cloud/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "modifyCloudHeight",
          "kind": "wrap-operation",
          "method": "prepareTranslucents",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/CloudRenderer;prepare(ILnet/minecraft/client/CloudStatus;FILnet/minecraft/world/phys/Vec3;JF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinAtmosphericFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment"
          ],
          "handler": "postSetupFog",
          "kind": "inject",
          "method": "setupFog",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#setupFog TAIL"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinBlindnessFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/BlindnessFogEnvironment"
          ],
          "handler": "postSetupFog",
          "kind": "inject",
          "method": "setupFog",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/environment/BlindnessFogEnvironment#setupFog TAIL"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinDarknessFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/DarknessFogEnvironment"
          ],
          "handler": "postSetupFog",
          "kind": "inject",
          "method": "setupFog",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/environment/DarknessFogEnvironment#setupFog TAIL"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinFogRenderer",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "resetFogEnvironment",
          "kind": "inject",
          "method": "setupFog",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "render_fog",
          "why": "ViewportEvent.RenderFog"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinFogRenderer",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "captureFogEnvironment",
          "kind": "wrap-operation",
          "method": "setupFog",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/fog/environment/FogEnvironment;setupFog(Lnet/minecraft/client/renderer/fog/FogData;Lnet/minecraft/client/Camera;Lnet/minecraft/client/multiplayer/ClientLevel;FLnet/minecraft/client/DeltaTracker;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinFogRenderer",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "postFogSetup",
          "kind": "inject",
          "method": "setupFog",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/renderer/fog/FogData;renderDistanceEnd:F",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/FogRenderer#setupFog FIELD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinFogRenderer",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "sodiumExtra$decodeRenderDistanceForVanillaShaders",
          "kind": "modify-args",
          "method": "updateBuffer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/fog/FogRenderer;updateBuffer(Ljava/nio/ByteBuffer;ILorg/joml/Vector4f;FFFFFF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-args)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinLavaFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/LavaFogEnvironment"
          ],
          "handler": "postSetupFog",
          "kind": "inject",
          "method": "setupFog",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/environment/LavaFogEnvironment#setupFog TAIL"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinOcclusionCuller",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller"
          ],
          "handler": "sodiumExtra$allowExpandedCylindricalVerticalTraversal",
          "kind": "modify-args",
          "method": "processQueue",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller;visitNeighbors(Lnet/caffeinemc/mods/sodium/client/util/collections/WriteQueue;Lnet/caffeinemc/mods/sodium/client/render/chunk/RenderSection;IIILnet/minecraft/core/SectionPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-args)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinOcclusionCuller",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller"
          ],
          "handler": "sodiumExtra$testExpandedCylindricalDistance",
          "kind": "inject",
          "method": "testDistance",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller#testDistance HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinPowderedSnowFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/PowderedSnowFogEnvironment"
          ],
          "handler": "postSetupFog",
          "kind": "inject",
          "method": "setupFog",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/environment/PowderedSnowFogEnvironment#setupFog TAIL"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinTraversableTree",
          "targets": [
            "net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableTree"
          ],
          "handler": "sodiumExtra$testExpandedCylindricalDistance",
          "kind": "inject",
          "method": "cylindricalDistanceTest",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableTree#cylindricalDistanceTest HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fog/MixinWaterFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/WaterFogEnvironment"
          ],
          "handler": "postSetupFog",
          "kind": "inject",
          "method": "setupFog",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/environment/WaterFogEnvironment#setupFog TAIL"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/fps/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "frame",
          "why": "RenderFrameEvent.Pre: once a frame, before it draws"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/gui/MixinDebugOptionsScreen",
          "targets": [
            "net/minecraft/client/gui/screens/debug/DebugOptionsScreen$OptionEntry"
          ],
          "handler": "redirectExtractContent",
          "kind": "inject",
          "method": "extractContent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/debug/DebugOptionsScreen$OptionEntry#extractContent HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/gui/MixinGui",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#extractRenderState INVOKE"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/gui/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onRunTick",
          "kind": "inject",
          "method": "runTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "frame",
          "why": "RenderFrameEvent.Pre: once a frame, before it draws"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/instant_sneak/MixinCamera",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "noLerp",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Camera#tick HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/light_updates/MixinLevelLightEngine",
          "targets": [
            "net/minecraft/world/level/lighting/LevelLightEngine"
          ],
          "handler": "checkBlock",
          "kind": "inject",
          "method": "checkBlock",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/lighting/LevelLightEngine#checkBlock HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/light_updates/MixinLevelLightEngine",
          "targets": [
            "net/minecraft/world/level/lighting/LevelLightEngine"
          ],
          "handler": "doLightUpdates",
          "kind": "inject",
          "method": "runLightUpdates",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/lighting/LevelLightEngine#runLightUpdates RETURN"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/panini_projection/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "sodiumExtra$getWorldTarget",
          "kind": "inject",
          "method": "mainRenderTarget",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#mainRenderTarget HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/panini_projection/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "sodiumExtra$applyPaniniProjection",
          "kind": "inject",
          "method": "render3dHud",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render3dHud HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/panini_projection/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "sodiumExtra$closePaniniTargets",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#close HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/panini_projection/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "sodiumExtra$resizePaniniTargets",
          "kind": "inject",
          "method": "resize",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#resize HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/panini_projection/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "sodiumExtra$resetPaniniTargets",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#setLevel HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/panini_projection/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "sodiumExtra$getWorldOutlineTarget",
          "kind": "wrap-operation",
          "method": "render",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;entityOutlineTarget:Lcom/mojang/blaze3d/pipeline/RenderTarget;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/panini_projection/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "sodiumExtra$getWorldOutlineTarget",
          "kind": "wrap-operation",
          "method": "executeOutline",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;entityOutlineTarget:Lcom/mojang/blaze3d/pipeline/RenderTarget;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/panini_projection/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "sodiumExtra$deferOutlineEffect",
          "kind": "wrap-operation",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/PostChain;addToFrame(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;IILnet/minecraft/client/renderer/PostChain$TargetBundle;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/panini_projection/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "sodiumExtra$getWorldTarget",
          "kind": "wrap-operation",
          "method": "render",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/renderer/SkyRenderer;renderTarget:Lcom/mojang/blaze3d/pipeline/RenderTarget;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/particle/MixinClientLevel",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "addBlockBreakParticles",
          "kind": "inject",
          "method": "addDestroyBlockEffect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#addDestroyBlockEffect HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/particle/MixinClientLevel",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "addBlockBreakingParticles",
          "kind": "inject",
          "method": "addBreakingParticles",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#addBreakingParticles HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/particle/MixinClientLevel",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "addRainSplashParticle",
          "kind": "wrap-with-condition",
          "method": "tickWeatherEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/particle/MixinFireworkParticle",
          "targets": [
            "net/minecraft/client/particle/FireworkParticles$Starter"
          ],
          "handler": "addExplosionParticle",
          "kind": "inject",
          "method": "createParticle",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/FireworkParticles$Starter#createParticle HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/particle/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/WeatherEffectRenderer"
          ],
          "handler": "renderWeather",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/WeatherEffectRenderer#render HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/particle/MixinParticleEngine",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "addParticle",
          "kind": "inject",
          "method": "createParticle",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#createParticle HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/prevent_shaders/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "preventShaders",
          "kind": "inject",
          "method": "toggleSpectatorPostEffect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#toggleSpectatorPostEffect HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/prevent_shaders/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "dontLoadShader",
          "kind": "inject",
          "method": "setSpectatedEntityPostEffect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#setSpectatedEntityPostEffect HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/reduce_resolution_on_mac/MixinWindow",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "reduceWindowPixelDensity",
          "kind": "modify-arg",
          "method": "createWindow",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/renderpearl/api/device/GpuBackend;createWindow(Ljava/lang/String;IIJ)J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/render/block/entity/MixinBeaconRenderer",
          "targets": [
            "net/minecraft/client/renderer/blockentity/BeaconRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/BeaconRenderer#submit HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/render/block/entity/MixinEnchantingTableBlockEntityRenderer",
          "targets": [
            "net/minecraft/client/renderer/blockentity/EnchantTableRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/EnchantTableRenderer#submit HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/render/block/entity/MixinPistonBlockEntityRenderer",
          "targets": [
            "net/minecraft/client/renderer/blockentity/PistonHeadRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/blockentity/PistonHeadRenderer#submit HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/render/entity/MixinItemFrameEntityRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/ItemFrameRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "submit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/entity/EntityRenderer;submit(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/ItemFrameRenderer#submit INVOKE"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/render/entity/MixinItemFrameEntityRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/ItemFrameRenderer"
          ],
          "handler": "hasLabel",
          "kind": "inject",
          "method": "shouldShowName",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/ItemFrameRenderer#shouldShowName HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/render/entity/MixinLivingEntityRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/LivingEntityRenderer#submit HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/render/entity/MixinLivingEntityRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "shouldShowName",
          "kind": "inject",
          "method": "shouldShowName",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/LivingEntityRenderer#shouldShowName HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/render/entity/MixinPaintingEntityRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/PaintingRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "submit",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/PaintingRenderer#submit HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/sky/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "redirectRenderSkyDisc",
          "kind": "inject",
          "method": "renderSkyDisc",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderSkyDisc HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/sky/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "preRenderEndSky",
          "kind": "inject",
          "method": "renderEndSky",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderEndSky HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/sky/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "renderSun",
          "kind": "inject",
          "method": "renderSun",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderSun HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/sky/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "renderMoon",
          "kind": "inject",
          "method": "renderMoon",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderMoon HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/sky/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "renderStars",
          "kind": "inject",
          "method": "renderStars",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderStars HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/sky/MixinSkyRenderer",
          "targets": [
            "net/minecraft/client/renderer/SkyRenderer"
          ],
          "handler": "renderSunriseAndSunset",
          "kind": "inject",
          "method": "renderSunriseAndSunset",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SkyRenderer#renderSunriseAndSunset HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/sky_colors/MixinAtmosphericFogEnvironment",
          "targets": [
            "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment"
          ],
          "handler": "modifySkyColor",
          "kind": "modify-arg",
          "method": "getBaseColor",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment;applyWeatherDarken(Lorg/joml/Vector3fc;FF)Lorg/joml/Vector3fc;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/steady_debug_hud/MixinDebugScreenOverlay",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "preRender",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/steady_debug_hud/MixinDebugScreenOverlay",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "sodiumExtra$wrapDrawLeftText",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/DebugScreenOverlay;extractLines(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Ljava/util/List;ZI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/steady_debug_hud/MixinDebugScreenOverlay",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "sodiumExtra$wrapDrawRightText",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/DebugScreenOverlay;extractLines(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Ljava/util/List;ZI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/toasts/MixinToastInstance",
          "targets": [
            "net/minecraft/client/gui/components/toasts/ToastManager$ToastInstance"
          ],
          "handler": "skipDisabledToast",
          "kind": "inject",
          "method": "update",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/toasts/ToastManager$ToastInstance#update HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/toasts/MixinToastManager",
          "targets": [
            "net/minecraft/client/gui/components/toasts/ToastManager"
          ],
          "handler": "goodByeToasts",
          "kind": "inject",
          "method": "addToast",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/toasts/ToastManager#addToast HEAD"
        },
        {
          "mixin": "me/flashyreese/mods/sodiumextra/mixin/toasts/MixinToastManager",
          "targets": [
            "net/minecraft/client/gui/components/toasts/ToastManager"
          ],
          "handler": "removeDisabledQueuedToasts",
          "kind": "inject",
          "method": "lambda$update$1",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/toasts/ToastManager#lambda$update$1 HEAD"
        }
      ],
      "listening": 48,
      "accessors": 6,
      "hooks": {
        "frame": 2,
        "render_fog": 1
      },
      "wanted": {
        "com/mojang/renderpearl/backend/opengl/GlSurface#supportedPresentModes @RETURN": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller#testDistance @HEAD": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableTree#cylindricalDistanceTest @HEAD": 1,
        "net/minecraft/client/Camera#tick @HEAD": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @HEAD": 1,
        "net/minecraft/client/gui/components/toasts/ToastManager#addToast @HEAD": 1,
        "net/minecraft/client/gui/components/toasts/ToastManager#lambda$update$1 @HEAD": 1,
        "net/minecraft/client/gui/components/toasts/ToastManager$ToastInstance#update @HEAD": 1,
        "net/minecraft/client/gui/screens/debug/DebugOptionsScreen$OptionEntry#extractContent @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#addBreakingParticles @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#addDestroyBlockEffect @HEAD": 1,
        "net/minecraft/client/particle/FireworkParticles$Starter#createParticle @HEAD": 1,
        "net/minecraft/client/particle/ParticleEngine#createParticle @HEAD": 1,
        "net/minecraft/client/renderer/BiomeColors#getAverageFoliageColor @RETURN": 1,
        "net/minecraft/client/renderer/BiomeColors#getAverageGrassColor @RETURN": 1,
        "net/minecraft/client/renderer/BiomeColors#getAverageWaterColor @RETURN": 1,
        "net/minecraft/client/renderer/GameRenderer#close @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#mainRenderTarget @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#render3dHud @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#resize @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#setLevel @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#setSpectatedEntityPostEffect @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#toggleSpectatorPostEffect @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderEndSky @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderMoon @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderSkyDisc @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderStars @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderSun @HEAD": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderSunriseAndSunset @HEAD": 1,
        "net/minecraft/client/renderer/WeatherEffectRenderer#render @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/BeaconRenderer#submit @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/EnchantTableRenderer#submit @HEAD": 1,
        "net/minecraft/client/renderer/blockentity/PistonHeadRenderer#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/ItemFrameRenderer#shouldShowName @HEAD": 1,
        "net/minecraft/client/renderer/entity/LivingEntityRenderer#shouldShowName @HEAD": 1,
        "net/minecraft/client/renderer/entity/LivingEntityRenderer#submit @HEAD": 1,
        "net/minecraft/client/renderer/entity/PaintingRenderer#submit @HEAD": 1,
        "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#setupFog @TAIL": 1,
        "net/minecraft/client/renderer/fog/environment/BlindnessFogEnvironment#setupFog @TAIL": 1,
        "net/minecraft/client/renderer/fog/environment/DarknessFogEnvironment#setupFog @TAIL": 1,
        "net/minecraft/client/renderer/fog/environment/LavaFogEnvironment#setupFog @TAIL": 1,
        "net/minecraft/client/renderer/fog/environment/PowderedSnowFogEnvironment#setupFog @TAIL": 1,
        "net/minecraft/client/renderer/fog/environment/WaterFogEnvironment#setupFog @TAIL": 1,
        "net/minecraft/world/level/lighting/LevelLightEngine#checkBlock @HEAD": 1,
        "net/minecraft/world/level/lighting/LevelLightEngine#runLightUpdates @RETURN": 1
      },
      "wanted_calls": {
        "com/mojang/renderpearl/api/device/GpuBackend#createWindow @INVOKE (modify-arg)": 1,
        "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller#visitNeighbors @INVOKE (modify-args)": 1,
        "net/minecraft/client/gui/Gui#extractRenderState @INVOKE": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractLines @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/multiplayer/ClientLevel#addParticle @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/CloudRenderer#prepare @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/LevelRenderer#entityOutlineTarget:Lcom/mojang/blaze3d/pipeline/RenderTarget; @FIELD (wrap-operation)": 2,
        "net/minecraft/client/renderer/PostChain#addToFrame @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/SkyRenderer#renderTarget:Lcom/mojang/blaze3d/pipeline/RenderTarget; @FIELD (wrap-operation)": 1,
        "net/minecraft/client/renderer/entity/ItemFrameRenderer#submit @INVOKE": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#setupFog @FIELD": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#updateBuffer @INVOKE (modify-args)": 1,
        "net/minecraft/client/renderer/fog/environment/AtmosphericFogEnvironment#applyWeatherDarken @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/fog/environment/FogEnvironment#setupFog @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#tick @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/renderer/texture/TextureAtlasSprite#createAnimationState @INVOKE (wrap-operation)": 1,
        "org/lwjgl/sdl/SDLVideo#SDL_GL_SetSwapInterval @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 101,
        "features": {
          "mixin": 48
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 101,
        "methods": 238,
        "tried": 238,
        "completed": 90,
        "handlers_tried": 3,
        "handlers_completed": 1,
        "missing": {
          "[Lme/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$FogShapeMode;#clone()Ljava/lang/Object;": 1,
          "[Lme/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$OverlayCorner;#clone()Ljava/lang/Object;": 1,
          "[Lme/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$TextContrast;#clone()Ljava/lang/Object;": 1,
          "[Lme/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$VerticalSyncOption;#clone()Ljava/lang/Object;": 2,
          "[Lme/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ProtectedFogType;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/ImmutableMap#copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap;": 1,
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/mojang/blaze3d/buffers/Std140Builder#onStack(Lorg/lwjgl/system/MemoryStack;I)Lcom/mojang/blaze3d/buffers/Std140Builder;": 1,
          "com/mojang/blaze3d/pipeline/RenderTarget#getColorTexture()Lcom/mojang/renderpearl/api/textures/GpuTexture;": 1,
          "com/mojang/renderpearl/api/device/GpuSurface$Configuration#presentMode()Lcom/mojang/renderpearl/api/device/GpuSurface$PresentMode;": 1,
          "java/io/File#toPath()Ljava/nio/file/Path;": 1,
          "java/lang/Float#floatToRawIntBits(F)I": 1,
          "java/lang/Float#isFinite(F)Z": 5,
          "java/nio/charset/StandardCharsets#UTF_8": 1,
          "java/nio/file/Path#getFileName()Ljava/nio/file/Path;": 2,
          "java/nio/file/StandardOpenOption#READ": 1,
          "java/nio/file/StandardOpenOption#WRITE": 1,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 1,
          "java/util/Deque#addLast(Ljava/lang/Object;)V": 1,
          "java/util/Deque#isEmpty()Z": 3,
          "java/util/Deque#stream()Ljava/util/stream/Stream;": 1,
          "java/util/EnumSet#of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;": 1,
          "java/util/Locale#ROOT": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ProtectedFogType#ordinal()I": 1,
          "net/caffeinemc/mods/sodium/api/config/ConfigState#readBooleanOption(Lnet/minecraft/resources/Identifier;)Z": 2,
          "net/caffeinemc/mods/sodium/api/config/structure/StatefulOptionBuilder#setEnabledProvider(Ljava/util/function/Function;[Lnet/minecraft/resources/Identifier;)Lnet/caffeinemc/mods/sodium/api/config/structure/OptionBuilder;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 8,
          "net/minecraft/util/Util#getPlatform()Lnet/minecraft/util/Util$OS;": 1,
          "net/minecraft/world/level/Level#dimensionTypeRegistration()Lnet/minecraft/core/Holder;": 1,
          "new com/google/gson/JsonPrimitive": 2,
          "new it/unimi/dsi/fastutil/objects/Object2BooleanLinkedOpenHashMap": 3,
          "new it/unimi/dsi/fastutil/objects/Object2ObjectArrayMap": 2,
          "new it/unimi/dsi/fastutil/objects/ObjectArrayList": 4,
          "new it/unimi/dsi/fastutil/objects/ObjectLinkedOpenHashSet": 1,
          "new net/caffeinemc/mods/sodium/api/config/option/Range": 2,
          "org/lwjgl/system/MemoryStack#stackPush()Lorg/lwjgl/system/MemoryStack;": 1
        },
        "runs": [
          {
            "class": "me/flashyreese/mods/sodiumextra/client/FrameCounter$FrameSample",
            "method": "timestamp",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/FrameCounter$FrameSample",
            "method": "deltaNanos",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$FogSettings",
            "method": "getAtmospheric",
            "desc": "(Lnet/minecraft/resources/Identifier;)Lme/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$AtmosphericFogSettings;",
            "value": "obj#25"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$FogSettings",
            "method": "getDimensionFogDistance",
            "desc": "(Lnet/minecraft/resources/Identifier;)I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$FogSettings",
            "method": "getDimensionFogStart",
            "desc": "(Lnet/minecraft/resources/Identifier;)I",
            "value": "100"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$FogSettings",
            "method": "getDimensionCloudFogPercent",
            "desc": "(Lnet/minecraft/resources/Identifier;)I",
            "value": "100"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$FogSettings",
            "method": "getDimensionOrFallback",
            "desc": "(Lnet/minecraft/resources/Identifier;)Lme/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$AtmosphericFogSettings;",
            "value": "obj#35"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$FogSettings",
            "method": "createInheritedAtmospheric",
            "desc": "()Lme/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$AtmosphericFogSettings;",
            "value": "obj#40"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$FogSettings",
            "method": "getAtmosphericFallback",
            "desc": "()Lme/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$AtmosphericFogSettings;",
            "value": "obj#42"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ExpandedCylindricalCull",
            "method": "distanceLimit",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ExpandedCylindricalCull",
            "method": "horizontalLimit",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ExpandedCylindricalCull",
            "method": "verticalLimit",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ProtectedFogRule",
            "method": "clamp",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ProtectedFogRule",
            "method": "enabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ProtectedFogRule",
            "method": "maxDistanceBlocks",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ProtectedFogRule",
            "method": "allowOff",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ProtectedGameplayFogPolicy",
            "method": "clamp",
            "desc": "(Lme/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper$ProtectedFogType;I)I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/common/util/Utils",
            "method": "packLight",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/common/util/Utils",
            "method": "packPosition",
            "desc": "(II)J",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/common/util/Utils",
            "method": "unpackIntegers",
            "desc": "(J)[I",
            "value": "obj#66"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/mixin/animation/MixinTextureAtlas",
            "method": "cycleAnimationFrames",
            "desc": "(Lnet/minecraft/client/renderer/texture/SpriteContents$AnimationState;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/gui/SodiumExtraDebugEntryLightUpdates",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$VerticalSyncOption",
            "method": "isSupported",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/render/PaniniProjection",
            "method": "isRenderingWorld",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/render/PaniniProjection",
            "method": "worldScale",
            "desc": "()F",
            "value": "1f"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/render/PaniniProjection",
            "method": "matches",
            "desc": "(Lcom/mojang/blaze3d/pipeline/RenderTarget;Lcom/mojang/blaze3d/pipeline/RenderTarget;II)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/render/PaniniProjection",
            "method": "hasValidWindow",
            "desc": "(Lnet/minecraft/client/renderer/state/WindowRenderState;)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/gui/SodiumExtraDebugEntryFps",
            "method": "isAllowed",
            "desc": "(Z)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/caffeineconfig/CaffeineConfig$Builder",
            "method": "withSettingsKey",
            "desc": "(Ljava/lang/String;)Lnet/caffeinemc/caffeineconfig/CaffeineConfig$Builder;",
            "value": "obj#112"
          },
          {
            "class": "net/caffeinemc/caffeineconfig/CaffeineConfig$Builder",
            "method": "withInfoUrl",
            "desc": "(Ljava/lang/String;)Lnet/caffeinemc/caffeineconfig/CaffeineConfig$Builder;",
            "value": "obj#113"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/FrameCounter",
            "method": "getInstance",
            "desc": "()Lme/flashyreese/mods/sodiumextra/client/FrameCounter;",
            "value": "obj#124"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/FrameCounter",
            "method": "getSmoothFps",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/FrameCounter",
            "method": "getAverageFps",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/FrameCounter",
            "method": "getOnePercentLowFps",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/FrameCounter",
            "method": "getPointOnePercentLowFps",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper",
            "method": "getEnd",
            "desc": "(I)F",
            "value": "16f"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper",
            "method": "disablesFog",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper",
            "method": "expandCylindricalCullDistance",
            "desc": "(FFFF)F",
            "value": "0f"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper",
            "method": "isExpandedCylindricalCullDistance",
            "desc": "(F)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper",
            "method": "testExpandedCylindricalCullDistance",
            "desc": "(FFF)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper",
            "method": "isCylindricalRenderDistanceEncoded",
            "desc": "(FF)Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/fog/FogDistanceHelper",
            "method": "getIntAccessor",
            "desc": "(Ljava/lang/Object;Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/caffeineconfig/CaffeineConfig",
            "method": "getOptionCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/caffeineconfig/Option",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/caffeineconfig/Option",
            "method": "isEnabledRecursive",
            "desc": "(Lnet/caffeinemc/caffeineconfig/CaffeineConfig;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/caffeineconfig/Option",
            "method": "isOverridden",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/caffeineconfig/Option",
            "method": "isUserDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/caffeineconfig/Option",
            "method": "isOverrideable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/caffeineconfig/Option",
            "method": "isModDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/compat/IrisCompat",
            "method": "isRenderingShadowPass",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/compat/IrisCompat",
            "method": "isShaderPackInUse",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions$ParticleSettings",
            "method": "isParticleEnabled",
            "desc": "(Lnet/minecraft/resources/Identifier;)Z",
            "value": "1"
          }
        ],
        "insns": 2612
      },
      "verdict": "no",
      "summary": "only 3 of 48 listening patch sites have a hook (6%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "sodium",
      "name": "Sodium",
      "version": "0.9.2+mc26.2",
      "license": "Polyform-Shield-1.0.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "net/caffeinemc/mods/sodium/fabric/SodiumFabricMod"
        },
        {
          "kind": "preLaunch",
          "value": "net/caffeinemc/mods/sodium/fabric/SodiumPreLaunch"
        }
      ],
      "mixin_configs": [
        "sodium-common.mixins.json",
        "sodium-frapi.mixins.json",
        "sodium-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 798,
      "methods": 5068,
      "sites": [
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/model/quad/BakedQuadMixin",
          "targets": [
            "net/minecraft/client/resources/model/geometry/BakedQuad"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/geometry/BakedQuad#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/world/biome/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/biome/Biome#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/world/biome/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "getGrassColor",
          "kind": "overwrite",
          "method": "getGrassColor",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/world/biome/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "getFoliageColor",
          "kind": "overwrite",
          "method": "getFoliageColor",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/GlDeviceMixin",
          "targets": [
            "com/mojang/blaze3d/opengl/GlDevice"
          ],
          "handler": "sodium$disableBufferStorage",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/opengl/BufferStorage;create(Lorg/lwjgl/opengl/GLCapabilities;Ljava/util/Set;)Lcom/mojang/blaze3d/opengl/BufferStorage;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/opengl/GlDevice#<init> INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "postInit",
          "kind": "inject",
          "method": "onGameLoadFinished",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#onGameLoadFinished HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "postResourceReload",
          "kind": "inject",
          "method": "reloadResourcePacks",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#reloadResourcePacks TAIL"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "registerSodiumIcon",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/LoadingOverlay;registerTextures(Lnet/minecraft/client/renderer/texture/TextureManager;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "setFullscreen",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;<init>(Ljava/io/File;Lcom/mojang/datafixers/DataFixer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init> INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/StagedVertexBufferMixin",
          "targets": [
            "net/minecraft/client/renderer/StagedVertexBuffer$GpuBufferPool"
          ],
          "handler": "sodium$ignore",
          "kind": "redirect",
          "method": "acquire",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/StagedVertexBuffer$GpuBufferPool;tryRecycleBuffers()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/StagedVertexBufferMixin",
          "targets": [
            "net/minecraft/client/renderer/StagedVertexBuffer$GpuBufferPool"
          ],
          "handler": "sodium$onEndFrame",
          "kind": "inject",
          "method": "endFrame",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/StagedVertexBuffer$GpuBufferPool#endFrame RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/VulkanPipelineMixin",
          "targets": [
            "com/mojang/blaze3d/vulkan/VulkanRenderPipeline"
          ],
          "handler": "sodium$fixPipelineLayout",
          "kind": "wrap-operation",
          "method": "compile",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/vulkan/VkPipelineLayoutCreateInfo;pSetLayouts(Ljava/nio/LongBuffer;)Lorg/lwjgl/vulkan/VkPipelineLayoutCreateInfo;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/opengl/GlBackend"
          ],
          "handler": "setAdditionalWindowHints",
          "kind": "inject",
          "method": "setWindowHints",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/opengl/GlBackend#setWindowHints RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/gui/LevelLoadTrackerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/LevelLoadTracker$WaitingForPlayerChunk"
          ],
          "handler": "redirect$getPlayerBlockPosition",
          "kind": "redirect",
          "method": "isReady",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/LocalPlayer;blockPosition()Lnet/minecraft/core/BlockPos;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/model/colors/BlockColorsMixin",
          "targets": [
            "net/minecraft/client/color/block/BlockColors"
          ],
          "handler": "preRegisterColorProvider",
          "kind": "inject",
          "method": "register",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/color/block/BlockColors#register HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/TextureAtlasMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "sodium$deleteSpriteFinder",
          "kind": "inject",
          "method": "upload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureAtlas#upload RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/VertexFormatMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/VertexFormat"
          ],
          "handler": "afterInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/vertex/VertexFormat#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/frustum/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "editMatrix",
          "kind": "inject",
          "method": "createProjectionMatrixForCulling",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Camera#createProjectionMatrixForCulling RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/SheetedDecalTextureGeneratorMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/SpriteCoordinateExpanderMixin",
          "targets": [
            "net/minecraft/client/renderer/SpriteCoordinateExpander"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SpriteCoordinateExpander#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/ChunkSectionsToRenderMixin",
          "targets": [
            "net/minecraft/client/renderer/chunk/ChunkSectionsToRender"
          ],
          "handler": "sodium$renderGroup",
          "kind": "inject",
          "method": "renderGroup",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/chunk/ChunkSectionsToRender#renderGroup HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/FogRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "sodium$storeFogParameters",
          "kind": "inject",
          "method": "setupFog",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/FogRenderer#setupFog RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "sodium$setProjection",
          "kind": "wrap-operation",
          "method": "renderLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/ProjectionMatrixBuffer;getBuffer(Lorg/joml/Matrix4f;)Lcom/mojang/blaze3d/buffers/GpuBufferSlice;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "sodium$setRenderer",
          "kind": "inject",
          "method": "extract",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extract HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "sodium$setRenderer",
          "kind": "inject",
          "method": "setLevel",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#setLevel RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "extractVisibleBlockEntities",
          "kind": "inject",
          "method": "extractVisibleBlockEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleBlockEntities HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "replaceBlockEntityIteration",
          "kind": "inject",
          "method": "iterateVisibleBlockEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#iterateVisibleBlockEntities HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "setBlocksDirty",
          "kind": "overwrite",
          "method": "setBlocksDirty",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "setSectionDirtyWithNeighbors",
          "kind": "overwrite",
          "method": "setSectionDirtyWithNeighbors",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "setBlockDirty",
          "kind": "overwrite",
          "method": "setBlockDirty",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "setSectionDirty",
          "kind": "overwrite",
          "method": "setSectionDirty",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "cullTerrain",
          "kind": "inject",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SectionOcclusionGraph;consumeFrustumUpdate()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extract INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "sodium$cancel",
          "kind": "redirect",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/extract/LevelExtractor;applyFrustum(Lnet/minecraft/client/renderer/culling/Frustum;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "countRenderedSections",
          "kind": "overwrite",
          "method": "countRenderedSections",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "nullifyBuiltChunkStorage",
          "kind": "redirect",
          "method": "invalidateCompiledGeometry",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Options;getEffectiveRenderDistance()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "hasRenderedAllSections",
          "kind": "overwrite",
          "method": "hasRenderedAllSections",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "onTerrainUpdateScheduled",
          "kind": "inject",
          "method": "resetLevelRenderData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#resetLevelRenderData RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "sodium$endFrame",
          "kind": "inject",
          "method": "endFrame",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#endFrame RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "prepareChunkRenders",
          "kind": "overwrite",
          "method": "prepareChunkRenders",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "getRenderState",
          "kind": "wrap-operation",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;prepareChunkRenders(Lorg/joml/Matrix4fc;)Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "isSectionCompiledAndVisible",
          "kind": "overwrite",
          "method": "isSectionCompiledAndVisible",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "sodium$replace",
          "kind": "inject",
          "method": "invalidateCompiledGeometry",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#invalidateCompiledGeometry HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "setFilterMode",
          "kind": "redirect",
          "method": "lambda$addMainPass$0",
          "at": "FIELD",
          "at_target": "Lcom/mojang/blaze3d/textures/FilterMode;LINEAR:Lcom/mojang/blaze3d/textures/FilterMode;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/ParticleFeatureRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer"
          ],
          "handler": "sodium$bindDefaultUniforms",
          "kind": "inject",
          "method": "executeGroup",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/systems/RenderSystem;bindDefaultUniforms(Lcom/mojang/blaze3d/systems/RenderPass;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/RenderBuffersMixin",
          "targets": [
            "net/minecraft/client/renderer/RenderBuffers"
          ],
          "handler": "sodium$doNotAllocateChunks",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SectionBufferBuilderPool;allocate(I)Lnet/minecraft/client/renderer/SectionBufferBuilderPool;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/ViewAreaMixin",
          "targets": [
            "net/minecraft/client/renderer/ViewArea"
          ],
          "handler": "sodium$safelyReturn",
          "kind": "inject",
          "method": "lambda$new$0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/ViewArea#lambda$new$0 HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/biome/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "captureSeed",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "onChunkUnloaded",
          "kind": "inject",
          "method": "drop",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientChunkCache$Storage;drop(ILnet/minecraft/world/level/chunk/LevelChunk;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#drop INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "onChunkLoaded",
          "kind": "inject",
          "method": "replaceWithPacketData",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;onChunkLoaded(Lnet/minecraft/world/level/ChunkPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "sodium$trackChunkUnload",
          "kind": "inject",
          "method": "unload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#unload HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onLightDataReceived",
          "kind": "inject",
          "method": "applyLightData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onChunkUnloadPacket",
          "kind": "inject",
          "method": "handleForgetLevelChunk",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/console/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/render/GuiRenderer;render()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugEntryMemoryMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugEntryMemory"
          ],
          "handler": "sodium$addOffHeap",
          "kind": "inject",
          "method": "display",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugEntryMemory#display RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenEntryListMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntryList"
          ],
          "handler": "injectLoadProfile",
          "kind": "inject",
          "method": "resetToProfile",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntryList#resetToProfile HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenEntryListMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntryList"
          ],
          "handler": "injectSodiumSettings",
          "kind": "inject",
          "method": "rebuildCurrentList",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenOverlayInsertMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "sodium$insertFpsPercentiles",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/DebugScreenOverlay;extractLines(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Ljava/util/List;Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenOverlayLogFrameMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "sodium$captureFrameDuration",
          "kind": "inject",
          "method": "logFrameDuration",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#logFrameDuration HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "sodium$renderBufferArenaOverlay",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/MinecraftRenderFrameMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "sodium$updatePercentileCache",
          "kind": "inject",
          "method": "renderFrame",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/Minecraft;fps:I",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#renderFrame FIELD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/entity/CubeMixin",
          "targets": [
            "net/minecraft/client/model/geom/ModelPart$Cube"
          ],
          "handler": "onInit",
          "kind": "redirect",
          "method": "<init>",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/model/geom/ModelPart$Cube;minX:F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/entity/CubeMixin",
          "targets": [
            "net/minecraft/client/model/geom/ModelPart$Cube"
          ],
          "handler": "onCompile",
          "kind": "inject",
          "method": "compile",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/PoseStack$Pose;pose()Lorg/joml/Matrix4f;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/geom/ModelPart$Cube#compile INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/entity/ModelPartMixin",
          "targets": [
            "net/minecraft/client/model/geom/ModelPart"
          ],
          "handler": "translateAndRotate",
          "kind": "overwrite",
          "method": "translateAndRotate",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/entity/cull/EntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderer"
          ],
          "handler": "preShouldRender",
          "kind": "wrap-operation",
          "method": "shouldRender",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/culling/Frustum;isVisible(Lnet/minecraft/world/phys/AABB;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/entity/shadows/ShadowFeatureRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/feature/ShadowFeatureRenderer"
          ],
          "handler": "renderShadowPartFast",
          "kind": "inject",
          "method": "prepare",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/ShadowFeatureRenderer#prepare HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/gui/font/BakedGlyphMixin",
          "targets": [
            "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph"
          ],
          "handler": "drawFast",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#render HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/gui/font/BakedGlyphMixin",
          "targets": [
            "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph"
          ],
          "handler": "drawEffectFast",
          "kind": "inject",
          "method": "buildEffect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#buildEffect HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getApproximateNearest",
          "kind": "overwrite",
          "method": "getApproximateNearest",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/intrinsics/BufferBuilderMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "redirectInt",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/system/MemoryUtil;memPutInt(JI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/intrinsics/BufferBuilderMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "redirectFloat",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/system/MemoryUtil;memPutFloat(JF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/intrinsics/BufferBuilderMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "redirectShort",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/system/MemoryUtil;memPutShort(JS)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/intrinsics/BufferBuilderMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "redirectByte",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/system/MemoryUtil;memPutByte(JB)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/sorting/StagedVertexBufferMixin",
          "targets": [
            "net/minecraft/client/renderer/StagedVertexBuffer"
          ],
          "handler": "sodium$selectClosestSortingPoints",
          "kind": "wrap-operation",
          "method": "decodeSortingPoints",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/MeshData;decodeQuadCentroids(Ljava/nio/ByteBuffer;ILcom/mojang/blaze3d/vertex/VertexFormat;Lcom/mojang/blaze3d/vertex/CompactVectorArray;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/sorting/VertexSortingMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/VertexSorting"
          ],
          "handler": "byDistance",
          "kind": "overwrite",
          "method": "byDistance",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/sorting/VertexSortingMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/VertexSorting"
          ],
          "handler": "byDistance",
          "kind": "overwrite",
          "method": "byDistance",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/matrix_stack/VertexConsumerMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/VertexConsumer"
          ],
          "handler": "addVertex",
          "kind": "overwrite",
          "method": "addVertex",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/matrix_stack/VertexConsumerMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/VertexConsumer"
          ],
          "handler": "setNormal",
          "kind": "overwrite",
          "method": "setNormal",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/particle/QuadParticleRenderStateMixin",
          "targets": [
            "net/minecraft/client/renderer/state/level/QuadParticleRenderState"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "renderRotatedQuad",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/state/level/QuadParticleRenderState#renderRotatedQuad HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/viewport/GlStateManagerMixin",
          "targets": [
            "com/mojang/blaze3d/opengl/GlStateManager"
          ],
          "handler": "skipRedundantViewport",
          "kind": "wrap-with-condition",
          "method": "_viewport",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/opengl/GL33C;glViewport(IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/world/clouds/CloudRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/CloudRenderer"
          ],
          "handler": "buildMesh",
          "kind": "overwrite",
          "method": "buildMesh",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/world/sky/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "preRenderSky",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;hasEffect(Lnet/minecraft/core/Holder;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/AtlasGlyphProviderMixin",
          "targets": [
            "net/minecraft/client/gui/font/AtlasGlyphProvider$Instance"
          ],
          "handler": "preRenderSprite",
          "kind": "inject",
          "method": "renderSprite",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/AtlasGlyphProvider$Instance#renderSprite HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/AtlasManagerMixin",
          "targets": [
            "net/minecraft/client/resources/model/sprite/AtlasManager"
          ],
          "handler": "sodium$catchUsedSprites",
          "kind": "inject",
          "method": "get",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/sprite/AtlasManager#get RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/FluidStateModelSetMixin",
          "targets": [
            "net/minecraft/client/renderer/block/FluidStateModelSet"
          ],
          "handler": "sodium$catchUsedSprites",
          "kind": "inject",
          "method": "get",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/block/FluidStateModelSet#get RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/GuiGraphicsMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "preDrawSprite",
          "kind": "inject",
          "method": "blitSprite",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/GuiGraphicsMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "preDrawSprite",
          "kind": "inject",
          "method": "blitSprite",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/ModelBlockRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/block/ModelBlockRenderer"
          ],
          "handler": "preRenderQuad",
          "kind": "inject",
          "method": "putQuadWithTint",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/block/ModelBlockRenderer#putQuadWithTint HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsTickerMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteContents$AnimationState"
          ],
          "handler": "assignParent",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteContents$AnimationState#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsTickerMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteContents$AnimationState"
          ],
          "handler": "captureActiveState",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteContents$AnimationState#tick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsTickerMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteContents$AnimationState"
          ],
          "handler": "preTick",
          "kind": "inject",
          "method": "needsToDraw",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteContents$AnimationState#needsToDraw HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/TextureAtlasMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "preReturnSprite",
          "kind": "inject",
          "method": "getSprite",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureAtlas#getSprite RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/TextureAtlasSpriteMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlasSprite"
          ],
          "handler": "markSpriteAsActive",
          "kind": "inject",
          "method": "wrap",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureAtlasSprite#wrap HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/TextureSheetParticleMixin",
          "targets": [
            "net/minecraft/client/particle/SingleQuadParticle"
          ],
          "handler": "afterSetSprite",
          "kind": "inject",
          "method": "setSprite",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/SingleQuadParticle#setSprite RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/TextureSheetParticleMixin",
          "targets": [
            "net/minecraft/client/particle/SingleQuadParticle"
          ],
          "handler": "sodium$tickSprite",
          "kind": "inject",
          "method": "extractRotatedQuad",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/SingleQuadParticle#extractRotatedQuad HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/scan/TextureAtlasSpriteMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlasSprite"
          ],
          "handler": "hookTickerInstantiation",
          "kind": "wrap-operation",
          "method": "createAnimationState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/SpriteContents;createAnimationState(Lcom/mojang/blaze3d/buffers/GpuBufferSlice;I)Lnet/minecraft/client/renderer/texture/SpriteContents$AnimationState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/workarounds/context_creation/GlSurfaceMixin",
          "targets": [
            "com/mojang/blaze3d/opengl/GlSurface"
          ],
          "handler": "preSwapBuffers",
          "kind": "inject",
          "method": "present",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/opengl/GlSurface#present RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/workarounds/context_creation/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "wrapGlfwCreateWindow",
          "kind": "redirect",
          "method": "createGlfwWindow",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/glfw/GLFW;glfwCreateWindow(IILjava/lang/CharSequence;JJ)J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/workarounds/context_creation/WindowMixin",
          "targets": [
            "com/mojang/blaze3d/platform/Window"
          ],
          "handler": "wrapGlfwCreateWindowForge",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/neoforged/fml/loading/ImmediateWindowHandler;setupMinecraftWindow(Ljava/util/function/IntSupplier;Ljava/util/function/IntSupplier;Ljava/util/function/Supplier;Ljava/util/function/LongSupplier;)J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/workarounds/window_minimized_state/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "redirectWindowMinimized",
          "kind": "redirect",
          "method": "extractWindow",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;isMinimized()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/frapi/FeatureRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/feature/FeatureRenderDispatcher"
          ],
          "handler": "registerExtendedFeatureRenderers",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/FeatureRenderDispatcher#<init> RETURN"
        }
      ],
      "listening": 51,
      "accessors": 17,
      "hooks": {
        "net_from_server": 2
      },
      "wanted": {
        "com/mojang/blaze3d/opengl/GlBackend#setWindowHints @RETURN": 1,
        "com/mojang/blaze3d/opengl/GlSurface#present @RETURN": 1,
        "com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator#<init> @RETURN": 1,
        "com/mojang/blaze3d/vertex/VertexFormat#<init> @RETURN": 1,
        "net/minecraft/client/Camera#createProjectionMatrixForCulling @RETURN": 1,
        "net/minecraft/client/Minecraft#onGameLoadFinished @HEAD": 1,
        "net/minecraft/client/Minecraft#reloadResourcePacks @TAIL": 1,
        "net/minecraft/client/color/block/BlockColors#register @HEAD": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @HEAD": 2,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @RETURN": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#logFrameDuration @HEAD": 1,
        "net/minecraft/client/gui/components/debug/DebugEntryMemory#display @RETURN": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList @HEAD": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntryList#resetToProfile @HEAD": 1,
        "net/minecraft/client/gui/font/AtlasGlyphProvider$Instance#renderSprite @HEAD": 1,
        "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#buildEffect @HEAD": 1,
        "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#render @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#<init> @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientLevel#unload @HEAD": 1,
        "net/minecraft/client/particle/SingleQuadParticle#extractRotatedQuad @HEAD": 1,
        "net/minecraft/client/particle/SingleQuadParticle#setSprite @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#<init> @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#endFrame @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#invalidateCompiledGeometry @HEAD": 1,
        "net/minecraft/client/renderer/LevelRenderer#resetLevelRenderData @RETURN": 1,
        "net/minecraft/client/renderer/SpriteCoordinateExpander#<init> @RETURN": 1,
        "net/minecraft/client/renderer/StagedVertexBuffer$GpuBufferPool#endFrame @RETURN": 1,
        "net/minecraft/client/renderer/ViewArea#lambda$new$0 @HEAD": 1,
        "net/minecraft/client/renderer/block/FluidStateModelSet#get @RETURN": 1,
        "net/minecraft/client/renderer/block/ModelBlockRenderer#putQuadWithTint @HEAD": 1,
        "net/minecraft/client/renderer/chunk/ChunkSectionsToRender#renderGroup @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extract @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleBlockEntities @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#iterateVisibleBlockEntities @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setLevel @RETURN": 1,
        "net/minecraft/client/renderer/feature/FeatureRenderDispatcher#<init> @RETURN": 1,
        "net/minecraft/client/renderer/feature/ShadowFeatureRenderer#prepare @HEAD": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#setupFog @RETURN": 1,
        "net/minecraft/client/renderer/state/level/QuadParticleRenderState#renderRotatedQuad @HEAD": 1,
        "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#<init> @RETURN": 1,
        "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#needsToDraw @HEAD": 1,
        "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#tick @HEAD": 1,
        "net/minecraft/client/renderer/texture/TextureAtlas#getSprite @RETURN": 1,
        "net/minecraft/client/renderer/texture/TextureAtlas#upload @RETURN": 1,
        "net/minecraft/client/renderer/texture/TextureAtlasSprite#wrap @HEAD": 1,
        "net/minecraft/client/resources/model/geometry/BakedQuad#<init> @RETURN": 1,
        "net/minecraft/client/resources/model/sprite/AtlasManager#get @RETURN": 1,
        "net/minecraft/world/level/biome/Biome#<init> @RETURN": 1
      },
      "wanted_calls": {
        "com/mojang/blaze3d/opengl/GlDevice#<init> @INVOKE": 1,
        "com/mojang/blaze3d/platform/Window#isMinimized @INVOKE (redirect)": 1,
        "com/mojang/blaze3d/textures/FilterMode#LINEAR:Lcom/mojang/blaze3d/textures/FilterMode; @FIELD (redirect)": 1,
        "com/mojang/blaze3d/vertex/MeshData#decodeQuadCentroids @INVOKE (wrap-operation)": 1,
        "com/mojang/blaze3d/vertex/VertexConsumer#addVertex @OVERWRITE": 1,
        "com/mojang/blaze3d/vertex/VertexConsumer#setNormal @OVERWRITE": 1,
        "com/mojang/blaze3d/vertex/VertexSorting#byDistance @OVERWRITE": 2,
        "net/minecraft/client/Minecraft#<init> @INVOKE": 1,
        "net/minecraft/client/Minecraft#renderFrame @FIELD": 1,
        "net/minecraft/client/Options#getEffectiveRenderDistance @INVOKE (redirect)": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @INVOKE": 1,
        "net/minecraft/client/gui/screens/LoadingOverlay#registerTextures @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/model/geom/ModelPart#translateAndRotate @OVERWRITE": 1,
        "net/minecraft/client/model/geom/ModelPart$Cube#compile @INVOKE": 1,
        "net/minecraft/client/model/geom/ModelPart$Cube#minX:F @FIELD (redirect)": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#drop @INVOKE": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @INVOKE": 1,
        "net/minecraft/client/player/LocalPlayer#blockPosition @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/CloudRenderer#buildMesh @OVERWRITE": 1,
        "net/minecraft/client/renderer/GameRenderer#render @INVOKE": 1,
        "net/minecraft/client/renderer/LevelRenderer#hasRenderedAllSections @OVERWRITE": 1,
        "net/minecraft/client/renderer/LevelRenderer#isSectionCompiledAndVisible @OVERWRITE": 1,
        "net/minecraft/client/renderer/LevelRenderer#prepareChunkRenders @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/LevelRenderer#prepareChunkRenders @OVERWRITE": 1,
        "net/minecraft/client/renderer/ProjectionMatrixBuffer#getBuffer @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/SectionBufferBuilderPool#allocate @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/StagedVertexBuffer$GpuBufferPool#tryRecycleBuffers @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/culling/Frustum#isVisible @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#applyFrustum @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#countRenderedSections @OVERWRITE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extract @INVOKE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setBlockDirty @OVERWRITE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setBlocksDirty @OVERWRITE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setSectionDirty @OVERWRITE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setSectionDirtyWithNeighbors @OVERWRITE": 1,
        "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup @INVOKE": 1,
        "net/minecraft/client/renderer/texture/SpriteContents#createAnimationState @INVOKE (wrap-operation)": 1,
        "net/minecraft/core/Direction#getApproximateNearest @OVERWRITE": 1,
        "net/minecraft/world/entity/LivingEntity#hasEffect @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/biome/Biome#getFoliageColor @OVERWRITE": 1,
        "net/minecraft/world/level/biome/Biome#getGrassColor @OVERWRITE": 1,
        "net/neoforged/fml/loading/ImmediateWindowHandler#setupMinecraftWindow @INVOKE (wrap-operation)": 1,
        "org/lwjgl/glfw/GLFW#glfwCreateWindow @INVOKE (redirect)": 1,
        "org/lwjgl/opengl/GL33C#glViewport @INVOKE (wrap-with-condition)": 1,
        "org/lwjgl/system/MemoryUtil#memPutByte @INVOKE (redirect)": 1,
        "org/lwjgl/system/MemoryUtil#memPutFloat @INVOKE (redirect)": 1,
        "org/lwjgl/system/MemoryUtil#memPutInt @INVOKE (redirect)": 1,
        "org/lwjgl/system/MemoryUtil#memPutShort @INVOKE (redirect)": 1,
        "org/lwjgl/vulkan/VkPipelineLayoutCreateInfo#pSetLayouts @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "QuadEmitter",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "BlockColorRegistry",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "BlockTintsFactory",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ExtendedBlockModelSubmit",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ExtendedItemSubmit",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FluidRendering",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FluidRendering$DefaultRenderer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FluidRenderingRegistry",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Mesh",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "MeshView",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "QuadAtlas",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "QuadTransform",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "QuadView",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Renderer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ShadeMode",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "TriState",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "AltModelBlockRenderer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricBlockGetter",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricBlockStateModel",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FluidRenderHandler",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MutableMesh",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MutableQuadView",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PreLaunchEntrypoint",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 798,
        "features": {
          "screen": 2,
          "renderer": 6,
          "mixin": 87
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 798,
        "methods": 3223,
        "tried": 600,
        "completed": 203,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "[Lnet/caffeinemc/mods/sodium/client/gpu/device/backend/DrawBackend;#clone()Ljava/lang/Object;": 1,
          "[Lnet/caffeinemc/mods/sodium/client/model/light/LightMode;#clone()Ljava/lang/Object;": 1,
          "[Lnet/caffeinemc/mods/sodium/client/model/quad/properties/ModelQuadOrientation;#clone()Ljava/lang/Object;": 1,
          "[Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/MeshResultSize$SectionCategory;#clone()Ljava/lang/Object;": 1,
          "[Lnet/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/SortBehavior$SortMode;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/ImmutableList#iterator()Lcom/google/common/collect/UnmodifiableIterator;": 1,
          "com/mojang/blaze3d/buffers/GpuBufferSlice$MappedView#close()V": 2,
          "com/mojang/blaze3d/vertex/PoseStack#scale(FFF)V": 1,
          "com/mojang/blaze3d/vertex/PoseStack$Pose#normal()Lorg/joml/Matrix3f;": 1,
          "com/mojang/blaze3d/vertex/VertexConsumer#putBakedQuad(Lcom/mojang/blaze3d/vertex/PoseStack$Pose;Lnet/minecraft/client/resources/model/geometry/BakedQuad;Lcom/mojang/blaze3d/vertex/QuadInstance;)V": 1,
          "com/mojang/blaze3d/vertex/VertexFormat#getVertexSize()I": 1,
          "it/unimi/dsi/fastutil/ints/IntArrayList#size()I": 2,
          "it/unimi/dsi/fastutil/ints/IntArrays#quickSortIndirect([I[I)V": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceMap#get(J)Ljava/lang/Object;": 3,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceMap#put(JLjava/lang/Object;)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceMap#remove(J)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceMap#size()I": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceMap#values()Lit/unimi/dsi/fastutil/objects/ReferenceCollection;": 1,
          "it/unimi/dsi/fastutil/objects/Object2ReferenceMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/ObjectArrayList#pop()Ljava/lang/Object;": 1,
          "java/lang/Character#toLowerCase(C)C": 1,
          "java/lang/Float#isNaN(F)Z": 1,
          "java/lang/Integer#toUnsignedLong(I)J": 2,
          "java/nio/IntBuffer#put(I)Ljava/nio/IntBuffer;": 2,
          "java/util/BitSet#clear()V": 1,
          "java/util/BitSet#clear(I)V": 1,
          "java/util/BitSet#nextClearBit(I)I": 1,
          "java/util/Collections#emptyIterator()Ljava/util/Iterator;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 1,
          "java/util/List#of(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#of()Ljava/util/Set;": 1,
          "java/util/Set#of([Ljava/lang/Object;)Ljava/util/Set;": 2,
          "java/util/concurrent/ConcurrentLinkedDeque#poll()Ljava/lang/Object;": 1,
          "java/util/concurrent/Semaphore#availablePermits()I": 2,
          "java/util/concurrent/Semaphore#release(I)V": 1,
          "java/util/concurrent/Semaphore#tryAcquire()Z": 1,
          "java/util/concurrent/atomic/AtomicBoolean#get()Z": 2,
          "java/util/concurrent/atomic/AtomicBoolean#set(Z)V": 1,
          "java/util/concurrent/atomic/AtomicLong#get()J": 1,
          "java/util/concurrent/locks/StampedLock#readLock()J": 1,
          "java/util/concurrent/locks/StampedLock#writeLock()J": 1,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 2,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 1,
          "net/caffeinemc/mods/sodium/client/gpu/device/backend/DrawBackend#ordinal()I": 1,
          "net/caffeinemc/mods/sodium/client/gui/prompt/ScreenPromptable#getDimensions()Lnet/caffeinemc/mods/sodium/client/util/Dim2i;": 1,
          "net/caffeinemc/mods/sodium/client/gui/widgets/AbstractWidget#getX()I": 2,
          "net/caffeinemc/mods/sodium/client/gui/widgets/AbstractWidget#getY()I": 1,
          "net/caffeinemc/mods/sodium/client/gui/widgets/OptionListWidget$HeaderWidget#getWidth()I": 1,
          "net/caffeinemc/mods/sodium/client/model/quad/BakedQuadView#getX(I)F": 2,
          "net/caffeinemc/mods/sodium/client/model/quad/properties/ModelQuadFacing#ordinal()I": 1,
          "net/caffeinemc/mods/sodium/client/platform/windows/api/d3dkmt/D3DKMTAdapterInfoStruct$Buffer#position()I": 1,
          "net/caffeinemc/mods/sodium/client/render/chunk/lists/VisibleChunkCollector#createRenderLists(Lnet/caffeinemc/mods/sodium/client/render/viewport/Viewport;)Lnet/caffeinemc/mods/sodium/client/render/chunk/lists/SortedRenderLists;": 1,
          "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/SortBehavior#ordinal()I": 1,
          "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/bsp_tree/UpdatedQuadsList#iterator()Lit/unimi/dsi/fastutil/objects/ObjectListIterator;": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/QuadAtlas#BLOCK": 2,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/QuadTransform#transform(Lnet/fabricmc/fabric/api/client/renderer/v1/mesh/MutableQuadView;)Z": 2,
          "net/fabricmc/fabric/api/client/renderer/v1/mesh/ShadeMode#ENHANCED": 2,
          "net/fabricmc/fabric/api/client/renderer/v1/render/submit/ExtendedBlockModelSubmit#TYPE": 1,
          "net/fabricmc/fabric/api/client/renderer/v1/render/submit/ExtendedItemSubmit#outlineColor()I": 1,
          "net/fabricmc/fabric/api/util/TriState#ordinal()I": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 4,
          "net/minecraft/client/gui/screens/Screen#removeWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)V": 1,
          "net/minecraft/client/input/KeyEvent#isEscape()Z": 1,
          "net/minecraft/client/renderer/BiomeColors#getAverageGrassColor(Lnet/minecraft/client/renderer/block/BlockAndTintGetter;Lnet/minecraft/core/BlockPos;)I": 1,
          "net/minecraft/client/renderer/block/dispatch/BlockStateModelPart#useAmbientOcclusion()Z": 1,
          "net/minecraft/client/renderer/chunk/ChunkSectionLayer#pipeline()Lcom/mojang/blaze3d/pipeline/RenderPipeline;": 1,
          "net/minecraft/client/renderer/chunk/VisibilitySet#visibilityBetween(Lnet/minecraft/core/Direction;Lnet/minecraft/core/Direction;)Z": 1,
          "net/minecraft/client/renderer/texture/TextureAtlasSprite#getU0()F": 1,
          "net/minecraft/core/BlockPos$MutableBlockPos#setWithOffset(Lnet/minecraft/core/Vec3i;Lnet/minecraft/core/Direction;)Lnet/minecraft/core/BlockPos$MutableBlockPos;": 1,
          "net/minecraft/core/Direction#ordinal()I": 3,
          "net/minecraft/core/SectionPos#asLong()J": 2,
          "net/minecraft/core/SectionPos#asLong(III)J": 1,
          "net/minecraft/core/SectionPos#equals(Ljava/lang/Object;)Z": 1,
          "net/minecraft/core/SectionPos#getY()I": 1,
          "net/minecraft/util/Mth#clamp(FFF)F": 3,
          "net/minecraft/util/Mth#floor(F)I": 1,
          "net/minecraft/world/level/Level#getHeight()I": 1,
          "new it/unimi/dsi/fastutil/objects/Object2ReferenceOpenHashMap": 4,
          "new net/minecraft/client/renderer/MappableRingBuffer": 1,
          "new org/joml/Vector2f": 1,
          "new org/joml/Vector3f": 2,
          "org/apache/commons/lang3/ArrayUtils#swap([III)V": 1,
          "org/joml/Vector2f#x()F": 1,
          "org/joml/Vector3dc#equals(Ljava/lang/Object;)Z": 1,
          "org/joml/Vector3f#set(Lorg/joml/Vector3fc;)Lorg/joml/Vector3f;": 1,
          "org/joml/Vector3fc#dot(Lorg/joml/Vector3fc;)F": 1,
          "org/lwjgl/system/JNI#callPI(JJ)I": 1,
          "org/lwjgl/system/MemoryStack#stackPush()Lorg/lwjgl/system/MemoryStack;": 4,
          "org/lwjgl/system/MemoryUtil#memAddress(Ljava/nio/ByteBuffer;)J": 1,
          "org/lwjgl/system/MemoryUtil#memAlignedAlloc(II)Ljava/nio/ByteBuffer;": 1,
          "org/lwjgl/system/MemoryUtil#memAlignedFree(Ljava/nio/ByteBuffer;)V": 1,
          "org/lwjgl/system/MemoryUtil#memGetAddress(J)J": 1,
          "org/lwjgl/system/MemoryUtil#memLengthUTF16(Ljava/lang/CharSequence;Z)I": 1,
          "org/lwjgl/system/MemoryUtil#nmemAlignedFree(J)V": 2,
          "org/lwjgl/vulkan/VkDrawIndexedIndirectCommand#SIZEOF": 1,
          "org/lwjgl/vulkan/VkMultiDrawIndexedInfoEXT#SIZEOF": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#getReturnValue()Ljava/lang/Object;": 1,
          "sun/misc/Unsafe#getFloat(J)F": 5,
          "sun/misc/Unsafe#getInt(J)I": 1,
          "sun/misc/Unsafe#putByte(JB)V": 1,
          "sun/misc/Unsafe#putFloat(JF)V": 3,
          "sun/misc/Unsafe#putInt(JI)V": 1,
          "sun/misc/Unsafe#putShort(JS)V": 1
        },
        "runs": [
          {
            "class": "net/caffeinemc/mods/sodium/client/platform/windows/api/Imm32",
            "method": "isImeLanguage",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/interval_tree/IntervalTree",
            "method": "query",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/util/interval_tree/Interval;)Ljava/util/Set;",
            "value": "obj#9"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/interval_tree/IntervalTree",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/interval_tree/IntervalTree",
            "method": "contains",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/console/ConsoleRenderer$ActiveMessage",
            "method": "duration",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/console/ConsoleRenderer$ActiveMessage",
            "method": "timestamp",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/features/render/viewport/GlStateManagerMixin",
            "method": "skipRedundantViewport",
            "desc": "(IIII)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/frapi/wrapper/MutableQuadViewWrapper",
            "method": "itemRenderType",
            "desc": "(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lnet/fabricmc/fabric/api/client/renderer/v1/mesh/QuadEmitter;",
            "value": "obj#43"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/frapi/wrapper/MutableQuadViewWrapper",
            "method": "itemRenderType",
            "desc": "(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lnet/fabricmc/fabric/api/client/renderer/v1/mesh/MutableQuadView;",
            "value": "obj#75"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FrameTimeStatistics",
            "method": "rankFromTop",
            "desc": "(DI)I",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FrameTimeStatistics",
            "method": "popDownTo",
            "desc": "([JII)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/widgets/DonationButtonWidget",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/widgets/PageListWidget$HeaderEntryWidget",
            "method": "renderIcon",
            "desc": "(Lnet/minecraft/client/gui/GuiGraphicsExtractor;I)I",
            "value": "8"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/sorting/VertexSortingMixin",
            "method": "modifyVertexSorting",
            "desc": "(Lcom/mojang/blaze3d/vertex/VertexSorting;)Lcom/mojang/blaze3d/vertex/VertexSorting;",
            "value": "obj#114"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/sorting/VertexSortingMixin",
            "method": "byDistance",
            "desc": "(FFF)Lcom/mojang/blaze3d/vertex/VertexSorting;",
            "value": "obj#115"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/compatibility/workarounds/nvidia/NvidiaDriverVersion",
            "method": "major",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/compatibility/workarounds/nvidia/NvidiaDriverVersion",
            "method": "minor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/widgets/KeyBoundButtonWidget",
            "method": "tryActivateShortcut",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/console/message/Message",
            "method": "translated",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/console/message/Message",
            "method": "duration",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller",
            "method": "testDistance",
            "desc": "(FFF)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller",
            "method": "nearestToZero",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/IgnoringSectionRenderDispatcher",
            "method": "isQueueEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/IgnoringSectionRenderDispatcher",
            "method": "getCompileQueueSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/IgnoringSectionRenderDispatcher",
            "method": "getFreeBufferCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/platform/windows/api/d3dkmt/D3DKMT",
            "method": "isSupportedAdapterType",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/BooleanOptionBuilderImpl",
            "method": "setEnabled",
            "desc": "(Z)Lnet/caffeinemc/mods/sodium/api/config/structure/BooleanOptionBuilder;",
            "value": "obj#188"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/BooleanOptionBuilderImpl",
            "method": "setControlHiddenWhenDisabled",
            "desc": "(Z)Lnet/caffeinemc/mods/sodium/api/config/structure/BooleanOptionBuilder;",
            "value": "obj#191"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/BooleanOptionBuilderImpl",
            "method": "setApplyHook",
            "desc": "(Ljava/util/function/Consumer;)Lnet/caffeinemc/mods/sodium/api/config/structure/BooleanOptionBuilder;",
            "value": "obj#194"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/BooleanOptionBuilderImpl",
            "method": "setApplyHook",
            "desc": "(Ljava/util/function/Consumer;)Lnet/caffeinemc/mods/sodium/api/config/structure/StatefulOptionBuilder;",
            "value": "obj#195"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/BooleanOptionBuilderImpl",
            "method": "setControlHiddenWhenDisabled",
            "desc": "(Z)Lnet/caffeinemc/mods/sodium/api/config/structure/StatefulOptionBuilder;",
            "value": "obj#196"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/BooleanOptionBuilderImpl",
            "method": "setEnabled",
            "desc": "(Z)Lnet/caffeinemc/mods/sodium/api/config/structure/StatefulOptionBuilder;",
            "value": "obj#198"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/BooleanOptionBuilderImpl",
            "method": "setEnabled",
            "desc": "(Z)Lnet/caffeinemc/mods/sodium/api/config/structure/OptionBuilder;",
            "value": "obj#212"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/widgets/OptionListWidget$HeaderWidget",
            "method": "rightReservedWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/widgets/OptionListWidget$HeaderWidget",
            "method": "mouseClicked",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/FullscreenResolutionRange",
            "method": "min",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/FullscreenResolutionRange",
            "method": "step",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/FullscreenResolutionRange",
            "method": "isValueValid",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/immediate/model/ModelCuboid",
            "method": "shouldDrawFace",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/AbstractBlockRenderContext",
            "method": "isFaceCulled",
            "desc": "(Lnet/minecraft/core/Direction;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "getLimitX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "getLimitY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "containsCursor",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "getCenterX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "getCenterY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "inset",
            "desc": "(IIII)Lnet/caffeinemc/mods/sodium/client/util/Dim2i;",
            "value": "obj#271"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "insetX",
            "desc": "(I)Lnet/caffeinemc/mods/sodium/client/util/Dim2i;",
            "value": "obj#273"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "insetY",
            "desc": "(I)Lnet/caffeinemc/mods/sodium/client/util/Dim2i;",
            "value": "obj#275"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "insetLeft",
            "desc": "(I)Lnet/caffeinemc/mods/sodium/client/util/Dim2i;",
            "value": "obj#277"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "insetRight",
            "desc": "(I)Lnet/caffeinemc/mods/sodium/client/util/Dim2i;",
            "value": "obj#279"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "insetTop",
            "desc": "(I)Lnet/caffeinemc/mods/sodium/client/util/Dim2i;",
            "value": "obj#281"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "insetBottom",
            "desc": "(I)Lnet/caffeinemc/mods/sodium/client/util/Dim2i;",
            "value": "obj#283"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/Dim2i",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/bsp_tree/BSPSortState",
            "method": "isOutOfBounds",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/GraphDirectionSet",
            "method": "of",
            "desc": "(I)I",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/GraphDirectionSet",
            "method": "contains",
            "desc": "(II)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "red",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "green",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "blue",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "alpha",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "environmentalStart",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "environmentalEnd",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "renderStart",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "renderEnd",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "cullDistance",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gpu/arena/staging/MappedStagingBuffer$FencedMemoryRegion",
            "method": "length",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/structure/ExternalButtonOption",
            "method": "createControl",
            "desc": "()Lnet/caffeinemc/mods/sodium/client/gui/options/control/Control;",
            "value": "obj#327"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/structure/Option",
            "method": "hasChanged",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/structure/Option",
            "method": "applyChanges",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/data/TopoGraphSorting",
            "method": "visibilityWithSeparator",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/quad/TQuad;Lnet/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/quad/TQuad;Lit/unimi/dsi/fastutil/objects/Object2ReferenceMap;Lorg/joml/Vector3fc;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/sorting/RadixSort",
            "method": "extractDigit",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/vertex/VertexFormatOffsetCache",
            "method": "getCacheSize",
            "desc": "()I",
            "value": "6"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gpu/device/batch/MultiDrawBatch",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gpu/device/batch/MultiDrawBatch",
            "method": "getMaxElementCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/terrain/TerrainRenderPass",
            "method": "isTranslucent",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/terrain/TerrainRenderPass",
            "method": "supportsFragmentDiscard",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobCollector",
            "method": "hasBudgetRemaining",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobCollector",
            "method": "getSubmittedTaskCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/immediate/model/ImprovedItemModelBuilderBase$SideFace",
            "method": "min",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/immediate/model/ImprovedItemModelBuilderBase$SideFace",
            "method": "max",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/immediate/model/ImprovedItemModelBuilderBase$SideFace",
            "method": "anchor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/structure/BooleanOption",
            "method": "createControl",
            "desc": "()Lnet/caffeinemc/mods/sodium/client/gui/options/control/Control;",
            "value": "obj#379"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gpu/device/context/VKIndirectContext",
            "method": "addCommand",
            "desc": "(I)J",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/Colors",
            "method": "constrainColorHSV",
            "desc": "(IFF)I",
            "value": "-16777216"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/bsp_tree/UpdatedQuadsList",
            "method": "getMeshQuadCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/bsp_tree/UpdatedQuadsList",
            "method": "getIndexQuadCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/structure/ModOptions",
            "method": "iconMonochrome",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Average1DEstimator$Average",
            "method": "predict",
            "desc": "(Ljava/lang/Void;)Ljava/lang/Long;",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Average1DEstimator$Average",
            "method": "predict",
            "desc": "(Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/VisibilityEncoding",
            "method": "bit",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/VisibilityEncoding",
            "method": "getConnections",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/VisibilityEncoding",
            "method": "foldOutgoingDirections",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline",
            "method": "clamp",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline",
            "method": "getLightMapCoord",
            "desc": "(FF)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/SpriteCoordinateExpanderMixin",
            "method": "canUseIntrinsics",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/data/TranslucentData",
            "method": "meshesWereModified",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/data/TranslucentData",
            "method": "quadCountToIndexBytes",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/data/TranslucentData",
            "method": "quadCountToVertexCount",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/trigger/GeometryPlanes",
            "method": "getAlignedOrCreate",
            "desc": "()[Lnet/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/trigger/NormalPlanes;",
            "value": "obj#552"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/OptionGroupBuilderImpl",
            "method": "setName",
            "desc": "(Lnet/minecraft/network/chat/Component;)Lnet/caffeinemc/mods/sodium/api/config/structure/OptionGroupBuilder;",
            "value": "obj#571"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/MixinOption",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/MixinOption",
            "method": "isOverridden",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/MixinOption",
            "method": "isUserDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/MixinOption",
            "method": "isModDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/world/biome/LevelBiomeSlice$BiasMap",
            "method": "getX",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/world/biome/LevelBiomeSlice$BiasMap",
            "method": "getY",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/world/biome/LevelBiomeSlice$BiasMap",
            "method": "getZ",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/TranslucentGeometryCollector",
            "method": "isSplittingQuads",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 6132
      },
      "verdict": "no",
      "summary": "only 2 of 51 listening patch sites have a hook (3%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "sspb",
      "name": "Sodium Shadowy Path Blocks",
      "version": "8.0.0",
      "license": "LGPLv3",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "rynnavinx/sspb/fabric/client/SSPBFabricClientMod"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "rynnavinx/sspb/common/client/options/SSPBConfigBuilder"
        }
      ],
      "mixin_configs": [
        "sspb.mixins.json"
      ],
      "depends": [
        "sodium"
      ],
      "classes": 9,
      "methods": 37,
      "sites": [
        {
          "mixin": "rynnavinx/sspb/common/mixin/sodium/SmoothLightPipelineMixin",
          "targets": [
            "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline"
          ],
          "handler": "modifyApplyInsetPartialFaceVertexN1d",
          "kind": "modify-variable",
          "method": "applyInsetPartialFaceVertex",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "rynnavinx/sspb/common/mixin/sodium/SmoothLightPipelineMixin",
          "targets": [
            "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline"
          ],
          "handler": "modifyApplyInsetPartialFaceVertexN2d",
          "kind": "modify-variable",
          "method": "applyInsetPartialFaceVertex",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "rynnavinx/sspb/common/mixin/sodium/SmoothLightPipelineMixin",
          "targets": [
            "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline"
          ],
          "handler": "modifyGatherInsetFaceW1",
          "kind": "modify-variable",
          "method": "gatherInsetFace",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "rynnavinx/sspb/common/mixin/sodium/SmoothLightPipelineMixin",
          "targets": [
            "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline"
          ],
          "handler": "injectVanillaAoCalcForPathBlocks",
          "kind": "inject",
          "method": "calculate",
          "at": "INVOKE",
          "at_target": "Lnet/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline;applyParallelFace(Lnet/caffeinemc/mods/sodium/client/model/light/smooth/AoNeighborInfo;Lnet/caffeinemc/mods/sodium/client/model/quad/ModelQuadView;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;Lnet/caffeinemc/mods/sodium/client/model/light/data/QuadLightData;Lnet/minecraft/core/Direction;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline#calculate INVOKE"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline#applyInsetPartialFaceVertex @HEAD (modify-variable)": 2,
        "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline#calculate @INVOKE": 1,
        "net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline#gatherInsetFace @STORE (modify-variable)": 1
      },
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 9,
        "features": {
          "mixin": 1
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 9,
        "methods": 16,
        "tried": 16,
        "completed": 8,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "java/lang/reflect/Method#getName()Ljava/lang/String;": 1,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 1,
          "net/caffeinemc/mods/sodium/client/model/light/data/LightDataAccess#getLevel()Lnet/minecraft/client/renderer/block/BlockAndTintGetter;": 2,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1
        },
        "runs": [
          {
            "class": "rynnavinx/sspb/common/client/util/MethodSignature",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "rynnavinx/sspb/common/mixin/sodium/SmoothLightPipelineMixin",
            "method": "modifyApplyInsetPartialFaceVertexN2d",
            "desc": "(FLnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;F)F",
            "value": "1f"
          },
          {
            "class": "rynnavinx/sspb/common/client/options/SSPBOptions",
            "method": "getShadowyness",
            "desc": "()F",
            "value": "0.85f"
          },
          {
            "class": "rynnavinx/sspb/common/client/options/SSPBOptions",
            "method": "getShadowynessCompliment",
            "desc": "()F",
            "value": "0.15f"
          }
        ],
        "insns": 159
      },
      "verdict": "no",
      "summary": "none of its 4 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "sodium",
      "name": "Sodium",
      "version": "0.9.3-beta.4+mc26.3",
      "license": "Polyform-Shield-1.0.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "net/caffeinemc/mods/sodium/fabric/SodiumFabricMod"
        },
        {
          "kind": "preLaunch",
          "value": "net/caffeinemc/mods/sodium/fabric/SodiumPreLaunch"
        }
      ],
      "mixin_configs": [
        "sodium-common.mixins.json",
        "sodium-frapi.mixins.json",
        "sodium-fabric.mixins.json"
      ],
      "depends": [],
      "classes": 795,
      "methods": 5101,
      "sites": [
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/model/quad/BakedQuadMixin",
          "targets": [
            "net/minecraft/client/resources/model/geometry/BakedQuad"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/geometry/BakedQuad#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/world/biome/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/biome/Biome#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/world/biome/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "getGrassColor",
          "kind": "overwrite",
          "method": "getGrassColor",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/world/biome/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "getFoliageColor",
          "kind": "overwrite",
          "method": "getFoliageColor",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/GlFallbackAllocatorMixin",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlTransientMemory$Fallback"
          ],
          "handler": "sodium$waitForFlightBeforeReusing",
          "kind": "redirect",
          "method": "rotate",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Runnable;run()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/GlFallbackAllocatorMixin",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlTransientMemory$Fallback"
          ],
          "handler": "sodium$close",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlTransientMemory$Fallback#close HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "postInit",
          "kind": "inject",
          "method": "onGameLoadFinished",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#onGameLoadFinished HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "postResourceReload",
          "kind": "inject",
          "method": "reloadResourcePacks",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#reloadResourcePacks TAIL"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "registerSodiumIcon",
          "kind": "wrap-operation",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/LoadingOverlay;registerTextures(Lnet/minecraft/client/renderer/texture/TextureManager;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "setFullscreen",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;<init>(Ljava/io/File;Lcom/mojang/datafixers/DataFixer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#<init> INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/WindowMixin",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlBackend"
          ],
          "handler": "setAdditionalWindowHints",
          "kind": "inject",
          "method": "createWindow",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/sdl/SDLVideo;SDL_CreateWindow(Ljava/lang/CharSequence;IIJ)J",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlBackend#createWindow INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/gui/DebugEntrySimplePerformanceImpactorsMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugEntrySimplePerformanceImpactors"
          ],
          "handler": "sodium$replace",
          "kind": "inject",
          "method": "display",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;isChunkRenderingUsingMultiDrawIndirect()Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugEntrySimplePerformanceImpactors#display INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/model/colors/BlockColorsMixin",
          "targets": [
            "net/minecraft/client/color/block/BlockColors"
          ],
          "handler": "preRegisterColorProvider",
          "kind": "inject",
          "method": "register",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/color/block/BlockColors#register HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/TextureAtlasMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "sodium$deleteSpriteFinder",
          "kind": "inject",
          "method": "upload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureAtlas#upload RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/VertexFormatMixin",
          "targets": [
            "com/mojang/renderpearl/api/vertex/VertexFormat"
          ],
          "handler": "afterInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/api/vertex/VertexFormat#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/frustum/CameraMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "editMatrix",
          "kind": "inject",
          "method": "createProjectionMatrixForCulling",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Camera#createProjectionMatrixForCulling RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/SheetedDecalTextureGeneratorMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/SpriteCoordinateExpanderMixin",
          "targets": [
            "net/minecraft/client/renderer/SpriteCoordinateExpander"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/SpriteCoordinateExpander#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/FogRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/fog/FogRenderer"
          ],
          "handler": "sodium$storeFogParameters",
          "kind": "inject",
          "method": "setupFog",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/fog/FogRenderer#setupFog RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "sodium$setProjection",
          "kind": "wrap-operation",
          "method": "renderLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/ProjectionMatrixBuffer;getBuffer(Lorg/joml/Matrix4f;)Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "sodium$setRenderer",
          "kind": "inject",
          "method": "extract",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extract HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "sodium$setRenderer",
          "kind": "inject",
          "method": "setLevel",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#setLevel RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "extractVisibleBlockEntities",
          "kind": "inject",
          "method": "extractVisibleBlockEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleBlockEntities HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "replaceBlockEntityIteration",
          "kind": "inject",
          "method": "iterateVisibleBlockEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#iterateVisibleBlockEntities HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "setBlocksDirty",
          "kind": "overwrite",
          "method": "setBlocksDirty",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "setSectionDirtyWithNeighbors",
          "kind": "overwrite",
          "method": "setSectionDirtyWithNeighbors",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "setBlockDirty",
          "kind": "overwrite",
          "method": "setBlockDirty",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "setSectionDirty",
          "kind": "overwrite",
          "method": "setSectionDirty",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "cullTerrain",
          "kind": "inject",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SectionOcclusionGraph;consumeFrustumUpdate()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/extract/LevelExtractor#extract INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "sodium$cancel",
          "kind": "redirect",
          "method": "extract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/extract/LevelExtractor;applyFrustum(Lnet/minecraft/client/renderer/culling/Frustum;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelExtractorMixin",
          "targets": [
            "net/minecraft/client/renderer/extract/LevelExtractor"
          ],
          "handler": "countRenderedSections",
          "kind": "overwrite",
          "method": "countRenderedSections",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "nullifyBuiltChunkStorage",
          "kind": "redirect",
          "method": "invalidateCompiledGeometry",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Options;getEffectiveRenderDistance()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "hasRenderedAllSections",
          "kind": "overwrite",
          "method": "hasRenderedAllSections",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "onTerrainUpdateScheduled",
          "kind": "inject",
          "method": "resetLevelRenderData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#resetLevelRenderData RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "sodium$endFrame",
          "kind": "inject",
          "method": "endFrame",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#endFrame RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "getRenderState",
          "kind": "wrap-operation",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/LevelRenderer;prepareChunkRenders(Lorg/joml/Matrix4fc;Z)Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "isSectionCompiledAndVisible",
          "kind": "overwrite",
          "method": "isSectionCompiledAndVisible",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "sodium$replace",
          "kind": "inject",
          "method": "invalidateCompiledGeometry",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#invalidateCompiledGeometry HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "setFilterMode",
          "kind": "redirect",
          "method": "lambda$addMainPass$0",
          "at": "FIELD",
          "at_target": "Lcom/mojang/renderpearl/api/textures/FilterMode;LINEAR:Lcom/mojang/renderpearl/api/textures/FilterMode;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/ParticleFeatureRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer"
          ],
          "handler": "sodium$bindDefaultUniforms",
          "kind": "inject",
          "method": "executeGroup",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/systems/RenderSystem;bindDefaultUniforms(Lcom/mojang/renderpearl/api/commands/RenderPass;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/RenderBuffersMixin",
          "targets": [
            "net/minecraft/client/renderer/RenderBuffers"
          ],
          "handler": "sodium$doNotAllocateChunks",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SectionBufferBuilderPool;allocate(I)Lnet/minecraft/client/renderer/SectionBufferBuilderPool;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/render/world/ViewAreaMixin",
          "targets": [
            "net/minecraft/client/renderer/ViewArea"
          ],
          "handler": "sodium$safelyReturn",
          "kind": "inject",
          "method": "lambda$new$0",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/ViewArea#lambda$new$0 HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/biome/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "captureSeed",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "onChunkUnloaded",
          "kind": "inject",
          "method": "drop",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientChunkCache$Storage;drop(ILnet/minecraft/world/level/chunk/LevelChunk;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#drop INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientChunkCacheMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientChunkCache"
          ],
          "handler": "onChunkLoaded",
          "kind": "inject",
          "method": "replaceWithPacketData",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;onChunkLoaded(Lnet/minecraft/world/level/ChunkPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "sodium$trackChunkUnload",
          "kind": "inject",
          "method": "unload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#unload HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onLightDataReceived",
          "kind": "inject",
          "method": "applyLightData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/core/world/map/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onChunkUnloadPacket",
          "kind": "inject",
          "method": "handleForgetLevelChunk",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/console/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/render/GuiRenderer;render()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#render INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugEntryMemoryMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugEntryMemory"
          ],
          "handler": "sodium$addOffHeap",
          "kind": "inject",
          "method": "display",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugEntryMemory#display RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenEntryListMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntryList"
          ],
          "handler": "injectLoadProfile",
          "kind": "inject",
          "method": "resetToProfile",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntryList#resetToProfile HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenEntryListMixin",
          "targets": [
            "net/minecraft/client/gui/components/debug/DebugScreenEntryList"
          ],
          "handler": "injectSodiumSettings",
          "kind": "inject",
          "method": "rebuildCurrentList",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenOverlayInsertMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "sodium$insertFpsPercentiles",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/DebugScreenOverlay;extractLines(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Ljava/util/List;ZI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenOverlayLogFrameMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "sodium$captureFrameDuration",
          "kind": "inject",
          "method": "logFrameDuration",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#logFrameDuration HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/components/DebugScreenOverlay"
          ],
          "handler": "sodium$renderBufferArenaOverlay",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/MinecraftRenderFrameMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "sodium$updatePercentileCache",
          "kind": "inject",
          "method": "renderFrame",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/Minecraft;fps:I",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#renderFrame FIELD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/entity/CubeMixin",
          "targets": [
            "net/minecraft/client/model/geom/ModelPart$Cube"
          ],
          "handler": "onInit",
          "kind": "redirect",
          "method": "<init>",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/model/geom/ModelPart$Cube;minX:F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/entity/CubeMixin",
          "targets": [
            "net/minecraft/client/model/geom/ModelPart$Cube"
          ],
          "handler": "onCompile",
          "kind": "inject",
          "method": "compile",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/PoseStack$Pose;pose()Lorg/joml/Matrix4f;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/geom/ModelPart$Cube#compile INVOKE"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/entity/ModelPartMixin",
          "targets": [
            "net/minecraft/client/model/geom/ModelPart"
          ],
          "handler": "translateAndRotate",
          "kind": "overwrite",
          "method": "translateAndRotate",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/entity/shadows/ShadowFeatureRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/feature/ShadowFeatureRenderer"
          ],
          "handler": "renderShadowPartFast",
          "kind": "inject",
          "method": "prepare",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/ShadowFeatureRenderer#prepare HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/gui/font/BakedGlyphMixin",
          "targets": [
            "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph"
          ],
          "handler": "drawFast",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#render HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/gui/font/BakedGlyphMixin",
          "targets": [
            "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph"
          ],
          "handler": "drawEffectFast",
          "kind": "inject",
          "method": "buildEffect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#buildEffect HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/DirectionMixin",
          "targets": [
            "net/minecraft/core/Direction"
          ],
          "handler": "getApproximateNearest",
          "kind": "overwrite",
          "method": "getApproximateNearest",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/intrinsics/BufferBuilderMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "redirectInt",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/system/MemoryUtil;memPutInt(JI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/intrinsics/BufferBuilderMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "redirectFloat",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/system/MemoryUtil;memPutFloat(JF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/intrinsics/BufferBuilderMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "redirectShort",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/system/MemoryUtil;memPutShort(JS)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/intrinsics/BufferBuilderMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/BufferBuilder"
          ],
          "handler": "redirectByte",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/system/MemoryUtil;memPutByte(JB)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/sorting/StagedVertexBufferMixin",
          "targets": [
            "net/minecraft/client/renderer/StagedVertexBuffer"
          ],
          "handler": "sodium$selectClosestSortingPoints",
          "kind": "wrap-operation",
          "method": "decodeSortingPoints",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/MeshData;decodeQuadCentroids(Ljava/nio/ByteBuffer;ILcom/mojang/renderpearl/api/vertex/VertexFormat;Lcom/mojang/blaze3d/vertex/CompactVectorArray;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/sorting/VertexSortingMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/VertexSorting"
          ],
          "handler": "byDistance",
          "kind": "overwrite",
          "method": "byDistance",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/sorting/VertexSortingMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/VertexSorting"
          ],
          "handler": "byDistance",
          "kind": "overwrite",
          "method": "byDistance",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/matrix_stack/VertexConsumerMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/VertexConsumer"
          ],
          "handler": "addVertex",
          "kind": "overwrite",
          "method": "addVertex",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/immediate/matrix_stack/VertexConsumerMixin",
          "targets": [
            "com/mojang/blaze3d/vertex/VertexConsumer"
          ],
          "handler": "setNormal",
          "kind": "overwrite",
          "method": "setNormal",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/particle/QuadParticleRenderStateMixin",
          "targets": [
            "net/minecraft/client/renderer/state/level/QuadParticleRenderState"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "renderRotatedQuad",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/state/level/QuadParticleRenderState#renderRotatedQuad HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/viewport/GlStateManagerMixin",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlStateManager"
          ],
          "handler": "skipRedundantViewport",
          "kind": "wrap-with-condition",
          "method": "_viewport",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/opengl/GL33C;glViewport(IIII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/world/clouds/CloudRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/CloudRenderer"
          ],
          "handler": "buildMesh",
          "kind": "overwrite",
          "method": "buildMesh",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/render/world/sky/LevelRendererMixin",
          "targets": [
            "net/minecraft/client/Camera"
          ],
          "handler": "preRenderSky",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;hasEffect(Lnet/minecraft/core/Holder;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/AtlasGlyphProviderMixin",
          "targets": [
            "net/minecraft/client/gui/font/AtlasGlyphProvider$Instance"
          ],
          "handler": "preRenderSprite",
          "kind": "inject",
          "method": "renderSprite",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/font/AtlasGlyphProvider$Instance#renderSprite HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/AtlasManagerMixin",
          "targets": [
            "net/minecraft/client/resources/model/sprite/AtlasManager"
          ],
          "handler": "sodium$catchUsedSprites",
          "kind": "inject",
          "method": "get",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/resources/model/sprite/AtlasManager#get RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/FluidStateModelSetMixin",
          "targets": [
            "net/minecraft/client/renderer/block/FluidStateModelSet"
          ],
          "handler": "sodium$catchUsedSprites",
          "kind": "inject",
          "method": "get",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/block/FluidStateModelSet#get RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/GuiGraphicsMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "preDrawSprite",
          "kind": "inject",
          "method": "blitSprite",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/GuiGraphicsMixin",
          "targets": [
            "net/minecraft/client/gui/GuiGraphicsExtractor"
          ],
          "handler": "preDrawSprite",
          "kind": "inject",
          "method": "blitSprite",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/ModelBlockRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/block/ModelBlockRenderer"
          ],
          "handler": "preRenderQuad",
          "kind": "inject",
          "method": "putQuadWithTint",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/block/ModelBlockRenderer#putQuadWithTint HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsTickerMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteContents$AnimationState"
          ],
          "handler": "assignParent",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteContents$AnimationState#<init> RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsTickerMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteContents$AnimationState"
          ],
          "handler": "captureActiveState",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteContents$AnimationState#tick HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsTickerMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/SpriteContents$AnimationState"
          ],
          "handler": "preTick",
          "kind": "inject",
          "method": "needsToDraw",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/SpriteContents$AnimationState#needsToDraw HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/TextureAtlasMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "preReturnSprite",
          "kind": "inject",
          "method": "getSprite",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureAtlas#getSprite RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/TextureSheetParticleMixin",
          "targets": [
            "net/minecraft/client/particle/SingleQuadParticle"
          ],
          "handler": "afterSetSprite",
          "kind": "inject",
          "method": "setSprite",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/SingleQuadParticle#setSprite RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/TextureSheetParticleMixin",
          "targets": [
            "net/minecraft/client/particle/SingleQuadParticle"
          ],
          "handler": "sodium$tickSprite",
          "kind": "inject",
          "method": "extractRotatedQuad",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/SingleQuadParticle#extractRotatedQuad HEAD"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/features/textures/scan/TextureAtlasSpriteMixin",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlasSprite"
          ],
          "handler": "hookTickerInstantiation",
          "kind": "wrap-operation",
          "method": "createAnimationState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/texture/SpriteContents;createAnimationState(Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;I)Lnet/minecraft/client/renderer/texture/SpriteContents$AnimationState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/workarounds/context_creation/GlSurfaceMixin",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlSurface"
          ],
          "handler": "preSwapBuffers",
          "kind": "inject",
          "method": "present",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/renderpearl/backend/opengl/GlSurface#present RETURN"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/workarounds/context_creation/WindowMixin",
          "targets": [
            "com/mojang/renderpearl/backend/opengl/GlBackend"
          ],
          "handler": "wrapGlfwCreateWindow",
          "kind": "redirect",
          "method": "createWindow",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/sdl/SDLVideo;SDL_CreateWindow(Ljava/lang/CharSequence;IIJ)J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/workarounds/window_minimized_state/GameRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "redirectWindowMinimized",
          "kind": "redirect",
          "method": "extractWindow",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/platform/Window;isIconified()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "net/caffeinemc/mods/sodium/mixin/frapi/FeatureRenderDispatcherMixin",
          "targets": [
            "net/minecraft/client/renderer/feature/FeatureRenderDispatcher"
          ],
          "handler": "registerExtendedFeatureRenderers",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/feature/FeatureRenderDispatcher#<init> RETURN"
        }
      ],
      "listening": 48,
      "accessors": 16,
      "hooks": {
        "net_from_server": 2
      },
      "wanted": {
        "com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator#<init> @RETURN": 1,
        "com/mojang/renderpearl/api/vertex/VertexFormat#<init> @RETURN": 1,
        "com/mojang/renderpearl/backend/opengl/GlSurface#present @RETURN": 1,
        "com/mojang/renderpearl/backend/opengl/GlTransientMemory$Fallback#close @HEAD": 1,
        "net/minecraft/client/Camera#createProjectionMatrixForCulling @RETURN": 1,
        "net/minecraft/client/Minecraft#onGameLoadFinished @HEAD": 1,
        "net/minecraft/client/Minecraft#reloadResourcePacks @TAIL": 1,
        "net/minecraft/client/color/block/BlockColors#register @HEAD": 1,
        "net/minecraft/client/gui/GuiGraphicsExtractor#blitSprite @HEAD": 2,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @RETURN": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#logFrameDuration @HEAD": 1,
        "net/minecraft/client/gui/components/debug/DebugEntryMemory#display @RETURN": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntryList#rebuildCurrentList @HEAD": 1,
        "net/minecraft/client/gui/components/debug/DebugScreenEntryList#resetToProfile @HEAD": 1,
        "net/minecraft/client/gui/font/AtlasGlyphProvider$Instance#renderSprite @HEAD": 1,
        "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#buildEffect @HEAD": 1,
        "net/minecraft/client/gui/font/glyphs/BakedSheetGlyph#render @HEAD": 1,
        "net/minecraft/client/multiplayer/ClientLevel#<init> @RETURN": 1,
        "net/minecraft/client/multiplayer/ClientLevel#unload @HEAD": 1,
        "net/minecraft/client/particle/SingleQuadParticle#extractRotatedQuad @HEAD": 1,
        "net/minecraft/client/particle/SingleQuadParticle#setSprite @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#<init> @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#endFrame @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#invalidateCompiledGeometry @HEAD": 1,
        "net/minecraft/client/renderer/LevelRenderer#resetLevelRenderData @RETURN": 1,
        "net/minecraft/client/renderer/SpriteCoordinateExpander#<init> @RETURN": 1,
        "net/minecraft/client/renderer/ViewArea#lambda$new$0 @HEAD": 1,
        "net/minecraft/client/renderer/block/FluidStateModelSet#get @RETURN": 1,
        "net/minecraft/client/renderer/block/ModelBlockRenderer#putQuadWithTint @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extract @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extractVisibleBlockEntities @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#iterateVisibleBlockEntities @HEAD": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setLevel @RETURN": 1,
        "net/minecraft/client/renderer/feature/FeatureRenderDispatcher#<init> @RETURN": 1,
        "net/minecraft/client/renderer/feature/ShadowFeatureRenderer#prepare @HEAD": 1,
        "net/minecraft/client/renderer/fog/FogRenderer#setupFog @RETURN": 1,
        "net/minecraft/client/renderer/state/level/QuadParticleRenderState#renderRotatedQuad @HEAD": 1,
        "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#<init> @RETURN": 1,
        "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#needsToDraw @HEAD": 1,
        "net/minecraft/client/renderer/texture/SpriteContents$AnimationState#tick @HEAD": 1,
        "net/minecraft/client/renderer/texture/TextureAtlas#getSprite @RETURN": 1,
        "net/minecraft/client/renderer/texture/TextureAtlas#upload @RETURN": 1,
        "net/minecraft/client/resources/model/geometry/BakedQuad#<init> @RETURN": 1,
        "net/minecraft/client/resources/model/sprite/AtlasManager#get @RETURN": 1,
        "net/minecraft/world/level/biome/Biome#<init> @RETURN": 1
      },
      "wanted_calls": {
        "com/mojang/blaze3d/platform/Window#isIconified @INVOKE (redirect)": 1,
        "com/mojang/blaze3d/vertex/MeshData#decodeQuadCentroids @INVOKE (wrap-operation)": 1,
        "com/mojang/blaze3d/vertex/VertexConsumer#addVertex @OVERWRITE": 1,
        "com/mojang/blaze3d/vertex/VertexConsumer#setNormal @OVERWRITE": 1,
        "com/mojang/blaze3d/vertex/VertexSorting#byDistance @OVERWRITE": 2,
        "com/mojang/renderpearl/api/textures/FilterMode#LINEAR:Lcom/mojang/renderpearl/api/textures/FilterMode; @FIELD (redirect)": 1,
        "com/mojang/renderpearl/backend/opengl/GlBackend#createWindow @INVOKE": 1,
        "java/lang/Runnable#run @INVOKE (redirect)": 1,
        "net/minecraft/client/Minecraft#<init> @INVOKE": 1,
        "net/minecraft/client/Minecraft#renderFrame @FIELD": 1,
        "net/minecraft/client/Options#getEffectiveRenderDistance @INVOKE (redirect)": 1,
        "net/minecraft/client/gui/components/DebugScreenOverlay#extractRenderState @INVOKE": 1,
        "net/minecraft/client/gui/components/debug/DebugEntrySimplePerformanceImpactors#display @INVOKE": 1,
        "net/minecraft/client/gui/screens/LoadingOverlay#registerTextures @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/model/geom/ModelPart#translateAndRotate @OVERWRITE": 1,
        "net/minecraft/client/model/geom/ModelPart$Cube#compile @INVOKE": 1,
        "net/minecraft/client/model/geom/ModelPart$Cube#minX:F @FIELD (redirect)": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#drop @INVOKE": 1,
        "net/minecraft/client/multiplayer/ClientChunkCache#replaceWithPacketData @INVOKE": 1,
        "net/minecraft/client/renderer/CloudRenderer#buildMesh @OVERWRITE": 1,
        "net/minecraft/client/renderer/GameRenderer#render @INVOKE": 1,
        "net/minecraft/client/renderer/LevelRenderer#hasRenderedAllSections @OVERWRITE": 1,
        "net/minecraft/client/renderer/LevelRenderer#isSectionCompiledAndVisible @OVERWRITE": 1,
        "net/minecraft/client/renderer/LevelRenderer#prepareChunkRenders @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/ProjectionMatrixBuffer#getBuffer @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/SectionBufferBuilderPool#allocate @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#applyFrustum @INVOKE (redirect)": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#countRenderedSections @OVERWRITE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#extract @INVOKE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setBlockDirty @OVERWRITE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setBlocksDirty @OVERWRITE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setSectionDirty @OVERWRITE": 1,
        "net/minecraft/client/renderer/extract/LevelExtractor#setSectionDirtyWithNeighbors @OVERWRITE": 1,
        "net/minecraft/client/renderer/feature/QuadParticleFeatureRenderer#executeGroup @INVOKE": 1,
        "net/minecraft/client/renderer/texture/SpriteContents#createAnimationState @INVOKE (wrap-operation)": 1,
        "net/minecraft/core/Direction#getApproximateNearest @OVERWRITE": 1,
        "net/minecraft/world/entity/LivingEntity#hasEffect @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/biome/Biome#getFoliageColor @OVERWRITE": 1,
        "net/minecraft/world/level/biome/Biome#getGrassColor @OVERWRITE": 1,
        "org/lwjgl/opengl/GL33C#glViewport @INVOKE (wrap-with-condition)": 1,
        "org/lwjgl/sdl/SDLVideo#SDL_CreateWindow @INVOKE (redirect)": 1,
        "org/lwjgl/system/MemoryUtil#memPutByte @INVOKE (redirect)": 1,
        "org/lwjgl/system/MemoryUtil#memPutFloat @INVOKE (redirect)": 1,
        "org/lwjgl/system/MemoryUtil#memPutInt @INVOKE (redirect)": 1,
        "org/lwjgl/system/MemoryUtil#memPutShort @INVOKE (redirect)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "QuadEmitter",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "BlockColorRegistry",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "BlockTintsFactory",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ExtendedBlockModelSubmit",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ExtendedItemSubmit",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FluidRendering",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FluidRendering$DefaultRenderer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FluidRenderingRegistry",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Mesh",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "MeshView",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "MutableQuadView",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "QuadAtlas",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "QuadTransform",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "QuadView",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Renderer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ShadeMode",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "TriState",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "AltModelBlockRenderer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvObject",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntrypointContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricBlockGetter",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricBlockStateModel",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FluidRenderHandler",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MutableMesh",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PreLaunchEntrypoint",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 795,
        "features": {
          "screen": 2,
          "renderer": 7,
          "mixin": 83
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 795,
        "methods": 3201,
        "tried": 600,
        "completed": 214,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "[Lnet/caffeinemc/mods/sodium/api/config/option/OptionImpact;#clone()Ljava/lang/Object;": 1,
          "[Lnet/caffeinemc/mods/sodium/client/gpu/device/backend/DrawBackend;#clone()Ljava/lang/Object;": 1,
          "[Lnet/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/SortBehavior$PriorityMode;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/ImmutableList#of()Lcom/google/common/collect/ImmutableList;": 1,
          "com/mojang/blaze3d/vertex/PoseStack$Pose#normal()Lorg/joml/Matrix3f;": 1,
          "com/mojang/blaze3d/vertex/PoseStack$Pose#pose()Lorg/joml/Matrix4f;": 1,
          "com/mojang/renderpearl/api/buffers/GpuBufferSlice$MappedView#close()V": 2,
          "it/unimi/dsi/fastutil/doubles/Double2ObjectRBTreeMap#size()I": 1,
          "it/unimi/dsi/fastutil/floats/FloatArrays#binarySearch([FF)I": 1,
          "it/unimi/dsi/fastutil/ints/IntArrayList#size()I": 2,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceOpenHashMap#containsKey(J)Z": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceOpenHashMap#get(J)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceOpenHashMap#isEmpty()Z": 1,
          "it/unimi/dsi/fastutil/longs/Long2ReferenceOpenHashMap#remove(J)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/Reference2ReferenceMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/Reference2ReferenceOpenHashMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "it/unimi/dsi/fastutil/objects/Reference2ReferenceOpenHashMap#values()Lit/unimi/dsi/fastutil/objects/ReferenceCollection;": 2,
          "it/unimi/dsi/fastutil/objects/ReferenceSets#unmodifiable(Lit/unimi/dsi/fastutil/objects/ReferenceSet;)Lit/unimi/dsi/fastutil/objects/ReferenceSet;": 1,
          "java/lang/Class#forName(Ljava/lang/String;)Ljava/lang/Class;": 1,
          "java/lang/Integer#reverseBytes(I)I": 3,
          "java/lang/Integer#rotateLeft(II)I": 1,
          "java/lang/Integer#toUnsignedLong(I)J": 3,
          "java/lang/management/ManagementFactory#getMemoryMXBean()Ljava/lang/management/MemoryMXBean;": 2,
          "java/nio/ByteOrder#nativeOrder()Ljava/nio/ByteOrder;": 1,
          "java/nio/IntBuffer#put(I)Ljava/nio/IntBuffer;": 1,
          "java/util/BitSet#clear()V": 1,
          "java/util/BitSet#clear(I)V": 1,
          "java/util/BitSet#nextClearBit(I)I": 1,
          "java/util/Collection#add(Ljava/lang/Object;)Z": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 1,
          "java/util/EnumMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Iterator#remove()V": 1,
          "java/util/List#of([Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Stack#isEmpty()Z": 3,
          "java/util/concurrent/ConcurrentLinkedDeque#poll()Ljava/lang/Object;": 2,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/SliderControl$SliderControlElement#getCenterY()I": 1,
          "net/caffeinemc/mods/sodium/client/gui/options/control/SliderControl$SliderControlElement#getLimitX()I": 4,
          "net/caffeinemc/mods/sodium/client/gui/widgets/AbstractWidget#getHeight()I": 1,
          "net/caffeinemc/mods/sodium/client/gui/widgets/AbstractWidget#getLimitX()I": 1,
          "net/caffeinemc/mods/sodium/client/gui/widgets/AbstractWidget#getY()I": 1,
          "net/caffeinemc/mods/sodium/client/gui/widgets/OptionListWidget#getX()I": 2,
          "net/caffeinemc/mods/sodium/client/gui/widgets/OptionListWidget#getY()I": 1,
          "net/caffeinemc/mods/sodium/client/gui/widgets/SearchWidget#getX()I": 1,
          "net/caffeinemc/mods/sodium/client/model/quad/BakedQuadView#sodium$getX(I)F": 2,
          "net/caffeinemc/mods/sodium/client/model/quad/properties/ModelQuadFacing#ordinal()I": 2,
          "net/caffeinemc/mods/sodium/client/platform/windows/api/d3dkmt/D3DKMTAdapterInfoStruct$Buffer#position()I": 1,
          "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Abstract2DLinearEstimator$LinearRegressionBatch#add(Ljava/lang/Object;)Z": 2,
          "net/caffeinemc/mods/sodium/client/render/chunk/lists/DeferredTaskList#dequeueLong()J": 1,
          "net/caffeinemc/mods/sodium/client/render/chunk/lists/SortedRenderLists#iterator()Ljava/util/Iterator;": 2,
          "net/caffeinemc/mods/sodium/client/render/model/ItemGlintRenderType#ordinal()I": 1,
          "net/caffeinemc/mods/sodium/client/render/model/ItemGlintSpecialRenderType#ordinal()I": 1,
          "net/caffeinemc/mods/sodium/client/render/model/ItemRenderType#ordinal()I": 1,
          "net/caffeinemc/mods/sodium/client/render/model/SodiumQuadAtlas#ordinal()I": 1,
          "net/caffeinemc/mods/sodium/client/render/model/SodiumShadeMode#ordinal()I": 1,
          "net/minecraft/client/Camera#position()Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 5,
          "net/minecraft/client/gui/components/EditBox#charTyped(Lnet/minecraft/client/input/CharacterEvent;)Z": 1,
          "net/minecraft/client/gui/components/EditBox#isFocused()Z": 1,
          "net/minecraft/client/gui/components/debug/DebugScreenEntries#CHUNK_RENDER_STATS": 2,
          "net/minecraft/client/gui/components/debug/DebugScreenProfile#PERFORMANCE": 1,
          "net/minecraft/client/gui/screens/Screen#removeWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)V": 1,
          "net/minecraft/client/input/KeyEvent#isEscape()Z": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getMinSectionY()I": 2,
          "net/minecraft/client/renderer/chunk/ChunkSectionLayer#ordinal()I": 2,
          "net/minecraft/core/Direction#ordinal()I": 1,
          "net/minecraft/core/SectionPos#asLong(III)J": 5,
          "net/minecraft/core/SectionPos#getY()I": 1,
          "net/minecraft/core/SectionPos#minBlockX()I": 1,
          "net/minecraft/util/Mth#clamp(FFF)F": 7,
          "net/minecraft/util/Mth#clamp(III)I": 1,
          "net/minecraft/util/Mth#clamp(JJJ)J": 1,
          "net/minecraft/util/TriState#ordinal()I": 1,
          "net/minecraft/util/Util#getPlatform()Lnet/minecraft/util/Util$OS;": 1,
          "new it/unimi/dsi/fastutil/longs/LongArrayList": 1,
          "new it/unimi/dsi/fastutil/objects/Object2ReferenceOpenHashMap": 4,
          "new it/unimi/dsi/fastutil/objects/ObjectArrayList": 1,
          "new it/unimi/dsi/fastutil/objects/ObjectLinkedOpenHashSet": 1,
          "new it/unimi/dsi/fastutil/objects/ReferenceArrayList": 2,
          "new net/minecraft/client/renderer/MappableRingBuffer": 1,
          "new org/joml/Vector2f": 2,
          "new org/joml/Vector3f": 2,
          "org/apache/commons/lang3/ArrayUtils#swap([III)V": 1,
          "org/joml/Vector2f#x()F": 1,
          "org/joml/Vector3f#set(Lorg/joml/Vector3fc;)Lorg/joml/Vector3f;": 1,
          "org/lwjgl/system/MemoryStack#nmalloc(II)J": 1,
          "org/lwjgl/system/MemoryStack#stackPush()Lorg/lwjgl/system/MemoryStack;": 2,
          "org/lwjgl/system/MemoryUtil#memAddress(Ljava/nio/ByteBuffer;)J": 1,
          "org/lwjgl/system/MemoryUtil#memAlignedAlloc(II)Ljava/nio/ByteBuffer;": 1,
          "org/lwjgl/system/MemoryUtil#memAlignedFree(Ljava/nio/ByteBuffer;)V": 1,
          "org/lwjgl/system/MemoryUtil#memLengthUTF16(Ljava/lang/CharSequence;Z)I": 1,
          "org/lwjgl/system/MemoryUtil#nmemAlignedFree(J)V": 1,
          "org/lwjgl/system/Struct#<init>(JLjava/nio/ByteBuffer;)V": 2,
          "org/lwjgl/vulkan/VkDrawIndexedIndirectCommand#SIZEOF": 1,
          "sun/misc/Unsafe#getFloat(J)F": 2,
          "sun/misc/Unsafe#getInt(J)I": 1,
          "sun/misc/Unsafe#putFloat(JF)V": 1
        },
        "runs": [
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/options/control/SliderControl$SliderControlElement",
            "method": "getContentWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/options/control/SliderControl$SliderControlElement",
            "method": "keyPressed",
            "desc": "(Lnet/minecraft/client/input/KeyEvent;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/ShapeComparisonCache$ShapeComparison$ShapeComparisonStrategy",
            "method": "equals",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/ShapeComparisonCache$ShapeComparison;Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/ShapeComparisonCache$ShapeComparison;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/ShapeComparisonCache$ShapeComparison$ShapeComparisonStrategy",
            "method": "equals",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gpu/device/context/VKIndirectContext",
            "method": "addCommand",
            "desc": "(I)J",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ColorThemeBuilderImpl",
            "method": "setBaseThemeRGB",
            "desc": "(I)Lnet/caffeinemc/mods/sodium/api/config/structure/ColorThemeBuilder;",
            "value": "obj#38"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ColorThemeBuilderImpl",
            "method": "setFullThemeRGB",
            "desc": "(III)Lnet/caffeinemc/mods/sodium/api/config/structure/ColorThemeBuilder;",
            "value": "obj#39"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/immediate/model/ModelCuboid",
            "method": "shouldDrawFace",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/platform/windows/api/d3dkmt/D3DKMT$WDDMAdapterInfo",
            "method": "adapterType",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/model/light/data/ArrayLightDataCache",
            "method": "index",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/texture/SpriteUtil",
            "method": "hasAnimation",
            "desc": "(Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/helper/ModelHelper",
            "method": "toFaceIndex",
            "desc": "(Lnet/minecraft/core/Direction;)I",
            "value": "6"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl",
            "method": "clearAndGet",
            "desc": "()Ljava/util/List;",
            "value": "obj#78"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl",
            "method": "setNominalFace",
            "desc": "(Lnet/minecraft/core/Direction;)Lnet/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl;",
            "value": "obj#95"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl",
            "method": "setItemRenderType",
            "desc": "(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lnet/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl;",
            "value": "obj#107"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl",
            "method": "setItemGlintRenderType",
            "desc": "(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lnet/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl;",
            "value": "obj#109"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl",
            "method": "setItemGlintSpecialRenderType",
            "desc": "(Lnet/minecraft/client/renderer/rendertype/RenderType;)Lnet/caffeinemc/mods/sodium/client/render/model/MutableQuadViewImpl;",
            "value": "obj#111"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ModOptionsBuilderImpl",
            "method": "setName",
            "desc": "(Ljava/lang/String;)Lnet/caffeinemc/mods/sodium/api/config/structure/ModOptionsBuilder;",
            "value": "obj#114"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ModOptionsBuilderImpl",
            "method": "setVersion",
            "desc": "(Ljava/lang/String;)Lnet/caffeinemc/mods/sodium/api/config/structure/ModOptionsBuilder;",
            "value": "obj#115"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ModOptionsBuilderImpl",
            "method": "setIcon",
            "desc": "(Lnet/minecraft/resources/Identifier;)Lnet/caffeinemc/mods/sodium/api/config/structure/ModOptionsBuilder;",
            "value": "obj#118"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ModOptionsBuilderImpl",
            "method": "setNonTintedIcon",
            "desc": "(Lnet/minecraft/resources/Identifier;)Lnet/caffeinemc/mods/sodium/api/config/structure/ModOptionsBuilder;",
            "value": "obj#119"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ModOptionsBuilderImpl",
            "method": "registerOptionOverlay",
            "desc": "(Lnet/minecraft/resources/Identifier;Lnet/caffeinemc/mods/sodium/api/config/structure/OptionBuilder;)Lnet/caffeinemc/mods/sodium/api/config/structure/ModOptionsBuilder;",
            "value": "obj#125"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ModOptionsBuilderImpl",
            "method": "registerOptionOverlay",
            "desc": "(Lnet/minecraft/resources/Identifier;Lnet/caffeinemc/mods/sodium/api/config/structure/OptionBuilder;I)Lnet/caffeinemc/mods/sodium/api/config/structure/ModOptionsBuilder;",
            "value": "obj#129"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/bsp_tree/BSPSortState",
            "method": "isOutOfBounds",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/search/BigramSearchIndex$SourceBigramCount",
            "method": "count",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Average1DEstimator",
            "method": "createNewDataBatch",
            "desc": "()Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Average1DEstimator$ValueBatch;",
            "value": "obj#150"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Average1DEstimator",
            "method": "createNewModel",
            "desc": "()Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Average1DEstimator$Average;",
            "value": "obj#152"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Average1DEstimator",
            "method": "createNewModel",
            "desc": "()Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Estimator$Model;",
            "value": "obj#156"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Average1DEstimator",
            "method": "createNewDataBatch",
            "desc": "()Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Estimator$DataBatch;",
            "value": "obj#158"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/QuadViewImpl",
            "method": "normalIndex",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/widgets/DonationButtonWidget",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/data/DynamicSorter",
            "method": "getResultSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FrameTimeStatistics",
            "method": "rankFromTop",
            "desc": "(DI)I",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FrameTimeStatistics",
            "method": "popDownTo",
            "desc": "([JII)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/MeshResultSize",
            "method": "value",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/MeshResultSize",
            "method": "resultSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/MixinOption",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/MixinOption",
            "method": "isOverridden",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/MixinOption",
            "method": "isUserDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/mixin/MixinOption",
            "method": "isModDefined",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/sorting/VertexSorters$SortByDistanceToOrigin",
            "method": "applyMetric",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/vanilla/IntProjection$1",
            "method": "fromInt",
            "desc": "(I)Ljava/lang/Integer;",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/vanilla/IntProjection$1",
            "method": "fromInt",
            "desc": "(I)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegionManager$PendingSectionMeshUpload",
            "method": "relativeBuiltTime",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/vanilla/IntProjection$2",
            "method": "toInt",
            "desc": "(Ljava/lang/Double;)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/vanilla/IntProjection$2",
            "method": "fromInt",
            "desc": "(I)Ljava/lang/Double;",
            "value": "NaN"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/vanilla/IntProjection$2",
            "method": "fromInt",
            "desc": "(I)Ljava/lang/Object;",
            "value": "NaN"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/vanilla/IntProjection$2",
            "method": "toInt",
            "desc": "(Ljava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/ChunkBuildBuffers",
            "method": "makeVertexSegments",
            "desc": "()[I",
            "value": "obj#310"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest",
            "method": "forestDimFromBuildDistance",
            "desc": "(F)I",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest",
            "method": "getTreeIndex",
            "desc": "(III)I",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/BitwiseMath",
            "method": "lessThan",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/BitwiseMath",
            "method": "greaterThan",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/compatibility/workarounds/nvidia/NvidiaDriverVersion",
            "method": "major",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/compatibility/workarounds/nvidia/NvidiaDriverVersion",
            "method": "minor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "red",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "green",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "blue",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "alpha",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "environmentalStart",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "environmentalEnd",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "renderStart",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "renderEnd",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/util/FogParameters",
            "method": "cullDistance",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Abstract2DLinearEstimator$LinearFunction",
            "method": "predict",
            "desc": "(Ljava/lang/Long;)Ljava/lang/Long;",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/Abstract2DLinearEstimator$LinearFunction",
            "method": "predict",
            "desc": "(Ljava/lang/Object;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ExternalButtonOptionBuilderImpl",
            "method": "setEnabled",
            "desc": "(Z)Lnet/caffeinemc/mods/sodium/api/config/structure/ExternalButtonOptionBuilder;",
            "value": "obj#365"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ExternalButtonOptionBuilderImpl",
            "method": "setScreenConsumer",
            "desc": "(Ljava/util/function/Consumer;)Lnet/caffeinemc/mods/sodium/api/config/structure/ExternalButtonOptionBuilder;",
            "value": "obj#369"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/ExternalButtonOptionBuilderImpl",
            "method": "setEnabled",
            "desc": "(Z)Lnet/caffeinemc/mods/sodium/api/config/structure/OptionBuilder;",
            "value": "obj#372"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableTree",
            "method": "cylindricalDistanceTest",
            "desc": "(FFFF)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableTree",
            "method": "nearestToZero",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableTree",
            "method": "farthestFromZero",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableTree",
            "method": "getChildOrderModulator",
            "desc": "(IIII)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/config/builder/OptionBuilderImpl",
            "method": "setEnabled",
            "desc": "(Z)Lnet/caffeinemc/mods/sodium/api/config/structure/OptionBuilder;",
            "value": "obj#400"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/gui/Colors",
            "method": "constrainColorHSV",
            "desc": "(IFF)I",
            "value": "-16777216"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager",
            "method": "needsUpdate",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager",
            "method": "isSectionImmediatePresentationCandidate",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/render/viewport/Viewport;Lnet/caffeinemc/mods/sodium/client/render/chunk/RenderSection;)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager",
            "method": "upgradePendingUpdate",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/render/chunk/RenderSection;I)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager",
            "method": "shouldPrioritizeTask",
            "desc": "(Lnet/caffeinemc/mods/sodium/client/render/chunk/RenderSection;F)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager",
            "method": "getRenderDistance",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager",
            "method": "getFrame",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobResult",
            "method": "exceptionally",
            "desc": "(Ljava/lang/Throwable;)Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobResult;",
            "value": "obj#502"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobResult",
            "method": "successfully",
            "desc": "(Ljava/lang/Object;Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/JobEffort;)Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobResult;",
            "value": "obj#503"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobResult",
            "method": "successfully",
            "desc": "(Ljava/lang/Object;)Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobResult;",
            "value": "obj#504"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "pack",
            "desc": "(IIII)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "pack",
            "desc": "(III)I",
            "value": "-16777216"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "unpackAlpha",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "unpackRed",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "unpackGreen",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "unpackBlue",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "withAlpha",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "transferAlpha",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "mulRGB",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "mulRGB",
            "desc": "(IF)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "toHSV",
            "desc": "(I)[F",
            "value": "obj#508"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "pack",
            "desc": "(FFF)I",
            "value": "-16777216"
          },
          {
            "class": "net/caffeinemc/mods/sodium/api/util/ColorARGB",
            "method": "fromHSV",
            "desc": "(FFF)I",
            "value": "-16777216"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/trigger/GeometryPlanes",
            "method": "getAlignedOrCreate",
            "desc": "()[Lnet/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/trigger/NormalPlanes;",
            "value": "obj#512"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/terrain/material/Material",
            "method": "bits",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/viewport/frustum/SimpleFrustum",
            "method": "testSection",
            "desc": "(FFF)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/viewport/frustum/SimpleFrustum",
            "method": "testSectionExpanded",
            "desc": "(FFFF)Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer",
            "method": "getCameraTranslation",
            "desc": "(II)F",
            "value": "0f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/impl/CompactChunkVertex",
            "method": "packPositionHi",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/impl/CompactChunkVertex",
            "method": "packPositionLo",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/impl/CompactChunkVertex",
            "method": "quantizePosition",
            "desc": "(F)I",
            "value": "262144"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/impl/CompactChunkVertex",
            "method": "normalizePosition",
            "desc": "(F)F",
            "value": "0.25f"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/impl/CompactChunkVertex",
            "method": "packTexture",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/impl/CompactChunkVertex",
            "method": "encodeTexture",
            "desc": "(FF)I",
            "value": "65535"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/impl/CompactChunkVertex",
            "method": "packLightAndData",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/impl/CompactChunkVertex",
            "method": "sign",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/GraphDirection",
            "method": "opposite",
            "desc": "(I)I",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/GraphDirection",
            "method": "x",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/GraphDirection",
            "method": "y",
            "desc": "(I)I",
            "value": "-1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/occlusion/GraphDirection",
            "method": "z",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/trigger/NormalList",
            "method": "isAligned",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/trigger/NormalList",
            "method": "getAlignedDirection",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "bitMask",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "cullFace",
            "desc": "(ILnet/minecraft/core/Direction;)I",
            "value": "6"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "lightFace",
            "desc": "(ILnet/minecraft/core/Direction;)I",
            "value": "6"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "faceNormal",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "normalFlags",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "normalFlags",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "geometryFlags",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "geometryFlags",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "emissive",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "emissive",
            "desc": "(IZ)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "shadeDirectionOverride",
            "desc": "(ILnet/minecraft/core/Direction;)I",
            "value": "6"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "foilType",
            "desc": "(ILnet/minecraft/client/renderer/item/ItemStackRenderState$FoilType;)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "animated",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/render/model/EncodingFormat",
            "method": "animated",
            "desc": "(IZ)I",
            "value": "0"
          },
          {
            "class": "net/caffeinemc/mods/sodium/client/platform/windows/api/d3dkmt/D3DKMT",
            "method": "isSupportedAdapterType",
            "desc": "(I)Z",
            "value": "0"
          }
        ],
        "insns": 7011
      },
      "verdict": "no",
      "summary": "only 2 of 48 listening patch sites have a hook (4%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "sound_physics_remastered",
      "name": "Sound Physics Remastered",
      "version": "1.5.2+26.3",
      "license": "GPL",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/sonicether/soundphysics/FabricSoundPhysicsMod"
        },
        {
          "kind": "main",
          "value": "com/sonicether/soundphysics/FabricSoundPhysicsMod"
        },
        {
          "kind": "modmenu",
          "value": "com/sonicether/soundphysics/integration/ModMenuIntegration"
        },
        {
          "kind": "voicechat",
          "value": "com/sonicether/soundphysics/integration/voicechat/SimpleVoiceChatPlugin"
        }
      ],
      "mixin_configs": [
        "sound_physics_remastered.mixins.json"
      ],
      "depends": [],
      "classes": 90,
      "methods": 562,
      "sites": [
        {
          "mixin": "com/sonicether/soundphysics/mixin/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "level_tick_post",
          "why": "LevelTickEvent.Post"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "handleLogin",
          "kind": "inject",
          "method": "handleLogin",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/DebugRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/debug/DebugRenderer"
          ],
          "handler": "refreshRendererList",
          "kind": "inject",
          "method": "refreshRendererList",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/debug/DebugRenderer#refreshRendererList RETURN"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "playSound",
          "kind": "modify-arg",
          "method": "playSound",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;playSound(Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/LibraryMixin",
          "targets": [
            "com/mojang/blaze3d/audio/Library"
          ],
          "handler": "modifyContext",
          "kind": "modify-args",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lorg/lwjgl/openal/ALC10;alcCreateContext(JLjava/nio/IntBuffer;)J",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-args)"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "playSound",
          "kind": "inject",
          "method": "playSound",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/LocalPlayer#playSound HEAD"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "setLevel",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_level_load",
          "why": "LevelEvent.Load: a level is set on the client"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/MinecraftMixin",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "disconnect",
          "kind": "inject",
          "method": "disconnect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_disconnecting",
          "why": "ClientPlayerNetworkEvent.LoggingOut: the connection ends"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/SoundEventMixin",
          "targets": [
            "net/minecraft/sounds/SoundEvent"
          ],
          "handler": "allowance1",
          "kind": "modify-constant",
          "method": "getRange",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-constant)"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/SoundSystemMixin",
          "targets": [
            "net/minecraft/client/sounds/SoundEngine"
          ],
          "handler": "loadLibrary",
          "kind": "inject",
          "method": "loadLibrary",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/audio/Listener;reset()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/sounds/SoundEngine#loadLibrary INVOKE"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/SoundSystemMixin",
          "targets": [
            "net/minecraft/client/sounds/SoundEngine"
          ],
          "handler": "play",
          "kind": "modify-arg",
          "method": "play",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/Multimap;put(Ljava/lang/Object;Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/SoundSystemMixin",
          "targets": [
            "net/minecraft/client/sounds/SoundEngine"
          ],
          "handler": "tickNonPaused",
          "kind": "inject",
          "method": "tickInGameSound",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/sounds/ChannelAccess$ChannelHandle;isStopped()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/sounds/SoundEngine#tickInGameSound INVOKE"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/SourceMixin",
          "targets": [
            "com/mojang/blaze3d/audio/Channel"
          ],
          "handler": "setSelfPosition",
          "kind": "inject",
          "method": "setSelfPosition",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/audio/Channel#setSelfPosition HEAD"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/SourceMixin",
          "targets": [
            "com/mojang/blaze3d/audio/Channel"
          ],
          "handler": "play",
          "kind": "inject",
          "method": "play",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/audio/Channel#play HEAD"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/SourceMixin",
          "targets": [
            "com/mojang/blaze3d/audio/Channel"
          ],
          "handler": "injected",
          "kind": "modify-variable",
          "method": "linearAttenuation",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/sonicether/soundphysics/mixin/SourceMixin",
          "targets": [
            "com/mojang/blaze3d/audio/Channel"
          ],
          "handler": "linearAttenuation2",
          "kind": "inject",
          "method": "linearAttenuation",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at com/mojang/blaze3d/audio/Channel#linearAttenuation RETURN"
        }
      ],
      "listening": 9,
      "accessors": 1,
      "hooks": {
        "client_disconnecting": 1,
        "client_level_load": 1,
        "level_tick_post": 1,
        "net_from_server": 1
      },
      "wanted": {
        "com/mojang/blaze3d/audio/Channel#linearAttenuation @RETURN": 1,
        "com/mojang/blaze3d/audio/Channel#play @HEAD": 1,
        "com/mojang/blaze3d/audio/Channel#setSelfPosition @HEAD": 1,
        "net/minecraft/client/player/LocalPlayer#playSound @HEAD": 1,
        "net/minecraft/client/renderer/debug/DebugRenderer#refreshRendererList @RETURN": 1
      },
      "wanted_calls": {
        "com/google/common/collect/Multimap#put @INVOKE (modify-arg)": 1,
        "com/mojang/blaze3d/audio/Channel#linearAttenuation @HEAD (modify-variable)": 1,
        "net/minecraft/client/sounds/SoundEngine#loadLibrary @INVOKE": 1,
        "net/minecraft/client/sounds/SoundEngine#tickInGameSound @INVOKE": 1,
        "net/minecraft/sounds/SoundEvent#getRange @HEAD (modify-constant)": 1,
        "net/minecraft/world/level/Level#playSound @INVOKE (modify-arg)": 1,
        "org/lwjgl/openal/ALC10#alcCreateContext @INVOKE (modify-args)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 90,
        "features": {
          "mixin": 11
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 90,
        "methods": 378,
        "tried": 378,
        "completed": 142,
        "handlers_tried": 4,
        "handlers_completed": 2,
        "missing": {
          "com/sonicether/soundphysics/world/ClonedClientLevel#isOutsideBuildHeight(Lnet/minecraft/core/BlockPos;)Z": 2,
          "de/maxhenkel/voicechat/api/events/VoicechatServerStartedEvent#getVoicechat()Lde/maxhenkel/voicechat/api/VoicechatServerApi;": 1,
          "java/io/BufferedReader#close()V": 1,
          "java/io/BufferedReader#readLine()Ljava/lang/String;": 2,
          "java/io/PrintWriter#flush()V": 1,
          "java/io/StringReader#read()I": 1,
          "java/lang/Character#isWhitespace(I)Z": 1,
          "java/lang/Character$UnicodeBlock#of(C)Ljava/lang/Character$UnicodeBlock;": 3,
          "java/lang/Enum#valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;": 2,
          "java/lang/String#split(Ljava/lang/String;)[Ljava/lang/String;": 4,
          "java/lang/ref/WeakReference#get()Ljava/lang/Object;": 1,
          "java/nio/IntBuffer#hasArray()Z": 1,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 1,
          "java/util/Collections#emptyMap()Ljava/util/Map;": 1,
          "java/util/Collections#unmodifiableList(Ljava/util/List;)Ljava/util/List;": 2,
          "java/util/Collections#unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;": 5,
          "java/util/Deque#size()I": 1,
          "java/util/Deque#stream()Ljava/util/stream/Stream;": 4,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#containsAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#hashCode()I": 1,
          "java/util/List#indexOf(Ljava/lang/Object;)I": 1,
          "java/util/List#lastIndexOf(Ljava/lang/Object;)I": 1,
          "java/util/List#toArray()[Ljava/lang/Object;": 1,
          "java/util/List#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 1,
          "java/util/Map#containsValue(Ljava/lang/Object;)Z": 1,
          "java/util/Map#hashCode()I": 1,
          "java/util/Map#putAll(Ljava/util/Map;)V": 1,
          "java/util/Map$Entry#comparingByKey()Ljava/util/Comparator;": 1,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 3,
          "java/util/UUID#fromString(Ljava/lang/String;)Ljava/util/UUID;": 2,
          "java/util/UUID#toString()Ljava/lang/String;": 2,
          "java/util/concurrent/atomic/AtomicInteger#get()I": 1,
          "java/util/regex/Pattern#splitAsStream(Ljava/lang/CharSequence;)Ljava/util/stream/Stream;": 2,
          "me/shedaniel/clothconfig2/api/ConfigBuilder#create()Lme/shedaniel/clothconfig2/api/ConfigBuilder;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getFluidState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/material/FluidState;": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getHeight()I": 1,
          "net/minecraft/client/multiplayer/ClientLevel#getMinY()I": 1,
          "net/minecraft/client/resources/sounds/SoundInstance#getSource()Lnet/minecraft/sounds/SoundSource;": 1,
          "net/minecraft/core/BlockPos#toShortString()Ljava/lang/String;": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/core/registries/BuiltInRegistries#REGISTRY": 1,
          "net/minecraft/core/registries/BuiltInRegistries#SOUND_EVENT": 3,
          "net/minecraft/network/chat/TextColor#getValue()I": 1,
          "net/minecraft/resources/Identifier#toString()Ljava/lang/String;": 1,
          "net/minecraft/sounds/SoundEvent#location()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/world/level/chunk/status/ChunkStatus#FULL": 1,
          "net/minecraft/world/phys/BlockHitResult#getDirection()Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/world/phys/Vec3#dot(Lnet/minecraft/world/phys/Vec3;)D": 1,
          "net/minecraft/world/phys/Vec3#length()D": 2,
          "net/minecraft/world/phys/Vec3#subtract(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;": 1,
          "new net/minecraft/world/level/ChunkPos": 2,
          "org/apache/logging/log4j/Logger#error(Ljava/lang/String;[Ljava/lang/Object;)V": 1,
          "org/apache/logging/log4j/Logger#info(Ljava/lang/String;[Ljava/lang/Object;)V": 14,
          "org/apache/logging/log4j/Logger#warn(Ljava/lang/String;[Ljava/lang/Object;)V": 1,
          "org/lwjgl/openal/AL10#alGetString(I)Ljava/lang/String;": 4,
          "org/lwjgl/openal/AL11#alGetError()I": 1,
          "org/lwjgl/openal/ALC10#alcGetCurrentContext()J": 1,
          "org/lwjgl/openal/EXTThreadLocalContext#alcGetThreadContext()J": 1,
          "org/spongepowered/asm/mixin/injection/invoke/arg/Args#get(I)Ljava/lang/Object;": 1
        },
        "runs": [
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/EnumSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Enum;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/EnumSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueList",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueList",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueList",
            "method": "contains",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueList",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder",
            "method": "builder",
            "desc": "(Ljava/util/function/Function;)Lde/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder;",
            "value": "obj#70"
          },
          {
            "class": "com/sonicether/soundphysics/integration/voicechat/AudioChannel",
            "method": "canBeRemoved",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/LongSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Long;",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/LongSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Long;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/LongSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/LongSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/config/blocksound/BlockTagDefinition",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/config/blocksound/BlockTagDefinition",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/profiling/TaskProfiler$TaskProfilerHandle",
            "method": "getDuration",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/StringMap",
            "method": "builder",
            "desc": "()Lde/maxhenkel/sound_physics_remastered/configbuilder/custom/StringMap$Builder;",
            "value": "obj#100"
          },
          {
            "class": "com/sonicether/soundphysics/ReflectedAudio",
            "method": "getSharedAirspaces",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/DoubleSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Double;",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/DoubleSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Double;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/DoubleSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/DoubleSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/world/ClonedLevelHeightAccessor",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/world/ClonedLevelHeightAccessor",
            "method": "getMinY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/world/ClonedLevelHeightAccessor",
            "method": "getMinBuildHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/world/ClonedClientLevel",
            "method": "getTick",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/FloatConfigEntry",
            "method": "minimumPossibleValue",
            "desc": "()Ljava/lang/Float;",
            "value": "0.000000000000000000000000000000000000000000001f"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/FloatConfigEntry",
            "method": "maximumPossibleValue",
            "desc": "()Ljava/lang/Float;",
            "value": "340282350000000000000000000000000000000f"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/FloatConfigEntry",
            "method": "maximumPossibleValue",
            "desc": "()Ljava/lang/Object;",
            "value": "340282350000000000000000000000000000000f"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/FloatConfigEntry",
            "method": "minimumPossibleValue",
            "desc": "()Ljava/lang/Object;",
            "value": "0.000000000000000000000000000000000000000000001f"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueMap$Builder",
            "method": "put",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Lde/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueMap$Builder;",
            "value": "obj#187"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedPropertyConfig$Builder",
            "method": "path",
            "desc": "(Ljava/nio/file/Path;)Lde/maxhenkel/sound_physics_remastered/configbuilder/CommentedPropertyConfig$Builder;",
            "value": "obj#197"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedPropertyConfig$Builder",
            "method": "strict",
            "desc": "(Z)Lde/maxhenkel/sound_physics_remastered/configbuilder/CommentedPropertyConfig$Builder;",
            "value": "obj#198"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedPropertyConfig$Builder",
            "method": "build",
            "desc": "()Lde/maxhenkel/sound_physics_remastered/configbuilder/CommentedPropertyConfig;",
            "value": "obj#200"
          },
          {
            "class": "com/sonicether/soundphysics/integration/voicechat/SimpleVoiceChatPlugin",
            "method": "getPluginId",
            "desc": "()Ljava/lang/String;",
            "value": "\"sound_physics_remastered\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/BooleanSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Boolean;",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/BooleanSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Boolean;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/BooleanSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/BooleanSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/FloatSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Float;",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/FloatSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Float;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/FloatSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/FloatSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Object;",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueMap",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueMap",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueMap",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/AbstractValueMap",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder",
            "method": "path",
            "desc": "(Ljava/nio/file/Path;)Lde/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder;",
            "value": "obj#276"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder",
            "method": "removeUnused",
            "desc": "(Z)Lde/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder;",
            "value": "obj#278"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder",
            "method": "strict",
            "desc": "(Z)Lde/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder;",
            "value": "obj#279"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder",
            "method": "keepOrder",
            "desc": "(Z)Lde/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder;",
            "value": "obj#280"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder",
            "method": "saveAfterBuild",
            "desc": "(Z)Lde/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder;",
            "value": "obj#281"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder",
            "method": "saveSyncAfterBuild",
            "desc": "(Z)Lde/maxhenkel/sound_physics_remastered/configbuilder/ConfigBuilder$Builder;",
            "value": "obj#282"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/DoubleConfigEntry",
            "method": "minimumPossibleValue",
            "desc": "()Ljava/lang/Double;",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/DoubleConfigEntry",
            "method": "maximumPossibleValue",
            "desc": "()Ljava/lang/Double;",
            "value": "inff"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/DoubleConfigEntry",
            "method": "maximumPossibleValue",
            "desc": "()Ljava/lang/Object;",
            "value": "inff"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/DoubleConfigEntry",
            "method": "minimumPossibleValue",
            "desc": "()Ljava/lang/Object;",
            "value": "0f"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/IntegerConfigEntry",
            "method": "minimumPossibleValue",
            "desc": "()Ljava/lang/Integer;",
            "value": "-2147483648"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/IntegerConfigEntry",
            "method": "maximumPossibleValue",
            "desc": "()Ljava/lang/Integer;",
            "value": "2147483647"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/IntegerConfigEntry",
            "method": "maximumPossibleValue",
            "desc": "()Ljava/lang/Object;",
            "value": "2147483647"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/IntegerConfigEntry",
            "method": "minimumPossibleValue",
            "desc": "()Ljava/lang/Object;",
            "value": "-2147483648"
          },
          {
            "class": "com/sonicether/soundphysics/config/blocksound/BlockIdDefinition",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/config/blocksound/BlockIdDefinition",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/profiling/TaskProfiler",
            "method": "profile",
            "desc": "()Lcom/sonicether/soundphysics/profiling/TaskProfiler$TaskProfilerHandle;",
            "value": "obj#330"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/LongConfigEntry",
            "method": "minimumPossibleValue",
            "desc": "()Ljava/lang/Long;",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/LongConfigEntry",
            "method": "maximumPossibleValue",
            "desc": "()Ljava/lang/Long;",
            "value": "-1"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/LongConfigEntry",
            "method": "maximumPossibleValue",
            "desc": "()Ljava/lang/Object;",
            "value": "-1"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/LongConfigEntry",
            "method": "minimumPossibleValue",
            "desc": "()Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedPropertyConfig",
            "method": "builder",
            "desc": "()Lde/maxhenkel/sound_physics_remastered/configbuilder/CommentedPropertyConfig$Builder;",
            "value": "obj#347"
          },
          {
            "class": "com/sonicether/soundphysics/config/blocksound/BlockSoundTypeDefinition",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/sonicether/soundphysics/config/blocksound/BlockSoundTypeDefinition",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/serializer/StringMapValueSerializer",
            "method": "escape",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/custom/serializer/StringMapValueSerializer",
            "method": "unescape",
            "desc": "(Ljava/lang/String;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties",
            "method": "addHeaderComment",
            "desc": "(Ljava/lang/String;)Lde/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties;",
            "value": "obj#368"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties",
            "method": "readEscapedCharacter",
            "desc": "(ILjava/io/StringReader;)I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties",
            "method": "isSeparator",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties",
            "method": "containsKey",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties",
            "method": "containsValue",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties",
            "method": "keySet",
            "desc": "()Ljava/util/Set;",
            "value": "obj#481"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/IntegerSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Integer;",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/IntegerSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Integer;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/IntegerSerializer",
            "method": "serialize",
            "desc": "(Ljava/lang/Object;)Ljava/lang/String;",
            "value": "\"null\""
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/entry/serializer/IntegerSerializer",
            "method": "deserialize",
            "desc": "(Ljava/lang/String;)Ljava/lang/Object;",
            "value": "0"
          },
          {
            "class": "de/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties$LineReader",
            "method": "fromInputStream",
            "desc": "(Ljava/io/InputStream;)Lde/maxhenkel/sound_physics_remastered/configbuilder/CommentedProperties$LineReader;",
            "value": "obj#527"
          }
        ],
        "insns": 3691
      },
      "verdict": "partly",
      "summary": "4 of 9 listening patch sites land on a Horizon hook (44%); of 16 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "sounds",
      "name": "Sounds",
      "version": "2.6.0",
      "license": "ARR",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/imb11/sounds/loaders/fabric/SoundsFabric"
        },
        {
          "kind": "fabric-datagen",
          "value": "dev/imb11/sounds/loaders/fabric/datagen/SoundsDatagenEntrypoint"
        },
        {
          "kind": "modmenu",
          "value": "dev/imb11/sounds/loaders/fabric/ModMenuCompat"
        },
        {
          "kind": "mru",
          "value": "dev/imb11/sounds/SoundsClient"
        },
        {
          "kind": "mru_client",
          "value": "dev/imb11/sounds/SoundsClient"
        }
      ],
      "mixin_configs": [
        "sounds.mixins.json"
      ],
      "depends": [
        "mru",
        "yet_another_config_lib_v3"
      ],
      "classes": 85,
      "methods": 367,
      "sites": [
        {
          "mixin": "dev/imb11/sounds/mixin/ActionControllerElementMixin",
          "targets": [
            "dev/isxander/yacl3/gui/controllers/ActionController$ActionControllerElement"
          ],
          "handler": "$dontClickSound",
          "kind": "inject",
          "method": "executeAction",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at dev/isxander/yacl3/gui/controllers/ActionController$ActionControllerElement#executeAction HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/BlockSoundMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour"
          ],
          "handler": "$manageCustomSounds",
          "kind": "inject",
          "method": "getSoundType",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/state/BlockBehaviour#getSoundType HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/SoundManagerMixin",
          "targets": [
            "net/minecraft/client/sounds/SoundManager"
          ],
          "handler": "$sounds_clear_found",
          "kind": "inject",
          "method": "prepare",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/sounds/SoundManager#prepare HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/SoundManagerMixin",
          "targets": [
            "net/minecraft/client/sounds/SoundManager"
          ],
          "handler": "$sounds_capture_soundsjson",
          "kind": "inject",
          "method": "prepare",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/sounds/SoundManager$Preparations;handleRegistration(Lnet/minecraft/resources/Identifier;Lnet/minecraft/client/resources/sounds/SoundEventRegistration;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/sounds/SoundManager#prepare INVOKE"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/SoundsOptionsScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/options/SoundOptionsScreen"
          ],
          "handler": "$add_sounds_button",
          "kind": "inject",
          "method": "addOptions",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/options/SoundOptionsScreen#addOptions TAIL"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/TitleScreenWidget",
          "targets": [
            "net/minecraft/client/gui/screens/TitleScreen"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/TitleScreen#init HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/UserMixin",
          "targets": [
            "net/minecraft/client/User"
          ],
          "handler": "$sounds_clear_found",
          "kind": "inject",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/User#<init> HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/compat/InventiveInventoryCompatMixin",
          "targets": [
            "net/strobel/inventive_inventory/features/sorting/SortingHandler"
          ],
          "handler": "temporarilyDisableInventorySounds",
          "kind": "inject",
          "method": "sort",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/strobel/inventive_inventory/features/sorting/SortingHandler#sort HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/compat/InventiveInventoryCompatMixin",
          "targets": [
            "net/strobel/inventive_inventory/features/sorting/SortingHandler"
          ],
          "handler": "reenableInventorySounds",
          "kind": "inject",
          "method": "sort",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/strobel/inventive_inventory/features/sorting/SortingHandler#sort RETURN"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/compat/InventorioCompatMixin",
          "targets": [
            "de/rubixdev/inventorio/player/InventorioScreenHandler"
          ],
          "handler": "$update_deep_pockets_capacity",
          "kind": "inject",
          "method": "updateDeepPocketsCapacity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at de/rubixdev/inventorio/player/InventorioScreenHandler#updateDeepPocketsCapacity HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/compat/TrashSlotFix",
          "targets": [
            "net/blay09/mods/trashslot/client/deletion/DefaultDeletionProvider"
          ],
          "handler": "itemDeleteTrashSlot",
          "kind": "inject",
          "method": "deleteMouseItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/blay09/mods/trashslot/client/deletion/DefaultDeletionProvider#deleteMouseItem HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/BundleMouseActionsMixin",
          "targets": [
            "net/minecraft/client/gui/BundleMouseActions"
          ],
          "handler": "$hotbar_pick_sound_effect",
          "kind": "inject",
          "method": "onMouseScrolled",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/BundleMouseActions#onMouseScrolled RETURN"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/CreativeInventorySoundEffects",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen"
          ],
          "handler": "$pre_item_delete_sound_effect",
          "kind": "inject",
          "method": "slotClicked",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#slotClicked HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/CreativeInventorySoundEffects",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen"
          ],
          "handler": "$mass_item_delete_sound_effect",
          "kind": "inject",
          "method": "slotClicked",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;handleCreativeModeItemAdd(Lnet/minecraft/world/item/ItemStack;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#slotClicked INVOKE"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/CreativeInventorySoundEffects",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen"
          ],
          "handler": "$choose_item_sound_effect",
          "kind": "inject",
          "method": "slotClicked",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen$ItemPickerMenu;setCarried(Lnet/minecraft/world/item/ItemStack;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#slotClicked INVOKE"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/CreativeScreenHandlerMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen$ItemPickerMenu"
          ],
          "handler": "$item_delete_sound_effect",
          "kind": "inject",
          "method": "setCarried",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen$ItemPickerMenu#setCarried HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/HotbarSoundEffects",
          "targets": [
            "net/minecraft/world/entity/player/Inventory"
          ],
          "handler": "$hotbar_scroll_sound_effect",
          "kind": "inject",
          "method": "setSelectedSlot",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Inventory#setSelectedSlot RETURN"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/HotbarSoundEffects",
          "targets": [
            "net/minecraft/world/entity/player/Inventory"
          ],
          "handler": "$hotbar_pick_sound_effect",
          "kind": "inject",
          "method": "pickSlot",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Inventory#pickSlot RETURN"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/ItemDragSoundEffect",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "$item_drag_sound_effect",
          "kind": "inject",
          "method": "mouseDragged",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#mouseDragged INVOKE"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/ItemDropSoundEffect",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "$drop_selected_item_sound_effect",
          "kind": "inject",
          "method": "drop",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#drop HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/ItemTransferSoundEffects",
          "targets": [
            "net/minecraft/world/inventory/AbstractContainerMenu"
          ],
          "handler": "$item_transfer_sound_effects",
          "kind": "inject",
          "method": "doClick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/AbstractContainerMenu#doClick HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/MentionSoundEffect",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "$cooldown_period",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/MentionSoundEffect",
          "targets": [
            "net/minecraft/client/gui/components/ChatComponent"
          ],
          "handler": "$mention_recieve_sound_effect",
          "kind": "inject",
          "method": "addMessage",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_chat_received",
          "why": "ClientChatReceivedEvent: a chat message arrives"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/ScreenSoundEffect",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "$open_close_inventory_sound_effect",
          "kind": "inject",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_opening",
          "why": "ScreenEvent.Opening: a screen opens"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/ui/SubtitleOverlayMixin",
          "targets": [
            "net/minecraft/client/gui/components/SubtitleOverlay"
          ],
          "handler": "$preventSubtitleFromUiSounds",
          "kind": "inject",
          "method": "onPlaySound",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/SubtitleOverlay#onPlaySound HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/actions/CakeEatSoundMixin",
          "targets": [
            "net/minecraft/world/level/block/CakeBlock"
          ],
          "handler": "eatCake",
          "kind": "inject",
          "method": "eat",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/Identifier;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/CakeBlock#eat INVOKE"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/actions/EnderpearlVarietyMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearl"
          ],
          "handler": "$enderpearl_variety_effect",
          "kind": "inject",
          "method": "playSound",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearl#playSound HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/actions/FrostWalkerSoundsMixin",
          "targets": [
            "net/minecraft/world/level/block/FrostedIceBlock"
          ],
          "handler": "$frost_walker_freeze_sound_effect",
          "kind": "inject",
          "method": "onPlace",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/FrostedIceBlock#onPlace TAIL"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/actions/LeadSnappingSoundMixin",
          "targets": [
            "net/minecraft/world/entity/Leashable"
          ],
          "handler": "$lead_snapping_sound_effect",
          "kind": "inject",
          "method": "dropLeash",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Leashable#dropLeash TAIL"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/actions/PlantPotFillSoundMixin",
          "targets": [
            "net/minecraft/world/level/block/FlowerPotBlock"
          ],
          "handler": "playPlantPotFillSound",
          "kind": "inject",
          "method": "useWithoutItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;gameEvent(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/Holder;Lnet/minecraft/core/BlockPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/FlowerPotBlock#useWithoutItem INVOKE"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/actions/PlantPotFillSoundMixin",
          "targets": [
            "net/minecraft/world/level/block/FlowerPotBlock"
          ],
          "handler": "playPlantPotFillSound",
          "kind": "inject",
          "method": "useItemOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;consume(ILnet/minecraft/world/entity/LivingEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/FlowerPotBlock#useItemOn INVOKE"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/mechanics/BowPullSoundEffect",
          "targets": [
            "net/minecraft/world/item/BowItem"
          ],
          "handler": "$start_bow_pull_sound",
          "kind": "inject",
          "method": "use",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;startUsingItem(Lnet/minecraft/world/InteractionHand;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/BowItem#use INVOKE"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/mechanics/BowPullSoundEffect",
          "targets": [
            "net/minecraft/world/item/BowItem"
          ],
          "handler": "$stop_bow_pull_sound",
          "kind": "inject",
          "method": "releaseUsing",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/BowItem#releaseUsing HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/mechanics/DaylightDetectorBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/DaylightDetectorBlock"
          ],
          "handler": "$daylight_detector_use_sound_effect",
          "kind": "inject",
          "method": "useWithoutItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/DaylightDetectorBlock#useWithoutItem HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/mechanics/FurnaceMinecartEntityMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/MinecartFurnace"
          ],
          "handler": "$furnace_minecart_fuel_sound_effect",
          "kind": "inject",
          "method": "interact",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/vehicle/minecart/MinecartFurnace#interact TAIL"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/mechanics/JukeboxBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/JukeboxBlockEntity"
          ],
          "handler": "$jukebox_use_sound_effect",
          "kind": "inject",
          "method": "setTheItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/JukeboxBlockEntity#setTheItem HEAD"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/mechanics/RepeaterBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/RepeaterBlock"
          ],
          "handler": "$repeater_use_sound_effect",
          "kind": "inject",
          "method": "useWithoutItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;setBlockAndUpdate(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RepeaterBlock#useWithoutItem INVOKE"
        },
        {
          "mixin": "dev/imb11/sounds/mixin/world/mechanics/SwordSwingSoundEffect",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "$start_sword_swoosh_sound",
          "kind": "inject",
          "method": "swingAndResetAttackStrength",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#swingAndResetAttackStrength HEAD"
        }
      ],
      "listening": 29,
      "accessors": 1,
      "hooks": {
        "client_chat_received": 1,
        "hud": 1,
        "screen_opening": 1
      },
      "wanted": {
        "de/rubixdev/inventorio/player/InventorioScreenHandler#updateDeepPocketsCapacity @HEAD": 1,
        "dev/isxander/yacl3/gui/controllers/ActionController$ActionControllerElement#executeAction @HEAD": 1,
        "net/blay09/mods/trashslot/client/deletion/DefaultDeletionProvider#deleteMouseItem @HEAD": 1,
        "net/minecraft/client/User#<init> @HEAD": 1,
        "net/minecraft/client/gui/BundleMouseActions#onMouseScrolled @RETURN": 1,
        "net/minecraft/client/gui/components/SubtitleOverlay#onPlaySound @HEAD": 1,
        "net/minecraft/client/gui/screens/TitleScreen#init @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#slotClicked @HEAD": 1,
        "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen$ItemPickerMenu#setCarried @HEAD": 1,
        "net/minecraft/client/gui/screens/options/SoundOptionsScreen#addOptions @TAIL": 1,
        "net/minecraft/client/sounds/SoundManager#prepare @HEAD": 1,
        "net/minecraft/world/entity/Leashable#dropLeash @TAIL": 1,
        "net/minecraft/world/entity/LivingEntity#drop @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#swingAndResetAttackStrength @HEAD": 1,
        "net/minecraft/world/entity/player/Inventory#pickSlot @RETURN": 1,
        "net/minecraft/world/entity/player/Inventory#setSelectedSlot @RETURN": 1,
        "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearl#playSound @HEAD": 1,
        "net/minecraft/world/entity/vehicle/minecart/MinecartFurnace#interact @TAIL": 1,
        "net/minecraft/world/inventory/AbstractContainerMenu#doClick @HEAD": 1,
        "net/minecraft/world/item/BowItem#releaseUsing @HEAD": 1,
        "net/minecraft/world/level/block/DaylightDetectorBlock#useWithoutItem @HEAD": 1,
        "net/minecraft/world/level/block/FrostedIceBlock#onPlace @TAIL": 1,
        "net/minecraft/world/level/block/entity/JukeboxBlockEntity#setTheItem @HEAD": 1,
        "net/minecraft/world/level/block/state/BlockBehaviour#getSoundType @HEAD": 1,
        "net/strobel/inventive_inventory/features/sorting/SortingHandler#sort @HEAD": 1,
        "net/strobel/inventive_inventory/features/sorting/SortingHandler#sort @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#mouseDragged @INVOKE": 1,
        "net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen#slotClicked @INVOKE": 2,
        "net/minecraft/client/sounds/SoundManager#prepare @INVOKE": 1,
        "net/minecraft/world/item/BowItem#use @INVOKE": 1,
        "net/minecraft/world/level/block/CakeBlock#eat @INVOKE": 1,
        "net/minecraft/world/level/block/FlowerPotBlock#useItemOn @INVOKE": 1,
        "net/minecraft/world/level/block/FlowerPotBlock#useWithoutItem @INVOKE": 1,
        "net/minecraft/world/level/block/RepeaterBlock#useWithoutItem @INVOKE": 1
      },
      "api": [
        {
          "class": "FabricCodecDataProvider",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTags",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartLevelTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CommonLifecycleEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CommonLifecycleEvents$TagsLoaded",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ConventionalItemTags",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DataGeneratorEntrypoint",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack$RegistryDependentFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceReloaderKeys",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 85,
        "features": {
          "screen": 4,
          "events": 1,
          "mixin": 33
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 85,
        "methods": 138,
        "tried": 138,
        "completed": 51,
        "handlers_tried": 3,
        "handlers_completed": 1,
        "missing": {
          "[Ldev/imb11/sounds/api/event/SoundDefinitionReplacementEvent$ResponseType;#clone()Ljava/lang/Object;": 1,
          "[Ldev/imb11/sounds/dynamic/DynamicSoundHelper$BlockSoundType;#clone()Ljava/lang/Object;": 1,
          "com/mojang/datafixers/util/Either#right(Ljava/lang/Object;)Lcom/mojang/datafixers/util/Either;": 2,
          "com/mojang/serialization/JsonOps#INSTANCE": 20,
          "dev/imb11/sounds/gui/GreyButton#getX()I": 1,
          "dev/imb11/sounds/gui/ImageButtonWidget#getX()I": 1,
          "dev/imb11/sounds/sound/context/RepeaterSoundContext#createSoundInstance(Lnet/minecraft/resources/Identifier;FFZ)Ldev/imb11/sounds/api/config/ConfiguredSimpleSoundInstance;": 2,
          "dev/isxander/yacl3/api/YetAnotherConfigLib#create(Ldev/isxander/yacl3/config/v2/api/ConfigClassHandler;Ldev/isxander/yacl3/api/YetAnotherConfigLib$ConfigBackedBuilder;)Ldev/isxander/yacl3/api/YetAnotherConfigLib;": 5,
          "dev/isxander/yacl3/config/v2/api/ConfigClassHandler#instance()Ljava/lang/Object;": 1,
          "dev/isxander/yacl3/config/v2/api/ConfigClassHandler#save()V": 1,
          "java/util/Collection#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/datagen/v1/FabricDataGenerator#createPack()Lnet/fabricmc/fabric/api/datagen/v1/FabricDataGenerator$Pack;": 1,
          "net/minecraft/client/gui/GuiGraphicsExtractor#pose()Lorg/joml/Matrix3x2fStack;": 1,
          "net/minecraft/client/gui/narration/NarratedElementType#HINT": 1,
          "net/minecraft/core/BlockPos#ZERO": 1,
          "net/minecraft/core/Holder#unwrapKey()Ljava/util/Optional;": 1,
          "net/minecraft/core/Registry#getResourceKey(Ljava/lang/Object;)Ljava/util/Optional;": 1,
          "net/minecraft/core/Registry#key()Lnet/minecraft/resources/ResourceKey;": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/resources/ResourceKey#codec(Lnet/minecraft/resources/ResourceKey;)Lcom/mojang/serialization/Codec;": 1,
          "net/minecraft/sounds/SoundEvent#createVariableRangeEvent(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/sounds/SoundEvent;": 1,
          "net/minecraft/sounds/SoundEvent#location()Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraft/sounds/SoundSource#UI": 1,
          "net/minecraft/world/level/block/SoundType#STONE": 1
        },
        "runs": [
          {
            "class": "dev/imb11/sounds/api/SoundDefinition$Builder",
            "method": "setVolume",
            "desc": "(F)Ldev/imb11/sounds/api/SoundDefinition$Builder;",
            "value": "obj#12"
          },
          {
            "class": "dev/imb11/sounds/api/SoundDefinition$Builder",
            "method": "setPitch",
            "desc": "(F)Ldev/imb11/sounds/api/SoundDefinition$Builder;",
            "value": "obj#14"
          },
          {
            "class": "dev/imb11/sounds/api/SoundDefinition$Builder",
            "method": "build",
            "desc": "()Ldev/imb11/sounds/api/SoundDefinition;",
            "value": "obj#17"
          },
          {
            "class": "dev/imb11/sounds/api/config/ConfiguredSound",
            "method": "addExtraOptions",
            "desc": "(Ldev/imb11/sounds/api/config/ConfiguredSound;)Ljava/util/ArrayList;",
            "value": "obj#38"
          },
          {
            "class": "dev/imb11/sounds/api/config/ConfiguredSound",
            "method": "shouldPlay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/imb11/sounds/api/config/ConfiguredSound",
            "method": "getPitch",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/imb11/sounds/api/config/ConfiguredSound",
            "method": "getVolume",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/imb11/sounds/api/config/DynamicConfiguredSound",
            "method": "canUseDynamicSounds",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/imb11/sounds/dynamic/TagPairHelper",
            "method": "getAllTagPairs",
            "desc": "()Ljava/util/Collection;",
            "value": "obj#65"
          },
          {
            "class": "dev/imb11/sounds/api/event/SoundDefinitionReplacementEvent",
            "method": "fire",
            "desc": "(Lnet/minecraft/world/level/block/SoundType;)Ldev/imb11/sounds/api/event/SoundDefinitionReplacementEvent$Response;",
            "value": "obj#69"
          },
          {
            "class": "dev/imb11/sounds/sound/context/ItemStackSoundContext",
            "method": "of",
            "desc": "(Ldev/imb11/sounds/dynamic/DynamicSoundHelper$BlockSoundType;)Ldev/imb11/sounds/sound/context/ItemStackSoundContext;",
            "value": "obj#75"
          },
          {
            "class": "dev/imb11/sounds/api/datagen/SoundDefinitionProvider",
            "method": "create",
            "desc": "(Lnet/minecraft/resources/Identifier;)Ldev/imb11/sounds/api/SoundDefinition$Builder;",
            "value": "obj#79"
          },
          {
            "class": "dev/imb11/sounds/sound/context/RepeaterSoundContext",
            "method": "of",
            "desc": "()Ldev/imb11/sounds/sound/context/RepeaterSoundContext;",
            "value": "obj#98"
          },
          {
            "class": "dev/imb11/sounds/api/config/ConfiguredSimpleSoundInstance",
            "method": "shouldPreventSubtitle",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/imb11/sounds/api/config/TagPair$Builder",
            "method": "enabled",
            "desc": "(Z)Ldev/imb11/sounds/api/config/TagPair$Builder;",
            "value": "obj#128"
          },
          {
            "class": "dev/imb11/sounds/api/config/TagPair$Builder",
            "method": "build",
            "desc": "()Ldev/imb11/sounds/api/config/TagPair;",
            "value": "obj#136"
          },
          {
            "class": "dev/imb11/sounds/api/config/TagPair",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/imb11/sounds/util/MixinStatics",
            "method": "isNotSpecialKey",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "dev/imb11/sounds/api/event/SoundDefinitionReplacementEvent$Response",
            "method": "pass",
            "desc": "()Ldev/imb11/sounds/api/event/SoundDefinitionReplacementEvent$Response;",
            "value": "obj#158"
          },
          {
            "class": "dev/imb11/sounds/api/event/SoundDefinitionReplacementEvent$Response",
            "method": "override",
            "desc": "(Lnet/minecraft/world/level/block/SoundType;)Ldev/imb11/sounds/api/event/SoundDefinitionReplacementEvent$Response;",
            "value": "obj#159"
          },
          {
            "class": "dev/imb11/sounds/api/event/SoundDefinitionReplacementEvent$Response",
            "method": "cancel",
            "desc": "()Ldev/imb11/sounds/api/event/SoundDefinitionReplacementEvent$Response;",
            "value": "obj#160"
          },
          {
            "class": "dev/imb11/sounds/sound/context/ScreenHandlerSoundContext",
            "method": "of",
            "desc": "(Z)Ldev/imb11/sounds/sound/context/ScreenHandlerSoundContext;",
            "value": "obj#171"
          }
        ],
        "insns": 1120
      },
      "verdict": "no",
      "summary": "only 3 of 29 listening patch sites have a hook (10%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "spark",
      "name": "spark",
      "version": "1.10.187",
      "license": "GNU General Public License v3.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "me/lucko/spark/fabric/FabricSparkMod::initializeClient"
        },
        {
          "kind": "main",
          "value": "me/lucko/spark/fabric/FabricSparkMod"
        }
      ],
      "mixin_configs": [
        "spark.mixins.json"
      ],
      "depends": [],
      "classes": 1633,
      "methods": 20533,
      "sites": [],
      "listening": 0,
      "accessors": 8,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 7
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 6
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 2
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 2
        },
        {
          "class": "FabricClientCommandSource",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Person",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ServerTickEvents",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 2
        },
        {
          "class": "ServerTickEvents$StartTick",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 2
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents$ClientStopping",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopping",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerTickEvents$EndTick",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "TriState",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 1633,
        "features": {
          "command": 1,
          "events": 1,
          "mixin": 6
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 1633,
        "methods": 14070,
        "tried": 600,
        "completed": 151,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lme/lucko/spark/common/monitor/memory/MemoryMonitor;#clone()Ljava/lang/Object;": 1,
          "[Lme/lucko/spark/common/util/MediaTypes;#clone()Ljava/lang/Object;": 1,
          "[Lme/lucko/spark/fabric/smap/MixinUtils;#clone()Ljava/lang/Object;": 1,
          "com/google/gson/JsonElement#getAsJsonObject()Lcom/google/gson/JsonObject;": 1,
          "com/google/gson/stream/JsonReader#nextString()Ljava/lang/String;": 2,
          "java/io/InputStream#read()I": 4,
          "java/lang/Boolean#hashCode(Z)I": 1,
          "java/lang/String#join(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;": 1,
          "java/lang/System#arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V": 3,
          "java/nio/ByteBuffer#hasArray()Z": 7,
          "java/nio/ByteBuffer#position()I": 1,
          "java/nio/ByteBuffer#remaining()I": 2,
          "java/nio/ByteBuffer#wrap([B)Ljava/nio/ByteBuffer;": 5,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 3,
          "java/util/Collections#emptyList()Ljava/util/List;": 71,
          "java/util/Collections#unmodifiableList(Ljava/util/List;)Ljava/util/List;": 1,
          "java/util/Collections#unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;": 6,
          "java/util/concurrent/locks/ReentrantLock#lock()V": 1,
          "java/util/function/BiPredicate#test(Ljava/lang/Object;Ljava/lang/Object;)Z": 3,
          "java/util/function/Consumer#accept(Ljava/lang/Object;)V": 1,
          "java/util/function/UnaryOperator#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/stream/Stream#empty()Ljava/util/stream/Stream;": 1,
          "me/lucko/spark/api/statistic/StatisticWindow$CpuUsage#ordinal()I": 2,
          "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder#apply(Ljava/util/function/Consumer;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;": 1,
          "me/lucko/spark/lib/adventure/text/JoinConfiguration$Builder#build()Ljava/lang/Object;": 1,
          "me/lucko/spark/lib/adventure/text/TextComponent#children()Ljava/util/List;": 1,
          "me/lucko/spark/lib/protobuf/FieldType#ordinal()I": 1,
          "me/lucko/spark/lib/protobuf/MapFieldLite#containsKey(Ljava/lang/Object;)Z": 3,
          "me/lucko/spark/lib/protobuf/MapFieldLite#isEmpty()Z": 6,
          "me/lucko/spark/lib/protobuf/MapFieldLite#size()I": 3,
          "new com/google/gson/JsonObject": 1,
          "new com/google/gson/JsonSyntaxException": 2
        },
        "runs": [
          {
            "class": "me/lucko/spark/lib/protobuf/JavaFeaturesProto$JavaFeatures$NestInFileClassFeature$NestInFileClass$1",
            "method": "findValueByNumber",
            "desc": "(I)Lme/lucko/spark/lib/protobuf/JavaFeaturesProto$JavaFeatures$NestInFileClassFeature$NestInFileClass;",
            "value": "obj#13"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/JavaFeaturesProto$JavaFeatures$NestInFileClassFeature$NestInFileClass$1",
            "method": "findValueByNumber",
            "desc": "(I)Lme/lucko/spark/lib/protobuf/Internal$EnumLite;",
            "value": "obj#13"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/DescriptorProtos$FieldDescriptorProto$Type$TypeVerifier",
            "method": "isInRange",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/FieldInfo",
            "method": "getFieldNumber",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/FieldInfo",
            "method": "getPresenceMask",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/FieldInfo",
            "method": "isRequired",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/FieldInfo",
            "method": "isEnforceUtf8",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/FieldInfo",
            "method": "newBuilder",
            "desc": "()Lme/lucko/spark/lib/protobuf/FieldInfo$Builder;",
            "value": "obj#81"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/FieldInfo",
            "method": "isExactlyOneBitSet",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "append",
            "desc": "(Lme/lucko/spark/lib/adventure/text/Component;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#83"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "style",
            "desc": "(Lme/lucko/spark/lib/adventure/text/format/Style;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#92"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "font",
            "desc": "(Lme/lucko/spark/lib/adventure/key/Key;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#96"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "color",
            "desc": "(Lme/lucko/spark/lib/adventure/text/format/TextColor;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#98"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "colorIfAbsent",
            "desc": "(Lme/lucko/spark/lib/adventure/text/format/TextColor;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#100"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "shadowColor",
            "desc": "(Lme/lucko/spark/lib/adventure/util/ARGBLike;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#102"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "shadowColorIfAbsent",
            "desc": "(Lme/lucko/spark/lib/adventure/util/ARGBLike;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#104"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "clickEvent",
            "desc": "(Lme/lucko/spark/lib/adventure/text/event/ClickEvent;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#110"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "hoverEvent",
            "desc": "(Lme/lucko/spark/lib/adventure/text/event/HoverEventSource;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#112"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "insertion",
            "desc": "(Ljava/lang/String;)Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#114"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "resetStyle",
            "desc": "()Lme/lucko/spark/lib/adventure/text/ComponentBuilder;",
            "value": "obj#117"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "styleBuilder",
            "desc": "()Lme/lucko/spark/lib/adventure/text/format/Style$Builder;",
            "value": "obj#119"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "hasStyle",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "insertion",
            "desc": "(Ljava/lang/String;)Lme/lucko/spark/lib/adventure/text/format/StyleSetter;",
            "value": "obj#123"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "hoverEvent",
            "desc": "(Lme/lucko/spark/lib/adventure/text/event/HoverEventSource;)Lme/lucko/spark/lib/adventure/text/format/StyleSetter;",
            "value": "obj#125"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "clickEvent",
            "desc": "(Lme/lucko/spark/lib/adventure/text/event/ClickEvent;)Lme/lucko/spark/lib/adventure/text/format/StyleSetter;",
            "value": "obj#127"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "shadowColorIfAbsent",
            "desc": "(Lme/lucko/spark/lib/adventure/util/ARGBLike;)Lme/lucko/spark/lib/adventure/text/format/StyleSetter;",
            "value": "obj#133"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "shadowColor",
            "desc": "(Lme/lucko/spark/lib/adventure/util/ARGBLike;)Lme/lucko/spark/lib/adventure/text/format/StyleSetter;",
            "value": "obj#135"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "colorIfAbsent",
            "desc": "(Lme/lucko/spark/lib/adventure/text/format/TextColor;)Lme/lucko/spark/lib/adventure/text/format/StyleSetter;",
            "value": "obj#137"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "color",
            "desc": "(Lme/lucko/spark/lib/adventure/text/format/TextColor;)Lme/lucko/spark/lib/adventure/text/format/StyleSetter;",
            "value": "obj#139"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/AbstractComponentBuilder",
            "method": "font",
            "desc": "(Lme/lucko/spark/lib/adventure/key/Key;)Lme/lucko/spark/lib/adventure/text/format/StyleSetter;",
            "value": "obj#141"
          },
          {
            "class": "me/lucko/spark/minecraft/sender/MinecraftClientCommandSender",
            "method": "hasPermission",
            "desc": "(Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "me/lucko/spark/common/sampler/async/jfr/JfrReader$ContendedLock",
            "method": "sameGroup",
            "desc": "(Lme/lucko/spark/common/sampler/async/jfr/JfrReader$Event;)Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/common/sampler/async/jfr/JfrReader$ContendedLock",
            "method": "classId",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/common/sampler/async/jfr/JfrReader$ContendedLock",
            "method": "value",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Int64Value",
            "method": "getValue",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Utf8",
            "method": "isValidUtf8",
            "desc": "([BII)Z",
            "value": "1"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Utf8",
            "method": "partialIsValidUtf8",
            "desc": "(I[BII)I",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Utf8",
            "method": "incompleteStateFor",
            "desc": "(I)I",
            "value": "-1"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Utf8",
            "method": "incompleteStateFor",
            "desc": "(II)I",
            "value": "-1"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Utf8",
            "method": "incompleteStateFor",
            "desc": "(III)I",
            "value": "-1"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Utf8",
            "method": "incompleteStateFor",
            "desc": "(Ljava/nio/ByteBuffer;III)I",
            "value": "-1"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Utf8",
            "method": "encodedLength",
            "desc": "(Ljava/lang/String;)I",
            "value": "4"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Utf8",
            "method": "encodedLengthGeneral",
            "desc": "(Ljava/lang/String;I)I",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/Utf8",
            "method": "estimateConsecutiveAscii",
            "desc": "(Ljava/nio/ByteBuffer;II)I",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/common/command/sender/CommandSender$Data",
            "method": "isPlayer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/DescriptorProtos$MethodOptions$IdempotencyLevel$1",
            "method": "findValueByNumber",
            "desc": "(I)Lme/lucko/spark/lib/protobuf/DescriptorProtos$MethodOptions$IdempotencyLevel;",
            "value": "obj#203"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/DescriptorProtos$MethodOptions$IdempotencyLevel$1",
            "method": "findValueByNumber",
            "desc": "(I)Lme/lucko/spark/lib/protobuf/Internal$EnumLite;",
            "value": "obj#203"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/BinaryWriter$SafeHeapWriter",
            "method": "bytesWrittenToCurrentBuffer",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/BinaryWriter$SafeHeapWriter",
            "method": "spaceLeft",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/BlockNBTComponent$LocalPos",
            "method": "localPos",
            "desc": "(DDD)Lme/lucko/spark/lib/adventure/text/BlockNBTComponent$LocalPos;",
            "value": "obj#301"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/BlockNBTComponent$LocalPos",
            "method": "of",
            "desc": "(DDD)Lme/lucko/spark/lib/adventure/text/BlockNBTComponent$LocalPos;",
            "value": "obj#302"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/Component",
            "method": "append",
            "desc": "(Ljava/util/List;)Lme/lucko/spark/lib/adventure/text/Component;",
            "value": "obj#349"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/Component",
            "method": "asComponent",
            "desc": "()Lme/lucko/spark/lib/adventure/text/Component;",
            "value": "obj#409"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/ComponentCompaction",
            "method": "isBlank",
            "desc": "(Lme/lucko/spark/lib/adventure/text/Component;)Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/ComponentCompaction",
            "method": "isText",
            "desc": "(Lme/lucko/spark/lib/adventure/text/Component;)Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/serializer/legacy/CharacterAndFormatImpl",
            "method": "character",
            "desc": "()C",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/serializer/legacy/CharacterAndFormatImpl",
            "method": "caseInsensitive",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/adventure/text/serializer/legacy/CharacterAndFormatImpl",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$SystemStatistics$Gc",
            "method": "getTotal",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$SystemStatistics$Gc",
            "method": "getAvgTime",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$SystemStatistics$Gc",
            "method": "getAvgFrequency",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/DescriptorProtos$FeatureSet$Utf8Validation$1",
            "method": "findValueByNumber",
            "desc": "(I)Lme/lucko/spark/lib/protobuf/DescriptorProtos$FeatureSet$Utf8Validation;",
            "value": "obj#444"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/DescriptorProtos$FeatureSet$Utf8Validation$1",
            "method": "findValueByNumber",
            "desc": "(I)Lme/lucko/spark/lib/protobuf/Internal$EnumLite;",
            "value": "obj#444"
          },
          {
            "class": "me/lucko/spark/lib/adventure/internal/properties/AdventurePropertiesImpl$PropertyImpl",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/adventure/internal/properties/AdventurePropertiesImpl$PropertyImpl",
            "method": "hashCode",
            "desc": "()I",
            "value": "3392903"
          },
          {
            "class": "me/lucko/spark/lib/adventure/pointer/Pointers",
            "method": "empty",
            "desc": "()Lme/lucko/spark/lib/adventure/pointer/Pointers;",
            "value": "obj#461"
          },
          {
            "class": "me/lucko/spark/lib/adventure/pointer/Pointers",
            "method": "builder",
            "desc": "()Lme/lucko/spark/lib/adventure/pointer/Pointers$Builder;",
            "value": "obj#462"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/DescriptorProtos$FeatureSetDefaults$FeatureSetEditionDefault",
            "method": "hasEdition",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/DescriptorProtos$FeatureSetDefaults$FeatureSetEditionDefault",
            "method": "getEdition",
            "desc": "()Lme/lucko/spark/lib/protobuf/DescriptorProtos$Edition;",
            "value": "obj#470"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/DescriptorProtos$FeatureSetDefaults$FeatureSetEditionDefault",
            "method": "hasOverridableFeatures",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/DescriptorProtos$FeatureSetDefaults$FeatureSetEditionDefault",
            "method": "hasFixedFeatures",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/lib/protobuf/ExtensionSchemaLite",
            "method": "hasExtensions",
            "desc": "(Lme/lucko/spark/lib/protobuf/MessageLite;)Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$HealthMetadata",
            "method": "hasCreator",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$HealthMetadata",
            "method": "hasPlatformMetadata",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$HealthMetadata",
            "method": "hasPlatformStatistics",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$HealthMetadata",
            "method": "hasSystemStatistics",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$HealthMetadata",
            "method": "getGeneratedTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$HealthMetadata",
            "method": "internalGetServerConfigurations",
            "desc": "()Lme/lucko/spark/lib/protobuf/MapFieldLite;",
            "value": "obj#511"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$HealthMetadata",
            "method": "internalGetSources",
            "desc": "()Lme/lucko/spark/lib/protobuf/MapFieldLite;",
            "value": "obj#511"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$HealthMetadata",
            "method": "internalGetExtraPlatformMetadata",
            "desc": "()Lme/lucko/spark/lib/protobuf/MapFieldLite;",
            "value": "obj#511"
          },
          {
            "class": "me/lucko/spark/proto/SparkProtos$HealthMetadata",
            "method": "hasMetrics",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 11831
      },
      "verdict": "no",
      "summary": "no patch sites and no content: nothing to convert"
    },
    {
      "mod_id": "subtle_effects",
      "name": "Subtle Effects",
      "version": "1.15.1-hotfix.1",
      "license": "All rights reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "einstein/subtle_effects/SubtleEffectsFabricClient"
        },
        {
          "kind": "main",
          "value": "einstein/subtle_effects/SubtleEffectsFabric"
        }
      ],
      "mixin_configs": [
        "subtle_effects.mixins.json",
        "subtle_effects.fabric.mixins.json"
      ],
      "depends": [
        "fzzy_config"
      ],
      "classes": 497,
      "methods": 2423,
      "sites": [
        {
          "mixin": "einstein/subtle_effects/mixin/client/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "clinit",
          "kind": "inject",
          "method": "<clinit>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#<clinit> TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "entityTick",
          "kind": "inject",
          "method": "tickNonPassenger",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;tick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "entityRideTick",
          "kind": "inject",
          "method": "tickPassenger",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;rideTick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#tickPassenger INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "animateTick",
          "kind": "inject",
          "method": "doAnimateTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/Block;animateTick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#doAnimateTick INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "cullNotLoaded",
          "kind": "inject",
          "method": "doAddParticle",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#doAddParticle HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "cullNotLoaded",
          "kind": "wrap-operation",
          "method": "doAddParticle",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/phys/Vec3;distanceToSqr(DDD)D",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ClientLevelMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "modifyCauldronRippleParticlePos",
          "kind": "wrap-operation",
          "method": "tickWeatherEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ClientPacketListenerMixin",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "handleExplosion",
          "kind": "inject",
          "method": "handleExplosion",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/FabricGuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;extractDebugOverlay(Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#extractRenderState INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/FabricMultiPlayerGameModeMixin",
          "targets": [
            "net/minecraft/client/multiplayer/MultiPlayerGameMode"
          ],
          "handler": "destroyBlock",
          "kind": "wrap-operation",
          "method": "destroyBlock",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/FabricReloadableResourceManagerMixin",
          "targets": [
            "net/minecraft/server/packs/resources/ReloadableResourceManager"
          ],
          "handler": "addAdditionalListeners",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/resources/ReloadableResourceManager#<init> TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/GuiMixin",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "setScreen",
          "kind": "inject",
          "method": "setScreen",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#setScreen TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/LevelEventHandlerMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelEventHandler"
          ],
          "handler": "levelEvent",
          "kind": "inject",
          "method": "levelEvent",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelEventHandler#levelEvent TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/LevelEventHandlerMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelEventHandler"
          ],
          "handler": "replaceSplashPotionParticles",
          "kind": "wrap-operation",
          "method": "potionSplashParticles",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/LevelEventHandlerMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelEventHandler"
          ],
          "handler": "cancelOrReplaceCopperParticles",
          "kind": "wrap-operation",
          "method": "levelEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/ParticleUtils;spawnParticlesOnBlockFaces(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/particles/ParticleOptions;Lnet/minecraft/util/valueproviders/IntProvider;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/LevelEventHandlerMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelEventHandler"
          ],
          "handler": "shouldSpawnEndPortalFrameSmoke",
          "kind": "wrap-with-condition",
          "method": "levelEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/LevelEventHandlerMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelEventHandler"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "levelEvent",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/LevelEventHandlerMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelEventHandler"
          ],
          "handler": "replaceCloud",
          "kind": "wrap-operation",
          "method": "levelEvent",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;CLOUD:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/LevelEventHandlerMixin",
          "targets": [
            "net/minecraft/client/renderer/LevelEventHandler"
          ],
          "handler": "addBubbles",
          "kind": "inject",
          "method": "shootParticles",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelEventHandler#shootParticles TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ParticleResourcesMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleResources#<init> TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ParticleResourcesMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources"
          ],
          "handler": "beginReloadingDynamicSpriteSets",
          "kind": "inject",
          "method": "lambda$reload$1",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleResources#lambda$reload$1 HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ParticleResourcesMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleResources"
          ],
          "handler": "finishReloadingDynamicSpriteSets",
          "kind": "inject",
          "method": "lambda$reload$4",
          "at": "INVOKE",
          "at_target": "Ljava/util/List;forEach(Ljava/util/function/Consumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleResources#lambda$reload$4 INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ScreenEffectRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/ScreenEffectRenderer"
          ],
          "handler": "setupAlpha",
          "kind": "inject",
          "method": "submitFire",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/ScreenEffectRenderer#submitFire HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ScreenEffectRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/ScreenEffectRenderer"
          ],
          "handler": "adjustFireHeight",
          "kind": "modify-arg",
          "method": "lambda$submitFire$0",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Matrix4f;translate(FFF)Lorg/joml/Matrix4f;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/ScreenEffectRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/ScreenEffectRenderer"
          ],
          "handler": "modifyAlpha",
          "kind": "modify-arg",
          "method": "buildFireQuad",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/ScreenEffectRenderer;buildSpriteQuad(Lcom/mojang/blaze3d/vertex/VertexConsumer;Lorg/joml/Matrix4f;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;FFFFFI)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/WeatherEffectsRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/WeatherEffectRenderer"
          ],
          "handler": "replaceRainTexture",
          "kind": "wrap-operation",
          "method": "prepare",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/client/renderer/WeatherEffectRenderer;RAIN_LOCATION:Lnet/minecraft/resources/Identifier;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/WeatherEffectsRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/WeatherEffectRenderer"
          ],
          "handler": "applyColorToColumn",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/WeatherEffectRenderer;createRainColumnInstance(Lnet/minecraft/util/RandomSource;JIIIIIF)Lnet/minecraft/client/renderer/WeatherEffectRenderer$ColumnInstance;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/WeatherEffectsRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/WeatherEffectRenderer"
          ],
          "handler": "replaceWeatherColor",
          "kind": "wrap-operation",
          "method": "prepareInstances",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/blaze3d/vertex/VertexConsumer;setColor(I)Lcom/mojang/blaze3d/vertex/VertexConsumer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/AbstractCandleBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/AbstractCandleBlock"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "addParticlesAndSound",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/AbstractCandleBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/AbstractCandleBlock"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "extinguish",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/BarrelBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/BarrelBlock"
          ],
          "handler": "useWithoutItem",
          "kind": "inject",
          "method": "useWithoutItem",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/InteractionResult;SUCCESS:Lnet/minecraft/world/InteractionResult$Success;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/BarrelBlock#useWithoutItem FIELD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/BaseFireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/BaseFireBlock"
          ],
          "handler": "endCrystalCancelEffects",
          "kind": "inject",
          "method": "animateTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos;below()Lnet/minecraft/core/BlockPos;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/BaseFireBlock#animateTick INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/BaseFireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/BaseFireBlock"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "animateTick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/BeehiveBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/BeehiveBlock"
          ],
          "handler": "use",
          "kind": "inject",
          "method": "useItemOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/BeehiveBlock;dropHoneycomb(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/entity/BlockEntity;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/BlockPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/BeehiveBlock#useItemOn INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/BlockStateBaseMixin",
          "targets": [
            "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase"
          ],
          "handler": "use",
          "kind": "wrap-operation",
          "method": "useWithoutItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/Block;useWithoutItem(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/phys/BlockHitResult;)Lnet/minecraft/world/InteractionResult;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/CampfireBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/CampfireBlock"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "makeParticles",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/ClientComposterBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock"
          ],
          "handler": "handleFill",
          "kind": "inject",
          "method": "handleFill",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/ComposterBlock#handleFill TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/EndPortalBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/EndPortalBlock"
          ],
          "handler": "animateTick",
          "kind": "wrap-with-condition",
          "method": "animateTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/FireflyBushBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/FireflyBushBlock"
          ],
          "handler": "replaceFirefly",
          "kind": "wrap-operation",
          "method": "animateTick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;FIREFLY:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/FurnaceBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/FurnaceBlock",
            "net/minecraft/world/level/block/BlastFurnaceBlock",
            "net/minecraft/world/level/block/SmokerBlock"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "animateTick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/PumpkinBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/PumpkinBlock"
          ],
          "handler": "use",
          "kind": "inject",
          "method": "useItemOn",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/PumpkinBlock#useItemOn RETURN"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/SlimeBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/SlimeBlock"
          ],
          "handler": "bounceUp",
          "kind": "inject",
          "method": "fallOn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/SlimeBlock#fallOn HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/TorchBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/TorchBlock",
            "net/minecraft/world/level/block/WallTorchBlock"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "animateTick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/WitherRoseBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/WitherRoseBlock"
          ],
          "handler": "animateTick",
          "kind": "inject",
          "method": "animateTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/WitherRoseBlock#animateTick HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/entity/CampfireBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/CampfireBlockEntity"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "particleTick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/block/entity/VaultBlockEntityClientMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/vault/VaultBlockEntity$Client"
          ],
          "handler": "checkAndSetOminousVault",
          "kind": "inject",
          "method": "emitConnectionParticlesForNearbyPlayers",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/vault/VaultBlockEntity$Client#emitConnectionParticlesForNearbyPlayers HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/compat/ModMenuModSearchMixin",
          "targets": [
            "com/terraformersmc/modmenu/util/mod/ModSearch"
          ],
          "handler": "passesFilters",
          "kind": "inject",
          "method": "passesFilters",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at com/terraformersmc/modmenu/util/mod/ModSearch#passesFilters HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/AllayMixin",
          "targets": [
            "net/minecraft/world/entity/animal/allay/Allay"
          ],
          "handler": "playAllayDuplicateSound",
          "kind": "inject",
          "method": "mobInteract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/allay/Allay;duplicateAllay()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/allay/Allay#mobInteract INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/AreaEffectCloudMixin",
          "targets": [
            "net/minecraft/world/entity/AreaEffectCloud"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/AreaEffectCloud#tick HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/AreaEffectCloudMixin",
          "targets": [
            "net/minecraft/world/entity/AreaEffectCloud"
          ],
          "handler": "replaceWaitingParticles",
          "kind": "wrap-operation",
          "method": "clientTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addAlwaysVisibleParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/AreaEffectCloudMixin",
          "targets": [
            "net/minecraft/world/entity/AreaEffectCloud"
          ],
          "handler": "replaceEffectParticles",
          "kind": "wrap-operation",
          "method": "clientTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addAlwaysVisibleParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/AreaEffectCloudMixin",
          "targets": [
            "net/minecraft/world/entity/AreaEffectCloud"
          ],
          "handler": "replaceNonEffectWaitingParticles",
          "kind": "wrap-operation",
          "method": "clientTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addAlwaysVisibleParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/AreaEffectCloudMixin",
          "targets": [
            "net/minecraft/world/entity/AreaEffectCloud"
          ],
          "handler": "replaceNonEffectParticles",
          "kind": "wrap-operation",
          "method": "clientTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addAlwaysVisibleParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ArmadilloMixin",
          "targets": [
            "net/minecraft/world/entity/animal/armadillo/Armadillo"
          ],
          "handler": "addBrushEffects",
          "kind": "inject",
          "method": "brushOffScute",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/animal/armadillo/Armadillo;gameEvent(Lnet/minecraft/core/Holder;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/armadillo/Armadillo#brushOffScute INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ArrowMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/arrow/Arrow"
          ],
          "handler": "replaceEffectParticles",
          "kind": "wrap-operation",
          "method": "makeParticle",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ClientEntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "addExtinguishParticles",
          "kind": "inject",
          "method": "playEntityOnFireExtinguishedSound",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#playEntityOnFireExtinguishedSound TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ClientEntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "inside",
          "kind": "inject",
          "method": "onInsideBlock",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#onInsideBlock HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ClientEntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "hurtClient",
          "kind": "inject",
          "method": "hurtOrSimulate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Entity;hurtClient(Lnet/minecraft/world/damagesource/DamageSource;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#hurtOrSimulate INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ClientEntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "clearFluidDefinitionHeight",
          "kind": "inject",
          "method": "updateFluidInteraction",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#updateFluidInteraction HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ClientEntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "cancelWaterSplash",
          "kind": "inject",
          "method": "doWaterSplashEffect",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/Mth;floor(D)I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#doWaterSplashEffect INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ClientLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "increaseBreakItemParticles",
          "kind": "wrap-operation",
          "method": "breakItem",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;spawnItemParticles(Lnet/minecraft/world/item/ItemStack;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ClientLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "deathTick",
          "kind": "inject",
          "method": "tickDeath",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;deathTime:I",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#tickDeath FIELD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ClientLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "makePoofParticles",
          "kind": "inject",
          "method": "makePoofParticles",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#makePoofParticles INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/EntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderer"
          ],
          "handler": "extractRenderState",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/EntityRenderer#extractRenderState TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/EntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/EntityRenderer"
          ],
          "handler": "adjustNameTagOffset",
          "kind": "modify-arg",
          "method": "submitNameDisplay",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitNameTag(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/world/phys/Vec3;ILnet/minecraft/network/chat/Component;ZILnet/minecraft/client/renderer/state/level/CameraRenderState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/HumanoidModelMixin",
          "targets": [
            "net/minecraft/client/model/HumanoidModel"
          ],
          "handler": "spinHead",
          "kind": "inject",
          "method": "setupAnim",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/HumanoidModel#setupAnim TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/LivingEntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "extractRenderState",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/LivingEntityRenderer#extractRenderState TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/LivingEntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "replaceParrotTexture",
          "kind": "wrap-operation",
          "method": "getRenderType",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/entity/LivingEntityRenderer;getTextureLocation(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;)Lnet/minecraft/resources/Identifier;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/MinecartFurnaceMixin",
          "targets": [
            "net/minecraft/world/entity/vehicle/minecart/MinecartFurnace"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/MooshroomMixin",
          "targets": [
            "net/minecraft/world/entity/animal/cow/MushroomCow"
          ],
          "handler": "spawnFeedingFailedParticles",
          "kind": "wrap-operation",
          "method": "mobInteract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;sendParticles(Lnet/minecraft/core/particles/ParticleOptions;DDDIDDDDDDLnet/minecraft/network/protocol/game/ClientboundLevelParticlesPacket$RandomizationType;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/MooshroomMixin",
          "targets": [
            "net/minecraft/world/entity/animal/cow/MushroomCow"
          ],
          "handler": "spawnFeedingParticles",
          "kind": "inject",
          "method": "mobInteract",
          "at": "INVOKE",
          "at_target": "Ljava/util/Optional;get()Ljava/lang/Object;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/cow/MushroomCow#mobInteract INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/MooshroomMixin",
          "targets": [
            "net/minecraft/world/entity/animal/cow/MushroomCow"
          ],
          "handler": "spawnEffectParticles",
          "kind": "wrap-operation",
          "method": "mobInteract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;sendParticles(Lnet/minecraft/core/particles/ParticleOptions;DDDIDDDDDDLnet/minecraft/network/protocol/game/ClientboundLevelParticlesPacket$RandomizationType;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/PandaMixin",
          "targets": [
            "net/minecraft/world/entity/animal/panda/Panda"
          ],
          "handler": "replaceSneezeParticles",
          "kind": "wrap-operation",
          "method": "afterSneeze",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/PrimedTNTMixin",
          "targets": [
            "net/minecraft/world/entity/item/PrimedTnt"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/PrimedTnt#tick TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/PrimedTNTMixin",
          "targets": [
            "net/minecraft/world/entity/item/PrimedTnt"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/SheepMixin",
          "targets": [
            "net/minecraft/world/entity/animal/sheep/Sheep"
          ],
          "handler": "mobInteract",
          "kind": "inject",
          "method": "mobInteract",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/sheep/Sheep#mobInteract HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/SnowballMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/throwableitemprojectile/Snowball"
          ],
          "handler": "handleEntityEvent",
          "kind": "inject",
          "method": "handleEntityEvent",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/throwableitemprojectile/Snowball#handleEntityEvent TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/SpellCasterIllagerMixin",
          "targets": [
            "net/minecraft/world/entity/monster/illager/SpellcasterIllager"
          ],
          "handler": "replaceEntityEffect",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;ENTITY_EFFECT:Lnet/minecraft/core/particles/ParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/ThrownEggMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEgg"
          ],
          "handler": "handle",
          "kind": "inject",
          "method": "handleEntityEvent",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEgg#handleEntityEvent TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/VillagerMixin",
          "targets": [
            "net/minecraft/world/entity/npc/villager/Villager"
          ],
          "handler": "replaceSplashParticles",
          "kind": "wrap-operation",
          "method": "handleEntityEvent",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/npc/villager/Villager;addParticlesAroundSelf(Lnet/minecraft/core/particles/ParticleOptions;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/entity/WolfMixin",
          "targets": [
            "net/minecraft/world/entity/animal/wolf/Wolf"
          ],
          "handler": "replaceSplashParticles",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/fluid/LavaFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/LavaFluid"
          ],
          "handler": "animateTick",
          "kind": "inject",
          "method": "animateTick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/material/LavaFluid#animateTick TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/fluid/WaterFluidMixin",
          "targets": [
            "net/minecraft/world/level/material/WaterFluid"
          ],
          "handler": "animateTick",
          "kind": "inject",
          "method": "animateTick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/material/WaterFluid#animateTick TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/BlockTransformerMixin",
          "targets": [
            "net/minecraft/core/component/BlockTransformer"
          ],
          "handler": "evaluateNewBlockState",
          "kind": "wrap-operation",
          "method": "transformBlock*",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;playSound(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/BlockPos;Lnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/BoneMealItemMixin",
          "targets": [
            "net/minecraft/world/item/BoneMealItem"
          ],
          "handler": "spawnParticles",
          "kind": "inject",
          "method": "addGrowthParticles",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/ParticleUtils;spawnParticles(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;IDDZLnet/minecraft/core/particles/ParticleOptions;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/BoneMealItem#addGrowthParticles INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/BoneMealItemMixin",
          "targets": [
            "net/minecraft/world/item/BoneMealItem"
          ],
          "handler": "spawnParticlesInBlock",
          "kind": "inject",
          "method": "addGrowthParticles",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/ParticleUtils;spawnParticleInBlock(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;ILnet/minecraft/core/particles/ParticleOptions;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/BoneMealItem#addGrowthParticles INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/BottleItemMixin",
          "targets": [
            "net/minecraft/world/item/BottleItem"
          ],
          "handler": "use",
          "kind": "inject",
          "method": "use",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;gameEvent(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/Holder;Lnet/minecraft/core/BlockPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/BottleItem#use INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/BucketItemMixin",
          "targets": [
            "net/minecraft/world/item/BucketItem"
          ],
          "handler": "spawnPickupEffects",
          "kind": "inject",
          "method": "use",
          "at": "INVOKE",
          "at_target": "Ljava/util/Optional;ifPresent(Ljava/util/function/Consumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/BucketItem#use INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/BucketItemMixin",
          "targets": [
            "net/minecraft/world/item/BucketItem"
          ],
          "handler": "spawnPlaceEffects",
          "kind": "inject",
          "method": "use",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/BucketItem;checkExtraContent(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/core/BlockPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/BucketItem#use INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/BucketItemMixin",
          "targets": [
            "net/minecraft/world/item/BucketItem"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "emptyContents*",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/FlintAndSteelItemMixin",
          "targets": [
            "net/minecraft/world/item/FlintAndSteelItem",
            "net/minecraft/world/item/FireChargeItem"
          ],
          "handler": "useOn",
          "kind": "inject",
          "method": "useOn",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/gameevent/GameEvent;BLOCK_CHANGE:Lnet/minecraft/core/Holder$Reference;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/FlintAndSteelItem#useOn FIELD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/SolidBucketItemMixin",
          "targets": [
            "net/minecraft/world/item/SolidBucketItem"
          ],
          "handler": "spawnPlaceEffects",
          "kind": "inject",
          "method": "useOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;setItemInHand(Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/item/ItemStack;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/SolidBucketItem#useOn INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/SpawnEggItemMixin",
          "targets": [
            "net/minecraft/world/item/SpawnEggItem"
          ],
          "handler": "mobSpawnedOnBlockEffects",
          "kind": "inject",
          "method": "useOn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/SpawnEggItem#useOn HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/item/SpawnEggItemMixin",
          "targets": [
            "net/minecraft/world/item/SpawnEggItem"
          ],
          "handler": "mobSpawnedInFluidEffects",
          "kind": "inject",
          "method": "use",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/InteractionResult;SUCCESS:Lnet/minecraft/world/InteractionResult$Success;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/SpawnEggItem#use FIELD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/DripParticleMixin",
          "targets": [
            "net/minecraft/client/particle/DripParticle"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/DripParticle#<init> TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/DripParticleMixin",
          "targets": [
            "net/minecraft/client/particle/DripParticle"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/level/material/Fluids;EMPTY:Lnet/minecraft/world/level/material/Fluid;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/DripParticle#tick FIELD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/FallAndLandParticleMixin",
          "targets": [
            "net/minecraft/client/particle/DripParticle$FallAndLandParticle"
          ],
          "handler": "onRemove",
          "kind": "inject",
          "method": "postMoveUpdate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/DripParticle$FallAndLandParticle;remove()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/DripParticle$FallAndLandParticle#postMoveUpdate INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/FallingParticleMixin",
          "targets": [
            "net/minecraft/client/particle/FallingParticle"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/FallingParticle#tick RETURN"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/FlameParticleMixin",
          "targets": [
            "net/minecraft/client/particle/FlameParticle"
          ],
          "handler": "getLightCoords",
          "kind": "inject",
          "method": "getLightCoords",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/FlameParticle#getLightCoords HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/HeartParticleMixin",
          "targets": [
            "net/minecraft/client/particle/HeartParticle"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/HeartParticle#<init> TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/LavaParticleMixin",
          "targets": [
            "net/minecraft/client/particle/LavaParticle"
          ],
          "handler": "replaceSmoke",
          "kind": "wrap-operation",
          "method": "tick",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/ParticleEngineMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "replaceParticle",
          "kind": "wrap-operation",
          "method": "createParticle",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/ParticleEngine;makeParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)Lnet/minecraft/client/particle/Particle;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/ParticleEngineMixin",
          "targets": [
            "net/minecraft/client/particle/ParticleEngine"
          ],
          "handler": "modifyColor",
          "kind": "inject",
          "method": "createParticle",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/particle/ParticleEngine;add(Lnet/minecraft/client/particle/Particle;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/ParticleEngine#createParticle INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/SpellParticleMixin",
          "targets": [
            "net/minecraft/client/particle/SpellParticle"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/SpellParticle#tick TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/client/particle/bubbles/BubbleParticleMixin",
          "targets": [
            "net/minecraft/client/particle/BubbleParticle",
            "net/minecraft/client/particle/BubbleColumnUpParticle",
            "net/minecraft/client/particle/WaterCurrentDownParticle"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/particle/BubbleParticle#tick RETURN"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/BaseSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/BaseSpawner"
          ],
          "handler": "clientTick",
          "kind": "inject",
          "method": "clientTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/BaseSpawner#clientTick INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/BaseSpawnerMixin",
          "targets": [
            "net/minecraft/world/level/BaseSpawner"
          ],
          "handler": "onMobSpawn",
          "kind": "inject",
          "method": "serverTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;spawnAnim()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/BaseSpawner#serverTick INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/EnchantmentMenuMixin",
          "targets": [
            "net/minecraft/world/inventory/EnchantmentMenu"
          ],
          "handler": "spawnEnchantParticles",
          "kind": "inject",
          "method": "lambda$clickMenuButton$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;playSound(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/BlockPos;Lnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/EnchantmentMenu#lambda$clickMenuButton$0 INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/ServerExplosionMixin",
          "targets": [
            "net/minecraft/world/level/ServerExplosion"
          ],
          "handler": "spawnChargedCreeperParticles",
          "kind": "inject",
          "method": "explode",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/ServerExplosion#explode HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/StonecutterMenu$2Mixin",
          "targets": [
            "net/minecraft/world/inventory/StonecutterMenu$2"
          ],
          "handler": "onTake",
          "kind": "inject",
          "method": "onTake",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/StonecutterMenu$2#onTake HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/StonecutterMenu$2Mixin",
          "targets": [
            "net/minecraft/world/inventory/StonecutterMenu$2"
          ],
          "handler": "spawnParticles",
          "kind": "inject",
          "method": "lambda$onTake$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;playSound(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/BlockPos;Lnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/inventory/StonecutterMenu$2#lambda$onTake$0 INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/BeehiveBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/BeehiveBlockEntity"
          ],
          "handler": "serverTick",
          "kind": "inject",
          "method": "serverTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/BeehiveBlockEntity#serverTick HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/CommonComposterMixin$InputContainerMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock$InputContainer"
          ],
          "handler": "setChanged",
          "kind": "inject",
          "method": "setChanged",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/LevelAccessor;levelEvent(ILnet/minecraft/core/BlockPos;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/ComposterBlock$InputContainer#setChanged INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/CommonComposterMixin",
          "targets": [
            "net/minecraft/world/level/block/ComposterBlock"
          ],
          "handler": "useItem",
          "kind": "inject",
          "method": "useItemOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;levelEvent(ILnet/minecraft/core/BlockPos;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/ComposterBlock#useItemOn INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/CommonLeavesBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/LeavesBlock"
          ],
          "handler": "randomTick",
          "kind": "inject",
          "method": "randomTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;removeBlock(Lnet/minecraft/core/BlockPos;Z)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/LeavesBlock#randomTick INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/FarmBlockMixin",
          "targets": [
            "net/minecraft/world/level/block/FarmlandBlock"
          ],
          "handler": "turnToDirt",
          "kind": "inject",
          "method": "turnToBaseBlock",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/FarmlandBlock#turnToBaseBlock TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/dispenser/EmptyBucketDispenseItemBehaviorMixin",
          "targets": [
            "net/minecraft/core/dispenser/DispenseItemBehavior$4"
          ],
          "handler": "execute",
          "kind": "inject",
          "method": "execute",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/dispenser/DispenseItemBehavior$4;consumeWithRemainder(Lnet/minecraft/core/dispenser/BlockSource;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/dispenser/DispenseItemBehavior$4#execute INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/dispenser/FabricShearsDispenseItemBehaviorMixin",
          "targets": [
            "net/minecraft/core/dispenser/ShearsDispenseItemBehavior"
          ],
          "handler": "spawnShearParticles",
          "kind": "inject",
          "method": "tryShearEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;gameEvent(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/Holder;Lnet/minecraft/core/BlockPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/dispenser/ShearsDispenseItemBehavior#tryShearEntity INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/dispenser/FilledBucketDispenseItemBehaviorMixin",
          "targets": [
            "net/minecraft/core/dispenser/DispenseItemBehavior$3"
          ],
          "handler": "execute",
          "kind": "inject",
          "method": "execute",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/dispenser/DispenseItemBehavior$3;consumeWithRemainder(Lnet/minecraft/core/dispenser/BlockSource;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/dispenser/DispenseItemBehavior$3#execute INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/dispenser/GlassBottleDispenseItemBehaviorMixin",
          "targets": [
            "net/minecraft/core/dispenser/DispenseItemBehavior$9"
          ],
          "handler": "execute",
          "kind": "inject",
          "method": "execute",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/alchemy/PotionContents;createItemStack(Lnet/minecraft/world/item/Item;Lnet/minecraft/core/Holder;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/dispenser/DispenseItemBehavior$9#execute INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/dispenser/PotionDispenseItemBehaviorMixin",
          "targets": [
            "net/minecraft/core/dispenser/DispenseItemBehavior$13"
          ],
          "handler": "cancelVanillaParticles",
          "kind": "wrap-operation",
          "method": "execute",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;sendParticles(Lnet/minecraft/core/particles/ParticleOptions;DDDIDDDD)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/block/dispenser/PotionDispenseItemBehaviorMixin",
          "targets": [
            "net/minecraft/core/dispenser/DispenseItemBehavior$13"
          ],
          "handler": "execute",
          "kind": "inject",
          "method": "execute",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;gameEvent(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/Holder;Lnet/minecraft/core/BlockPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/core/dispenser/DispenseItemBehavior$13#execute INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/AbstractHorseMixin",
          "targets": [
            "net/minecraft/world/entity/animal/equine/AbstractHorse"
          ],
          "handler": "tickRidden",
          "kind": "inject",
          "method": "tickRidden",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/animal/equine/AbstractHorse#tickRidden TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/AnimalMixin",
          "targets": [
            "net/minecraft/world/entity/animal/Animal"
          ],
          "handler": "fixInLoveHeartParticles",
          "kind": "wrap-operation",
          "method": "aiStep",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/CommonLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#<init> TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/CommonLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#tick TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/CommonLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "cancelFlyIntoWallClientSound",
          "kind": "wrap-with-condition",
          "method": "handleFallFlyingCollisions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;playSound(Lnet/minecraft/sounds/SoundEvent;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/CommonLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "cancelFlyIntoWallClientHurt",
          "kind": "wrap-with-condition",
          "method": "handleFallFlyingCollisions",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/LivingEntity;hurt(Lnet/minecraft/world/damagesource/DamageSource;F)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/CommonLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "replaceSlimeEffect",
          "kind": "wrap-operation",
          "method": "tickEffects",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/CommonLivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "actuallyHurt",
          "kind": "inject",
          "method": "actuallyHurt",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#actuallyHurt HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/CopperGolemMixin",
          "targets": [
            "net/minecraft/world/entity/animal/golem/CopperGolem"
          ],
          "handler": "cancelGolemInteractParticles",
          "kind": "wrap-operation",
          "method": "mobInteract",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;levelEvent(Lnet/minecraft/world/entity/Entity;ILnet/minecraft/core/BlockPos;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/EntityFluidInteractionMixin",
          "targets": [
            "net/minecraft/world/entity/EntityFluidInteraction"
          ],
          "handler": "sendServerPlayerSplashes",
          "kind": "inject",
          "method": "update",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/EntityFluidInteraction#update TAIL"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/EntityFluidInteractionMixin",
          "targets": [
            "net/minecraft/world/entity/EntityFluidInteraction"
          ],
          "handler": "updateFluidPairHeight",
          "kind": "wrap-operation",
          "method": "update*",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Math;max(DD)D",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/FabricCommonMooshroomMixin",
          "targets": [
            "net/minecraft/world/entity/animal/cow/MushroomCow"
          ],
          "handler": "replaceShearingParticles",
          "kind": "wrap-operation",
          "method": "lambda$shear$0",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;sendParticles(Lnet/minecraft/core/particles/ParticleOptions;DDDIDDDD)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/FallingBlockEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/FallingBlockEntity"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/item/FallingBlockEntity;handlePortal()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/FallingBlockEntity#tick INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/FallingBlockEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/FallingBlockEntity"
          ],
          "handler": "onLand",
          "kind": "inject",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/Fallable;onLand(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/entity/item/FallingBlockEntity;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/FallingBlockEntity#tick INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "mobSpawnedFromMobEffects",
          "kind": "inject",
          "method": "checkAndHandleImportantInteractions",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#checkAndHandleImportantInteractions HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/MobMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "onMobInteract",
          "kind": "wrap-operation",
          "method": "interact",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/Mob;mobInteract(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/InteractionResult;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/ThrownExperienceBottleMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownExperienceBottle"
          ],
          "handler": "cancelPotionParticles",
          "kind": "wrap-operation",
          "method": "onHit",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;levelEvent(ILnet/minecraft/core/BlockPos;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/WorkAtComposterMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/WorkAtComposter"
          ],
          "handler": "spawnComposterEffects",
          "kind": "inject",
          "method": "compostItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/WorkAtComposter;spawnComposterFillEffects(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/behavior/WorkAtComposter#compostItems INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/WorkAtComposterMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/WorkAtComposter"
          ],
          "handler": "spawnComposterEffects",
          "kind": "inject",
          "method": "compostItems",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/ai/behavior/WorkAtComposter;spawnComposterFillEffects(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/behavior/WorkAtComposter#compostItems INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/entity/WorkAtPoiMixin",
          "targets": [
            "net/minecraft/world/entity/ai/behavior/WorkAtPoi"
          ],
          "handler": "spawnWorkEffects",
          "kind": "inject",
          "method": "start",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/npc/villager/Villager;playWorkSound()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ai/behavior/WorkAtPoi#start INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/item/FoodOnAStickItemMixin",
          "targets": [
            "net/minecraft/world/item/FoodOnAStickItem"
          ],
          "handler": "addEatEffects",
          "kind": "inject",
          "method": "use",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;hurtAndConvertOnBreak(ILnet/minecraft/world/level/ItemLike;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/EquipmentSlot;)Lnet/minecraft/world/item/ItemStack;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/FoodOnAStickItem#use INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/item/MaceItemMixin",
          "targets": [
            "net/minecraft/world/item/MaceItem"
          ],
          "handler": "spawnDustClouds",
          "kind": "inject",
          "method": "knockback",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/MaceItem#knockback HEAD"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/item/PotionItemMixin",
          "targets": [
            "net/minecraft/world/item/PotionItem"
          ],
          "handler": "cancelVanillaParticles",
          "kind": "wrap-operation",
          "method": "useOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerLevel;sendParticles(Lnet/minecraft/core/particles/ParticleOptions;DDDIDDDD)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/item/PotionItemMixin",
          "targets": [
            "net/minecraft/world/item/PotionItem"
          ],
          "handler": "useOn",
          "kind": "inject",
          "method": "useOn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;gameEvent(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/core/Holder;Lnet/minecraft/core/BlockPos;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/PotionItem#useOn INVOKE"
        },
        {
          "mixin": "einstein/subtle_effects/mixin/common/item/component/ConsumableMixin",
          "targets": [
            "net/minecraft/world/item/component/Consumable"
          ],
          "handler": "spawnPotionParticles",
          "kind": "inject",
          "method": "onConsume",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/component/Consumable#onConsume HEAD"
        }
      ],
      "listening": 48,
      "accessors": 40,
      "hooks": {
        "net_from_server": 1
      },
      "wanted": {
        "com/terraformersmc/modmenu/util/mod/ModSearch#passesFilters @HEAD": 1,
        "net/minecraft/client/gui/Gui#setScreen @TAIL": 1,
        "net/minecraft/client/model/HumanoidModel#setupAnim @TAIL": 1,
        "net/minecraft/client/multiplayer/ClientLevel#<clinit> @TAIL": 1,
        "net/minecraft/client/multiplayer/ClientLevel#doAddParticle @HEAD": 1,
        "net/minecraft/client/particle/BubbleParticle#tick @RETURN": 1,
        "net/minecraft/client/particle/DripParticle#<init> @TAIL": 1,
        "net/minecraft/client/particle/FallingParticle#tick @RETURN": 1,
        "net/minecraft/client/particle/FlameParticle#getLightCoords @HEAD": 1,
        "net/minecraft/client/particle/HeartParticle#<init> @TAIL": 1,
        "net/minecraft/client/particle/ParticleResources#<init> @TAIL": 1,
        "net/minecraft/client/particle/ParticleResources#lambda$reload$1 @HEAD": 1,
        "net/minecraft/client/particle/SpellParticle#tick @TAIL": 1,
        "net/minecraft/client/renderer/LevelEventHandler#levelEvent @TAIL": 1,
        "net/minecraft/client/renderer/LevelEventHandler#shootParticles @TAIL": 1,
        "net/minecraft/client/renderer/ScreenEffectRenderer#submitFire @HEAD": 1,
        "net/minecraft/client/renderer/entity/EntityRenderer#extractRenderState @TAIL": 1,
        "net/minecraft/client/renderer/entity/LivingEntityRenderer#extractRenderState @TAIL": 1,
        "net/minecraft/server/packs/resources/ReloadableResourceManager#<init> @TAIL": 1,
        "net/minecraft/world/entity/AreaEffectCloud#tick @HEAD": 1,
        "net/minecraft/world/entity/Entity#onInsideBlock @HEAD": 1,
        "net/minecraft/world/entity/Entity#playEntityOnFireExtinguishedSound @TAIL": 1,
        "net/minecraft/world/entity/Entity#updateFluidInteraction @HEAD": 1,
        "net/minecraft/world/entity/EntityFluidInteraction#update @TAIL": 1,
        "net/minecraft/world/entity/LivingEntity#<init> @TAIL": 1,
        "net/minecraft/world/entity/LivingEntity#actuallyHurt @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#tick @TAIL": 1,
        "net/minecraft/world/entity/Mob#checkAndHandleImportantInteractions @HEAD": 1,
        "net/minecraft/world/entity/animal/equine/AbstractHorse#tickRidden @TAIL": 1,
        "net/minecraft/world/entity/animal/sheep/Sheep#mobInteract @HEAD": 1,
        "net/minecraft/world/entity/item/PrimedTnt#tick @TAIL": 1,
        "net/minecraft/world/entity/projectile/throwableitemprojectile/Snowball#handleEntityEvent @TAIL": 1,
        "net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEgg#handleEntityEvent @TAIL": 1,
        "net/minecraft/world/inventory/StonecutterMenu$2#onTake @HEAD": 1,
        "net/minecraft/world/item/MaceItem#knockback @HEAD": 1,
        "net/minecraft/world/item/SpawnEggItem#useOn @HEAD": 1,
        "net/minecraft/world/item/component/Consumable#onConsume @HEAD": 1,
        "net/minecraft/world/level/ServerExplosion#explode @HEAD": 1,
        "net/minecraft/world/level/block/ComposterBlock#handleFill @TAIL": 1,
        "net/minecraft/world/level/block/FarmlandBlock#turnToBaseBlock @TAIL": 1,
        "net/minecraft/world/level/block/PumpkinBlock#useItemOn @RETURN": 1,
        "net/minecraft/world/level/block/SlimeBlock#fallOn @HEAD": 1,
        "net/minecraft/world/level/block/WitherRoseBlock#animateTick @HEAD": 1,
        "net/minecraft/world/level/block/entity/BeehiveBlockEntity#serverTick @HEAD": 1,
        "net/minecraft/world/level/block/entity/vault/VaultBlockEntity$Client#emitConnectionParticlesForNearbyPlayers @HEAD": 1,
        "net/minecraft/world/level/material/LavaFluid#animateTick @TAIL": 1,
        "net/minecraft/world/level/material/WaterFluid#animateTick @TAIL": 1
      },
      "wanted_calls": {
        "com/mojang/blaze3d/vertex/VertexConsumer#setColor @INVOKE (wrap-operation)": 1,
        "java/lang/Math#max @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/gui/Gui#extractRenderState @INVOKE": 1,
        "net/minecraft/client/multiplayer/ClientLevel#addParticle @INVOKE (wrap-operation)": 2,
        "net/minecraft/client/multiplayer/ClientLevel#addParticle @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/client/multiplayer/ClientLevel#doAnimateTick @INVOKE": 1,
        "net/minecraft/client/multiplayer/ClientLevel#tickNonPassenger @INVOKE": 1,
        "net/minecraft/client/multiplayer/ClientLevel#tickPassenger @INVOKE": 1,
        "net/minecraft/client/particle/DripParticle#tick @FIELD": 1,
        "net/minecraft/client/particle/DripParticle$FallAndLandParticle#postMoveUpdate @INVOKE": 1,
        "net/minecraft/client/particle/ParticleEngine#createParticle @INVOKE": 1,
        "net/minecraft/client/particle/ParticleEngine#makeParticle @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/particle/ParticleResources#lambda$reload$4 @INVOKE": 1,
        "net/minecraft/client/renderer/ScreenEffectRenderer#buildSpriteQuad @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/SubmitNodeCollector#submitNameTag @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/WeatherEffectRenderer#RAIN_LOCATION:Lnet/minecraft/resources/Identifier; @FIELD (wrap-operation)": 1,
        "net/minecraft/client/renderer/WeatherEffectRenderer#createRainColumnInstance @INVOKE (wrap-operation)": 1,
        "net/minecraft/client/renderer/entity/LivingEntityRenderer#getTextureLocation @INVOKE (wrap-operation)": 1,
        "net/minecraft/core/dispenser/DispenseItemBehavior$13#execute @INVOKE": 1,
        "net/minecraft/core/dispenser/DispenseItemBehavior$3#execute @INVOKE": 1,
        "net/minecraft/core/dispenser/DispenseItemBehavior$4#execute @INVOKE": 1,
        "net/minecraft/core/dispenser/DispenseItemBehavior$9#execute @INVOKE": 1,
        "net/minecraft/core/dispenser/ShearsDispenseItemBehavior#tryShearEntity @INVOKE": 1,
        "net/minecraft/core/particles/ParticleTypes#CLOUD:Lnet/minecraft/core/particles/SimpleParticleType; @FIELD (wrap-operation)": 1,
        "net/minecraft/core/particles/ParticleTypes#ENTITY_EFFECT:Lnet/minecraft/core/particles/ParticleType; @FIELD (wrap-operation)": 1,
        "net/minecraft/core/particles/ParticleTypes#FIREFLY:Lnet/minecraft/core/particles/SimpleParticleType; @FIELD (wrap-operation)": 1,
        "net/minecraft/core/particles/ParticleTypes#LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType; @FIELD (wrap-operation)": 4,
        "net/minecraft/core/particles/ParticleTypes#SMOKE:Lnet/minecraft/core/particles/SimpleParticleType; @FIELD (wrap-operation)": 8,
        "net/minecraft/server/level/ServerLevel#levelEvent @INVOKE (wrap-operation)": 1,
        "net/minecraft/server/level/ServerLevel#sendParticles @INVOKE (wrap-operation)": 5,
        "net/minecraft/util/ParticleUtils#spawnParticlesOnBlockFaces @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/Entity#doWaterSplashEffect @INVOKE": 1,
        "net/minecraft/world/entity/Entity#hurtOrSimulate @INVOKE": 1,
        "net/minecraft/world/entity/LivingEntity#hurt @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/LivingEntity#makePoofParticles @INVOKE": 1,
        "net/minecraft/world/entity/LivingEntity#playSound @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/entity/LivingEntity#spawnItemParticles @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/LivingEntity#tickDeath @FIELD": 1,
        "net/minecraft/world/entity/Mob#mobInteract @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/entity/ai/behavior/WorkAtComposter#compostItems @INVOKE": 2,
        "net/minecraft/world/entity/ai/behavior/WorkAtPoi#start @INVOKE": 1,
        "net/minecraft/world/entity/animal/allay/Allay#mobInteract @INVOKE": 1,
        "net/minecraft/world/entity/animal/armadillo/Armadillo#brushOffScute @INVOKE": 1,
        "net/minecraft/world/entity/animal/cow/MushroomCow#mobInteract @INVOKE": 1,
        "net/minecraft/world/entity/item/FallingBlockEntity#tick @INVOKE": 2,
        "net/minecraft/world/entity/npc/villager/Villager#addParticlesAroundSelf @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/inventory/EnchantmentMenu#lambda$clickMenuButton$0 @INVOKE": 1,
        "net/minecraft/world/inventory/StonecutterMenu$2#lambda$onTake$0 @INVOKE": 1,
        "net/minecraft/world/item/BoneMealItem#addGrowthParticles @INVOKE": 2,
        "net/minecraft/world/item/BottleItem#use @INVOKE": 1,
        "net/minecraft/world/item/BucketItem#use @INVOKE": 2,
        "net/minecraft/world/item/FlintAndSteelItem#useOn @FIELD": 1,
        "net/minecraft/world/item/FoodOnAStickItem#use @INVOKE": 1,
        "net/minecraft/world/item/PotionItem#useOn @INVOKE": 1,
        "net/minecraft/world/item/SolidBucketItem#useOn @INVOKE": 1,
        "net/minecraft/world/item/SpawnEggItem#use @FIELD": 1,
        "net/minecraft/world/level/BaseSpawner#clientTick @INVOKE": 1,
        "net/minecraft/world/level/BaseSpawner#serverTick @INVOKE": 1,
        "net/minecraft/world/level/Level#addAlwaysVisibleParticle @INVOKE (wrap-operation)": 4,
        "net/minecraft/world/level/Level#addParticle @INVOKE (wrap-operation)": 5,
        "net/minecraft/world/level/Level#addParticle @INVOKE (wrap-with-condition)": 1,
        "net/minecraft/world/level/Level#levelEvent @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/Level#playSound @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/Level#setBlock @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/BarrelBlock#useWithoutItem @FIELD": 1,
        "net/minecraft/world/level/block/BaseFireBlock#animateTick @INVOKE": 1,
        "net/minecraft/world/level/block/BeehiveBlock#useItemOn @INVOKE": 1,
        "net/minecraft/world/level/block/Block#useWithoutItem @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/ComposterBlock#useItemOn @INVOKE": 1,
        "net/minecraft/world/level/block/ComposterBlock$InputContainer#setChanged @INVOKE": 1,
        "net/minecraft/world/level/block/LeavesBlock#randomTick @INVOKE": 1,
        "net/minecraft/world/phys/Vec3#distanceToSqr @INVOKE (wrap-operation)": 1,
        "org/joml/Matrix4f#translate @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricSpriteSet",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LevelRenderContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LevelRenderEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LevelRenderEvents$BeforeGizmos",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LivingEntityRenderLayerRegistrationCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LivingEntityRenderLayerRegistrationCallback$RegistrationHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLayerRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLayerRegistry$TexturedLayerDefinitionProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PackActivationType",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ParticleGroupRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry$PendingParticleProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 497,
        "features": {
          "renderer": 6,
          "particle": 59,
          "command": 1,
          "network": 22,
          "events": 1,
          "mixin": 131
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 497,
        "methods": 1331,
        "tried": 600,
        "completed": 188,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Leinstein/subtle_effects/configs/CommandBlockSpawnType;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/configs/ModEntityConfigs$MinecartSparksDisplayType;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/configs/ReplacedParticlesDisplayType;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/configs/SmokeType;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/configs/entities/PerspectiveDisplayType;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/configs/environment/FireflyConfigs$FireflyType;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/configs/items/ItemRarityConfigs$ParticleColorType;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/data/SparkProviderData$PresetType;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/data/color_providers/PresetColorProvider$Preset;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/networking/clientbound/ClientBoundCopperGolemPayload$Action;#clone()Ljava/lang/Object;": 1,
          "[Leinstein/subtle_effects/ticking/tickers/geyser/GeyserType;#clone()Ljava/lang/Object;": 1,
          "com/anthonyhilyard/itemborders/config/ItemBordersConfig#getInstance()Lcom/anthonyhilyard/itemborders/config/ItemBordersConfig;": 1,
          "com/google/common/base/Supplier#get()Ljava/lang/Object;": 4,
          "einstein/subtle_effects/mixin/client/entity/SheepMixin#level()Lnet/minecraft/world/level/Level;": 1,
          "einstein/subtle_effects/mixin/common/entity/FallingBlockEntityMixin#level()Lnet/minecraft/world/level/Level;": 1,
          "einstein/subtle_effects/particle/FlatPlaneParticle#tick()V": 1,
          "it/crystalnest/prometheus/api/type/FireTyped#getFireType()Lnet/minecraft/resources/Identifier;": 4,
          "it/unimi/dsi/fastutil/ints/Int2ObjectMap#clear()V": 3,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 1,
          "java/util/List#getFirst()Ljava/lang/Object;": 1,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 6,
          "me/fzzyhmstrs/fzzy_config/util/platform/Registrar#init()V": 1,
          "me/fzzyhmstrs/fzzy_config/util/platform/RegistrySupplier#get()Ljava/lang/Object;": 6,
          "me/fzzyhmstrs/fzzy_config/validation/ValidatedField#get()Ljava/lang/Object;": 1,
          "net/minecraft/client/CameraType#isFirstPerson()Z": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 4,
          "net/minecraft/client/particle/DripParticle$FallAndLandParticle#tick()V": 1,
          "net/minecraft/client/particle/SingleQuadParticle#setColor(FFF)V": 1,
          "net/minecraft/client/particle/SingleQuadParticle#tick()V": 1,
          "net/minecraft/client/particle/SingleQuadParticle$Layer#OPAQUE": 1,
          "net/minecraft/client/particle/SingleQuadParticle$Layer#TRANSLUCENT": 7,
          "net/minecraft/client/renderer/GameRenderer#spectatedEntityPostEffect()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/client/renderer/RenderPipelines#OIT_DEPTH_BOUNDS_SNIPPET": 1,
          "net/minecraft/core/BlockPos#STREAM_CODEC": 1,
          "net/minecraft/core/BlockPos#below()Lnet/minecraft/core/BlockPos;": 3,
          "net/minecraft/core/component/DataComponents#CONSUMABLE": 1,
          "net/minecraft/core/dispenser/BlockSource#pos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/network/chat/TextColor#getValue()I": 1,
          "net/minecraft/network/codec/ByteBufCodecs#FLOAT": 1,
          "net/minecraft/resources/Identifier#toString()Ljava/lang/String;": 1,
          "net/minecraft/server/level/ServerLevel#getChunkSource()Lnet/minecraft/server/level/ServerChunkCache;": 2,
          "net/minecraft/server/packs/PackType#CLIENT_RESOURCES": 1,
          "net/minecraft/server/packs/resources/SimpleJsonResourceReloadListener#prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Ljava/util/Map;": 2,
          "net/minecraft/util/ARGB#vector3fFromRGB24(I)Lorg/joml/Vector3f;": 1,
          "net/minecraft/util/LightCoordsUtil#block(I)I": 2,
          "net/minecraft/util/RandomSource#nextFloat()F": 2,
          "net/minecraft/util/RandomSource#nextInt(I)I": 2,
          "net/minecraft/world/entity/Entity#getId()I": 3,
          "net/minecraft/world/entity/Entity#getType()Lnet/minecraft/world/entity/EntityType;": 1,
          "net/minecraft/world/entity/Entity#level()Lnet/minecraft/world/level/Level;": 3,
          "net/minecraft/world/entity/EntityTypes#CHICKEN": 1,
          "net/minecraft/world/entity/LivingEntity#isInvisible()Z": 1,
          "net/minecraft/world/entity/Mob#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/entity/animal/chicken/Chicken#getVariant()Lnet/minecraft/core/Holder;": 1,
          "net/minecraft/world/entity/animal/equine/Llama#isInvisible()Z": 1,
          "net/minecraft/world/entity/animal/panda/Panda#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/entity/player/Player#getItemInHand(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/item/ItemStack#copy()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/item/ItemStack#is(Ljava/lang/Object;)Z": 1,
          "net/minecraft/world/item/ItemStackTemplate#fromNonEmptyStack(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/world/item/ItemStackTemplate;": 1,
          "net/minecraft/world/level/Level#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/world/level/Level#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 3,
          "net/minecraft/world/level/Level#getChunkSource()Lnet/minecraft/world/level/chunk/ChunkSource;": 1,
          "net/minecraft/world/level/Level#isRaining()Z": 1,
          "net/minecraft/world/level/Level#isWaterAt(Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/world/level/block/Blocks#HONEY_BLOCK": 1,
          "net/minecraft/world/level/block/SupportType#CENTER": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 5,
          "net/minecraft/world/level/block/state/BlockState#isAir()Z": 1,
          "net/minecraft/world/level/block/state/BlockState#isCollisionShapeFullBlock(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/world/level/material/Fluid#is(Lnet/minecraft/tags/TagKey;)Z": 1,
          "net/minecraft/world/level/material/FluidState#getType()Lnet/minecraft/world/level/material/Fluid;": 1,
          "net/minecraft/world/phys/Vec3#add(DDD)Lnet/minecraft/world/phys/Vec3;": 1,
          "new me/fzzyhmstrs/fzzy_config/validation/misc/ValidatedColor$ColorHolder": 1
        },
        "runs": [
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundVillagerWorkPayload",
            "method": "villagerId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/data/FluidDefinition",
            "method": "is",
            "desc": "(Leinstein/subtle_effects/data/FluidDefinition;)Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/data/FluidDefinition",
            "method": "is",
            "desc": "(Lnet/minecraft/world/level/material/Fluid;)Z",
            "value": "1"
          },
          {
            "class": "einstein/subtle_effects/data/FluidDefinition",
            "method": "lightEmission",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundEntityFellPayload",
            "method": "entityId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundEntityFellPayload",
            "method": "y",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundEntityFellPayload",
            "method": "distance",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundEntityFellPayload",
            "method": "fallDamage",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/group/ModelParticleGroup$ModelParticleRenderState",
            "method": "lightColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/group/ModelParticleGroup$ModelParticleRenderState",
            "method": "color",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundBlockDestroyEffectsPayload",
            "method": "stateId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/init/ModEntityTickers",
            "method": "isHumanoid",
            "desc": "(Lnet/minecraft/world/entity/Entity;Z)Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/init/ModEntityTickers",
            "method": "isNPC",
            "desc": "(Lnet/minecraft/world/entity/Entity;Z)Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/configs/SmokeType",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundChargedCreeperExplosionPayload",
            "method": "radius",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/data/color_providers/ConstantColorProvider",
            "method": "color",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/SplashEmitterParticleOptions",
            "method": "widthModifier",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/SplashEmitterParticleOptions",
            "method": "heightModifier",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/SplashEmitterParticleOptions",
            "method": "velocity",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/SplashEmitterParticleOptions",
            "method": "entityId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/DropletParticleOptions",
            "method": "fromSplash",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/DropletParticleOptions",
            "method": "scale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/DropletParticleOptions",
            "method": "isSilent",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/DropletParticle",
            "method": "isFromSplash",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundEntitySpawnSprintingDustCloudsPayload",
            "method": "entityId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/compat/EndRemasteredCompat",
            "method": "getAllEyes",
            "desc": "()Ljava/util/List;",
            "value": "obj#293"
          },
          {
            "class": "einstein/subtle_effects/configs/CommandBlockSpawnType",
            "method": "canTick",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/ticking/tickers/Ticker",
            "method": "isRemoved",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundEntityDamagedPayload",
            "method": "entityId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/configs/entities/PerspectiveDisplayType",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "einstein/subtle_effects/configs/entities/PerspectiveDisplayType",
            "method": "test",
            "desc": "(Lnet/minecraft/client/Minecraft;)Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/SheepFluffParticleOptions",
            "method": "sheepId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/SheepFluffParticleOptions",
            "method": "isJeb",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/compat/ItemBordersCompat",
            "method": "matchesStack",
            "desc": "(Lnet/minecraft/core/RegistryAccess;Lnet/minecraft/world/item/ItemStack;Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/PotionRingParticleOptions",
            "method": "isHarmful",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/PotionRingParticleOptions",
            "method": "entityId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundDispenseBucketPayload",
            "method": "hasVanillaFallback",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/data/DynamicSpriteSetsManager",
            "method": "getOrCreate",
            "desc": "(Lnet/minecraft/resources/Identifier;)Leinstein/subtle_effects/data/SpriteSetHolder;",
            "value": "obj#391"
          },
          {
            "class": "einstein/subtle_effects/data/SpriteSetHolder",
            "method": "referencesPreExisting",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/FloatParticleOptions",
            "method": "f",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/FallenLeafParticleOptions",
            "method": "quadSize",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/FallenLeafParticleOptions",
            "method": "bbWidth",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/FallenLeafParticleOptions",
            "method": "bbHeight",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/FallenLeafParticleOptions",
            "method": "onGround",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/FallenLeafParticleOptions",
            "method": "alpha",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/FallenLeafParticleOptions",
            "method": "rotation",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/data/FluidDefinition$Data",
            "method": "lightEmission",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/util/Util",
            "method": "radians",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/EnderEyePlacedRingParticle",
            "method": "getLightCoords",
            "desc": "(F)I",
            "value": "240"
          },
          {
            "class": "einstein/subtle_effects/ticking/tickers/geyser/GeyserTicker",
            "method": "getTickDelay",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "einstein/subtle_effects/particle/option/SplashParticleOptions",
            "method": "horizontalScale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/particle/option/SplashParticleOptions",
            "method": "verticalScale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "einstein/subtle_effects/networking/clientbound/ClientBoundCopperGolemPayload",
            "method": "entityId",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 2841
      },
      "verdict": "no",
      "summary": "only 1 of 48 listening patch sites have a hook (2%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "tcdcommons",
      "name": "TCDCommons API",
      "version": "5.8.0+neoforge-26.3",
      "license": "All rights reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/thecsdev/commonmc/fabric/TCDCommonsFabric"
        },
        {
          "kind": "main",
          "value": "com/thecsdev/commonmc/fabric/TCDCommonsFabric"
        },
        {
          "kind": "server",
          "value": "com/thecsdev/commonmc/fabric/TCDCommonsFabric"
        }
      ],
      "mixin_configs": [
        "tcdcommons.client.mixin.events.json",
        "tcdcommons.client.mixin.hooks.json",
        "tcdcommons.mixin.events.json",
        "tcdcommons.mixin.hooks.json"
      ],
      "depends": [],
      "classes": 232,
      "methods": 1521,
      "sites": [
        {
          "mixin": "com/thecsdev/commonmc/client/mixin/events/MixinClientLevel",
          "targets": [
            "net/minecraft/client/multiplayer/ClientLevel"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/ClientLevel#<init> RETURN"
        },
        {
          "mixin": "com/thecsdev/commonmc/client/mixin/events/MixinClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onHandleLogin",
          "kind": "inject",
          "method": "handleLogin",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Options;setServerRenderDistance(I)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "com/thecsdev/commonmc/client/mixin/events/MixinClientboundAwardStatsPacket",
          "targets": [
            "net/minecraft/network/protocol/game/ClientboundAwardStatsPacket"
          ],
          "handler": "onHandle",
          "kind": "inject",
          "method": "handle*",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/network/protocol/game/ClientboundAwardStatsPacket#handle* RETURN"
        },
        {
          "mixin": "com/thecsdev/commonmc/client/mixin/events/MixinGui",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "onPostRender",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/Gui#extractRenderState INVOKE"
        },
        {
          "mixin": "com/thecsdev/commonmc/client/mixin/events/MixinHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "onExtractHotbarAndDecorations",
          "kind": "inject",
          "method": "extractHotbarAndDecorations",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "com/thecsdev/commonmc/client/mixin/events/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onLocalPlayerQuit",
          "kind": "inject",
          "method": "clearClientLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Hud;onDisconnected()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#clearClientLevel INVOKE"
        },
        {
          "mixin": "com/thecsdev/commonmc/client/mixin/events/MixinPictureInPictureRenderer",
          "targets": [
            "net/minecraft/client/gui/render/pip/PictureInPictureRenderer"
          ],
          "handler": "onBeforePrepareFrame",
          "kind": "inject",
          "method": "prepare",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher;prepareFrame(Lnet/minecraft/client/renderer/SubmitNodeStorage;)Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher$PreparedFrame;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/pip/PictureInPictureRenderer#prepare INVOKE"
        },
        {
          "mixin": "com/thecsdev/commonmc/client/mixin/events/MixinScreen",
          "targets": [
            "net/minecraft/client/gui/screens/Screen"
          ],
          "handler": "onPostInit",
          "kind": "inject",
          "method": "init",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "screen_init_post",
          "why": "ScreenEvent.Init.Post: a screen's widgets are built, where a mod adds its own"
        },
        {
          "mixin": "com/thecsdev/commonmc/mixin/events/MixinCommands",
          "targets": [
            "net/minecraft/commands/Commands"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/mojang/brigadier/CommandDispatcher;setConsumer(Lcom/mojang/brigadier/ResultConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/commands/Commands#<init> INVOKE"
        },
        {
          "mixin": "com/thecsdev/commonmc/mixin/events/MixinCreativeModeTabs",
          "targets": [
            "net/minecraft/world/item/CreativeModeTabs"
          ],
          "handler": "onRebuildTabContents",
          "kind": "inject",
          "method": "tryRebuildTabContents",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/CreativeModeTabs#tryRebuildTabContents RETURN"
        }
      ],
      "listening": 5,
      "accessors": 24,
      "hooks": {
        "hud": 1,
        "net_from_server": 1,
        "screen_init_post": 1
      },
      "wanted": {
        "net/minecraft/client/multiplayer/ClientLevel#<init> @RETURN": 1,
        "net/minecraft/network/protocol/game/ClientboundAwardStatsPacket#handle* @RETURN": 1,
        "net/minecraft/world/item/CreativeModeTabs#tryRebuildTabContents @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Minecraft#clearClientLevel @INVOKE": 1,
        "net/minecraft/client/gui/Gui#extractRenderState @INVOKE": 1,
        "net/minecraft/client/gui/render/pip/PictureInPictureRenderer#prepare @INVOKE": 1,
        "net/minecraft/commands/Commands#<init> @INVOKE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DedicatedServerModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 232,
        "features": {
          "screen": 1,
          "mixin": 19
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 232,
        "methods": 936,
        "tried": 600,
        "completed": 276,
        "handlers_tried": 3,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/thecsdev/common/util/enumerations/CompassDirection;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/commonmc/api/client/gui/misc/TSeparatorElement$Direction;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/commonmc/api/client/gui/panel/window/TWindowElement$CloseOperation;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/commonmc/api/client/gui/screen/promise/TFileChooserScreen$Mode;#clone()Ljava/lang/Object;": 1,
          "[Lcom/thecsdev/commonmc/api/client/gui/util/CursorType;#clone()Ljava/lang/Object;": 1,
          "com/mojang/serialization/DynamicOps#getList(Ljava/lang/Object;)Lcom/mojang/serialization/DataResult;": 1,
          "com/mojang/serialization/DynamicOps#listBuilder()Lcom/mojang/serialization/ListBuilder;": 2,
          "com/thecsdev/common/properties/ValueHandle#get()Ljava/lang/Object;": 37,
          "com/thecsdev/common/scene/Node#forEach(Ljava/util/function/Consumer;)V": 1,
          "com/thecsdev/commonmc/api/client/gui/screen/promise/TCompletableScreen$Promise#isDone()Z": 4,
          "com/thecsdev/commonmc/world/sandbox/SandboxLevel#getLevelData()Lnet/minecraft/world/level/storage/LevelData;": 1,
          "com/thecsdev/commonmc/world/sandbox/SandboxLevel#registryAccess()Lnet/minecraft/core/RegistryAccess;": 1,
          "java/lang/Character#valueOf(C)Ljava/lang/Character;": 1,
          "java/lang/invoke/MethodHandles#lookup()Ljava/lang/invoke/MethodHandles$Lookup;": 1,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 1,
          "java/nio/file/attribute/FileTime#fromMillis(J)Ljava/nio/file/attribute/FileTime;": 3,
          "java/util/ArrayList#trimToSize()V": 1,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "java/util/concurrent/CompletableFuture#join()Ljava/lang/Object;": 1,
          "java/util/concurrent/ConcurrentLinkedDeque#containsAll(Ljava/util/Collection;)Z": 1,
          "java/util/concurrent/ConcurrentLinkedDeque#isEmpty()Z": 2,
          "java/util/concurrent/ConcurrentLinkedDeque#iterator()Ljava/util/Iterator;": 5,
          "java/util/concurrent/ConcurrentLinkedDeque#peekFirst()Ljava/lang/Object;": 1,
          "java/util/concurrent/ConcurrentLinkedDeque#peekLast()Ljava/lang/Object;": 1,
          "java/util/concurrent/ConcurrentLinkedDeque#remove(Ljava/lang/Object;)Z": 3,
          "java/util/concurrent/ConcurrentLinkedDeque#size()I": 2,
          "java/util/concurrent/ConcurrentLinkedDeque#toArray()[Ljava/lang/Object;": 1,
          "java/util/concurrent/ConcurrentLinkedDeque#toArray([Ljava/lang/Object;)[Ljava/lang/Object;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/GuiGraphicsExtractor#disableScissor()V": 1,
          "net/minecraft/client/gui/GuiGraphicsExtractor#enableScissor(IIII)V": 1,
          "net/minecraft/client/renderer/SubmitNodeStorage#getSubmitsPerOrder()Lit/unimi/dsi/fastutil/ints/Int2ObjectAVLTreeMap;": 1,
          "net/minecraft/core/Registry#register(Lnet/minecraft/core/Registry;Lnet/minecraft/resources/ResourceKey;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/minecraft/core/WritableRegistry#createRegistrationLookup()Lnet/minecraft/core/HolderGetter;": 2,
          "net/minecraft/core/registries/BuiltInRegistries#STAT_TYPE": 5,
          "net/minecraft/locale/Language#getInstance()Lnet/minecraft/locale/Language;": 1,
          "net/minecraft/resources/Identifier#toString()Ljava/lang/String;": 1,
          "net/minecraft/stats/Stats#BLOCK_MINED": 1,
          "net/minecraft/stats/Stats#ENTITY_KILLED": 1,
          "net/minecraft/stats/Stats#ENTITY_KILLED_BY": 1,
          "net/minecraft/world/Difficulty#HARD": 1,
          "net/minecraft/world/entity/EntityType#getDescription()Lnet/minecraft/network/chat/Component;": 1,
          "net/minecraft/world/item/CreativeModeTabs#searchTab()Lnet/minecraft/world/item/CreativeModeTab;": 1,
          "net/minecraft/world/item/crafting/RecipePropertySet#EMPTY": 1,
          "net/minecraft/world/level/block/Block#asItem()Lnet/minecraft/world/item/Item;": 1,
          "net/minecraft/world/level/block/Block#getName()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/world/level/chunk/ChunkSource#gatherStats()Ljava/lang/String;": 1,
          "net/minecraft/world/level/entity/TransientEntitySectionManager#getEntityGetter()Lnet/minecraft/world/level/entity/LevelEntityGetter;": 2,
          "net/minecraft/world/level/storage/LevelData$RespawnData#DEFAULT": 1,
          "net/minecraft/world/ticks/BlackholeTickAccess#emptyLevelList()Lnet/minecraft/world/ticks/LevelTickAccess;": 2,
          "net/neoforged/fml/loading/FMLLoader#getCurrent()Lnet/neoforged/fml/loading/FMLLoader;": 2,
          "new com/google/gson/JsonObject": 1
        },
        "runs": [
          {
            "class": "com/thecsdev/commonmc/world/sandbox/SandboxLevelData",
            "method": "getGameTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/world/sandbox/SandboxLevelData",
            "method": "isHardcore",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/world/sandbox/SandboxLevelData",
            "method": "isDifficultyLocked",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/panel/TPanelElement",
            "method": "inputCallback",
            "desc": "(Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext$InputDiscoveryPhase;Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/Vector2d",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/Vector2d",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/Vector2d",
            "method": "clone",
            "desc": "()Lcom/thecsdev/common/math/Vector2d;",
            "value": "obj#92"
          },
          {
            "class": "com/thecsdev/common/math/Vector2d",
            "method": "add",
            "desc": "(DD)Lcom/thecsdev/common/math/Vector2d;",
            "value": "obj#96"
          },
          {
            "class": "com/thecsdev/common/math/Vector2d",
            "method": "sub",
            "desc": "(DD)Lcom/thecsdev/common/math/Vector2d;",
            "value": "obj#98"
          },
          {
            "class": "com/thecsdev/common/math/Vector2d",
            "method": "mul",
            "desc": "(DD)Lcom/thecsdev/common/math/Vector2d;",
            "value": "obj#100"
          },
          {
            "class": "com/thecsdev/common/math/Vector2d",
            "method": "div",
            "desc": "(DD)Lcom/thecsdev/common/math/Vector2d;",
            "value": "obj#102"
          },
          {
            "class": "com/thecsdev/common/math/Vector2d",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#104"
          },
          {
            "class": "com/thecsdev/common/resource/http/HttpProfileCache$CacheBucketMeta",
            "method": "getMaxAge",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "ofKeyPress",
            "desc": "(III)Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;",
            "value": "obj#144"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "ofKeyRelease",
            "desc": "(III)Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;",
            "value": "obj#154"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "ofMousePress",
            "desc": "(DDI)Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;",
            "value": "obj#156"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "ofMousePress",
            "desc": "(DDII)Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;",
            "value": "obj#157"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "ofMouseRelease",
            "desc": "(DDI)Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;",
            "value": "obj#158"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "ofMouseRelease",
            "desc": "(DDII)Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;",
            "value": "obj#159"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "ofMouseMove",
            "desc": "(DD)Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;",
            "value": "obj#160"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/TInputContext",
            "method": "ofMouseScroll",
            "desc": "(DDDD)Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;",
            "value": "obj#161"
          },
          {
            "class": "com/thecsdev/commonmc/world/sandbox/SandboxLevel$2",
            "method": "totalTicks",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/world/sandbox/SandboxLevel$2",
            "method": "partialTick",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/thecsdev/commonmc/world/sandbox/SandboxLevel$2",
            "method": "rate",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/thecsdev/commonmc/world/sandbox/SandboxLevel$2",
            "method": "isPaused",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/TElement",
            "method": "getSelf",
            "desc": "()Lcom/thecsdev/commonmc/api/client/gui/TElement;",
            "value": "obj#232"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/TElement",
            "method": "inputCallback",
            "desc": "(Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext$InputDiscoveryPhase;Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/TElement",
            "method": "getSelf",
            "desc": "()Lcom/thecsdev/common/scene/Node;",
            "value": "obj#278"
          },
          {
            "class": "com/thecsdev/common/resource/http/HttpProfile",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/resource/http/HttpProfile",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/world/sandbox/SandboxLevel",
            "method": "getSeaLevel",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/TCDCommonsConfig",
            "method": "updateItemGroupsOnJoin",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/scene/Node",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/scene/Node",
            "method": "hashCode",
            "desc": "()I",
            "value": "373"
          },
          {
            "class": "com/thecsdev/common/resource/ResourceMessage",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/resource/ResourceMessage",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/promise/TFileChooserScreen$ExplorerPanel$1",
            "method": "isRegularFile",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/promise/TFileChooserScreen$ExplorerPanel$1",
            "method": "isDirectory",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/promise/TFileChooserScreen$ExplorerPanel$1",
            "method": "isSymbolicLink",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/promise/TFileChooserScreen$ExplorerPanel$1",
            "method": "isOther",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/promise/TFileChooserScreen$ExplorerPanel$1",
            "method": "size",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/util/SceneGraphPath",
            "method": "getChildIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/misc/TBlockStateElement",
            "method": "isAir",
            "desc": "(Lnet/minecraft/world/level/block/Block;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/TScreen",
            "method": "isOpen",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/TScreen",
            "method": "isPauseScreen",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/TScreen",
            "method": "isAllowingInGameHud",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/TScreen",
            "method": "sendInput",
            "desc": "(Lcom/thecsdev/commonmc/api/client/gui/util/TInputContext;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/ctxmenu/TContextMenu$Builder",
            "method": "setMaxWidth",
            "desc": "(I)Lcom/thecsdev/commonmc/api/client/gui/ctxmenu/TContextMenu$Builder;",
            "value": "obj#494"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/ctxmenu/TContextMenu$Builder",
            "method": "setMaxHeight",
            "desc": "(I)Lcom/thecsdev/commonmc/api/client/gui/ctxmenu/TContextMenu$Builder;",
            "value": "obj#495"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/ctxmenu/TContextMenu$Builder",
            "method": "setMaxSize",
            "desc": "(II)Lcom/thecsdev/commonmc/api/client/gui/ctxmenu/TContextMenu$Builder;",
            "value": "obj#496"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/widget/TDropdownWidget$SimpleEntry",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/widget/TDropdownWidget$SimpleEntry",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/UDim2",
            "method": "fromScale",
            "desc": "(DD)Lcom/thecsdev/common/math/UDim2;",
            "value": "obj#511"
          },
          {
            "class": "com/thecsdev/common/math/UDim2",
            "method": "fromOffset",
            "desc": "(DD)Lcom/thecsdev/common/math/UDim2;",
            "value": "obj#514"
          },
          {
            "class": "com/thecsdev/common/math/UDim2",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/UDim2",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/UDim2",
            "method": "clone",
            "desc": "()Lcom/thecsdev/common/math/UDim2;",
            "value": "obj#521"
          },
          {
            "class": "com/thecsdev/common/math/UDim2",
            "method": "computeI",
            "desc": "(II)[I",
            "value": "obj#525"
          },
          {
            "class": "com/thecsdev/common/math/UDim2",
            "method": "computeF",
            "desc": "(FF)[F",
            "value": "obj#527"
          },
          {
            "class": "com/thecsdev/common/math/UDim2",
            "method": "computeD",
            "desc": "(DD)[D",
            "value": "obj#529"
          },
          {
            "class": "com/thecsdev/common/math/UDim2",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#531"
          },
          {
            "class": "com/thecsdev/commonmc/api/stats/EmptyStatsProvider",
            "method": "getIntValue",
            "desc": "(Lnet/minecraft/stats/Stat;)I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/promise/TFileChooserScreen$Mode",
            "method": "isFileSelection",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/screen/promise/TFileChooserScreen$Builder",
            "method": "setLastScreen",
            "desc": "(Lnet/minecraft/client/gui/screens/Screen;)Lcom/thecsdev/commonmc/api/client/gui/screen/promise/TFileChooserScreen$Builder;",
            "value": "obj#566"
          },
          {
            "class": "com/thecsdev/common/math/TMath",
            "method": "clamp01f",
            "desc": "(F)D",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/TMath",
            "method": "clamp01d",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/label/TLabelElement",
            "method": "getTextWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/label/TLabelElement",
            "method": "getTextHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/Vector2i",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/Vector2i",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/math/Vector2i",
            "method": "clone",
            "desc": "()Lcom/thecsdev/common/math/Vector2i;",
            "value": "obj#604"
          },
          {
            "class": "com/thecsdev/common/math/Vector2i",
            "method": "add",
            "desc": "(II)Lcom/thecsdev/common/math/Vector2i;",
            "value": "obj#608"
          },
          {
            "class": "com/thecsdev/common/math/Vector2i",
            "method": "sub",
            "desc": "(II)Lcom/thecsdev/common/math/Vector2i;",
            "value": "obj#610"
          },
          {
            "class": "com/thecsdev/common/math/Vector2i",
            "method": "mul",
            "desc": "(II)Lcom/thecsdev/common/math/Vector2i;",
            "value": "obj#612"
          },
          {
            "class": "com/thecsdev/common/math/Vector2i",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#616"
          },
          {
            "class": "com/thecsdev/common/resource/ResourceResponse",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/resource/ResourceResponse",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/resource/ResourceResponse",
            "method": "getStatus",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/util/modinfo/ModInfoProvider",
            "method": "getInstance",
            "desc": "()Lcom/thecsdev/commonmc/api/util/modinfo/ModInfoProvider;",
            "value": "obj#561"
          },
          {
            "class": "com/thecsdev/common/util/enumerations/CompassDirection",
            "method": "isLeft",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/util/enumerations/CompassDirection",
            "method": "isCenterX",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/util/enumerations/CompassDirection",
            "method": "isRight",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/util/enumerations/CompassDirection",
            "method": "isTop",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/util/enumerations/CompassDirection",
            "method": "isCenterY",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/util/enumerations/CompassDirection",
            "method": "isBottom",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/thecsdev/common/util/enumerations/CompassDirection",
            "method": "of01",
            "desc": "(II)Lcom/thecsdev/common/util/enumerations/CompassDirection;",
            "value": "obj#659"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/render/TGuiGraphics",
            "method": "getMouseX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/render/TGuiGraphics",
            "method": "getMouseY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/render/TGuiGraphics",
            "method": "getDeltaTicks",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/render/TGuiGraphics",
            "method": "getScreenWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/render/TGuiGraphics",
            "method": "getScreenHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/thecsdev/commonmc/api/client/gui/render/TGuiGraphics",
            "method": "computeEntitySize",
            "desc": "(Lnet/minecraft/world/entity/Entity;II)I",
            "value": "5"
          }
        ],
        "insns": 5792
      },
      "verdict": "partly",
      "summary": "3 of 5 listening patch sites land on a Horizon hook (60%); of 10 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "tectonic",
      "name": "Tectonic",
      "version": "3.1.0+beta2",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "dev/worldgen/tectonic/platform/fabric/TectonicFabric"
        },
        {
          "kind": "modmenu",
          "value": "dev/worldgen/tectonic/compat/TectonicModMenuCompat"
        }
      ],
      "mixin_configs": [
        "tectonic.mixins.json"
      ],
      "depends": [
        "apollib",
        "lithostitched"
      ],
      "classes": 57,
      "methods": 271,
      "sites": [
        {
          "mixin": "dev/worldgen/tectonic/mixin/BiomeMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome"
          ],
          "handler": "tectonic$adjustSnowStart",
          "kind": "modify-variable",
          "method": "getHeightAdjustedTemperature",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/BlendingDataMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/blending/BlendingData"
          ],
          "handler": "checkTerralithSurfaceBlocks",
          "kind": "inject",
          "method": "getHeightAtXZ",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/BlockPos$MutableBlockPos;move(Lnet/minecraft/core/Direction;)Lnet/minecraft/core/BlockPos$MutableBlockPos;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/blending/BlendingData#getHeightAtXZ INVOKE"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/ChunkAccessMixin",
          "targets": [
            "net/minecraft/world/level/chunk/ChunkAccess"
          ],
          "handler": "tectonic$stopHeightDecreasingLogSpam",
          "kind": "inject",
          "method": "getOrCreateOffsetList",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/ChunkAccess#getOrCreateOffsetList HEAD"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/ChunkDataMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SerializableChunkData"
          ],
          "handler": "tectonic$parse",
          "kind": "inject",
          "method": "parse",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/storage/SerializableChunkData#parse HEAD"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/ChunkDataMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/SerializableChunkData"
          ],
          "handler": "tectonic$write",
          "kind": "inject",
          "method": "write",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/storage/SerializableChunkData#write RETURN"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/IOWorkerMixin",
          "targets": [
            "net/minecraft/world/level/chunk/storage/IOWorker"
          ],
          "handler": "tectonic$needsBlending",
          "kind": "inject",
          "method": "isOldChunk",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/chunk/storage/IOWorker#isOldChunk HEAD"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/NoiseBasedChunkGeneratorMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator"
          ],
          "handler": "tectonic$fixLavaLevel",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator#<init> RETURN"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/NoisesMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/Noises"
          ],
          "handler": "tectonic$fixTectonicNoiseSeeds",
          "kind": "modify-arg",
          "method": "instantiate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/levelgen/PositionalRandomFactory;fromHashOf(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/util/RandomSource;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/StructurePieceMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/StructurePiece"
          ],
          "handler": "tectonic$lowerOceanMonuments",
          "kind": "modify-variable",
          "method": "<init>",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/TemperatureModifierMixin",
          "targets": [
            "net/minecraft/world/level/biome/Biome$TemperatureModifier$2"
          ],
          "handler": "tectonic$adjustSnowStart",
          "kind": "modify-variable",
          "method": "modifyTemperature",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "dev/worldgen/tectonic/mixin/client/WorldCreationUiStateMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldCreationUiState"
          ],
          "handler": "tectonic$removeUnusablePresets",
          "kind": "inject",
          "method": "getNonEmptyList",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/worldselection/WorldCreationUiState#getNonEmptyList RETURN"
        }
      ],
      "listening": 6,
      "accessors": 5,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/gui/screens/worldselection/WorldCreationUiState#getNonEmptyList @RETURN": 1,
        "net/minecraft/world/level/chunk/ChunkAccess#getOrCreateOffsetList @HEAD": 1,
        "net/minecraft/world/level/chunk/storage/IOWorker#isOldChunk @HEAD": 1,
        "net/minecraft/world/level/chunk/storage/SerializableChunkData#parse @HEAD": 1,
        "net/minecraft/world/level/chunk/storage/SerializableChunkData#write @RETURN": 1,
        "net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator#<init> @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/world/level/biome/Biome#getHeightAdjustedTemperature @HEAD (modify-variable)": 1,
        "net/minecraft/world/level/biome/Biome$TemperatureModifier$2#modifyTemperature @HEAD (modify-variable)": 1,
        "net/minecraft/world/level/levelgen/PositionalRandomFactory#fromHashOf @INVOKE (modify-arg)": 1,
        "net/minecraft/world/level/levelgen/blending/BlendingData#getHeightAtXZ @INVOKE": 1,
        "net/minecraft/world/level/levelgen/structure/StructurePiece#<init> @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PackActivationType",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceCondition",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceConditionType",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceConditions",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceLoader",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 57,
        "features": {
          "screen": 3,
          "command": 1,
          "events": 1,
          "mixin": 13
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 57,
        "methods": 148,
        "tried": 148,
        "completed": 61,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "dev/worldgen/apollib/client/gui/ApollibConfigScreen#onClose()V": 1,
          "dev/worldgen/apollib/config/ApollibConfigHolder#getState()Ldev/worldgen/apollib/config/ApollibCopyable;": 5,
          "dev/worldgen/apollib/registry/ApollibRegistrar#register(Lnet/minecraft/core/Registry;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/List#of(Ljava/lang/Object;)Ljava/util/List;": 2,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList#updateSize(ILnet/minecraft/client/gui/layouts/HeaderAndFooterLayout;)V": 1,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList$Entry#<init>()V": 1,
          "net/minecraft/client/gui/layouts/HeaderAndFooterLayout#arrangeElements()V": 1,
          "net/minecraft/commands/CommandSourceStack#sendSystemMessage(Lnet/minecraft/network/chat/Component;)V": 1,
          "net/minecraft/commands/Commands#literal(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;": 1,
          "net/minecraft/core/BlockPos#offset(III)Lnet/minecraft/core/BlockPos;": 2,
          "net/minecraft/core/Holder#value()Ljava/lang/Object;": 2,
          "net/minecraft/core/registries/Registries#DENSITY_FUNCTION": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/util/Interval#ofExact(F)Lnet/minecraft/util/Interval;": 1,
          "net/minecraft/util/Mth#sqrt(F)F": 1,
          "net/minecraft/world/level/levelgen/VerticalAnchor#resolveY(Lnet/minecraft/world/level/levelgen/WorldGenerationContext;)I": 1,
          "net/minecraft/world/level/levelgen/densityfunction/DensityFunction#domainAxes()I": 2,
          "net/minecraft/world/level/levelgen/densityfunction/DensityFunction#range()Lnet/minecraft/util/Interval;": 2,
          "net/minecraft/world/level/levelgen/densityfunction/DensityFunction$CompileContext#createNoiseSampler(Lnet/minecraft/core/Holder;)Lnet/minecraft/world/level/levelgen/synth/Noise;": 1,
          "net/minecraft/world/level/levelgen/densityfunction/DensityFunctions#constant(F)Lnet/minecraft/world/level/levelgen/densityfunction/DensityFunction;": 1,
          "net/minecraft/world/level/levelgen/densityfunction/DensitySampler#sampleValue(Lnet/minecraft/world/level/levelgen/densityfunction/SamplerContext;III)F": 2,
          "net/minecraft/world/level/levelgen/densityfunction/DensitySampler#sampleVolume(Lnet/minecraft/world/level/levelgen/densityfunction/SamplerContext;Lnet/minecraft/world/level/levelgen/densityfunction/DensityBuffer;Lnet/minecraft/world/level/levelgen/densityfunction/DensityVolume;)V": 2,
          "net/minecraft/world/level/levelgen/densityfunction/DfRewriteRule#rewrite(Lnet/minecraft/world/level/levelgen/densityfunction/DensityFunction;)Lnet/minecraft/world/level/levelgen/densityfunction/DensityFunction;": 1,
          "new net/minecraft/util/InclusiveRange": 1,
          "new net/minecraft/world/level/levelgen/densityfunction/generator/ConstantFunction$Sampler": 1,
          "new net/minecraft/world/level/levelgen/densityfunction/op/ClampFunction$Sampler": 1
        },
        "runs": [
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise$NormalSampler",
            "method": "scale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise$NormalSampler",
            "method": "multiplier",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise$NormalSampler",
            "method": "offset",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/config/V1ConfigState",
            "method": "modEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigConstant",
            "method": "domainAxes",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigConstant",
            "method": "value",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/config/V1ConfigState$Experimental",
            "method": "horizontalMountainScale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/config/V1ConfigState$Experimental",
            "method": "increasedHeight",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/config/V1ConfigState$Experimental",
            "method": "terrainScale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/config/object/HeightLimits",
            "method": "isVanilla",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/config/object/HeightLimits",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/lithostitched/SetHeightLimitsModifier",
            "method": "priority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise$SmoothSampler",
            "method": "scale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise$SmoothSampler",
            "method": "multiplier",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise$SmoothSampler",
            "method": "offset",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/placementmodifier/HeightStabilizedCount",
            "method": "countPerSection",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/placementmodifier/HeightStabilizedCount",
            "method": "biasedToBottom",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise",
            "method": "scale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise",
            "method": "multiplier",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise",
            "method": "offset",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/worldgen/tectonic/worldgen/densityfunction/ConfigNoise",
            "method": "smootherScaling",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/client/gui/PresetSelectorScreen$PresetList",
            "method": "getRowWidth",
            "desc": "()I",
            "value": "310"
          },
          {
            "class": "dev/worldgen/tectonic/config/object/NoiseState",
            "method": "create",
            "desc": "()Ldev/worldgen/tectonic/config/object/NoiseState;",
            "value": "obj#147"
          },
          {
            "class": "dev/worldgen/tectonic/config/object/NoiseState",
            "method": "create",
            "desc": "(F)Ldev/worldgen/tectonic/config/object/NoiseState;",
            "value": "obj#148"
          },
          {
            "class": "dev/worldgen/tectonic/config/object/NoiseState",
            "method": "copy",
            "desc": "()Ldev/worldgen/tectonic/config/object/NoiseState;",
            "value": "obj#150"
          },
          {
            "class": "dev/worldgen/tectonic/config/V1ConfigState$Features",
            "method": "deeperOceans",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/config/V1ConfigState$Features",
            "method": "desertDunes",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/config/V1ConfigState$Features",
            "method": "lavaRivers",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/config/V1ConfigState$Features",
            "method": "snowStartOffset",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/worldgen/tectonic/config/V1ConfigState$Features",
            "method": "undergroundRivers",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 991
      },
      "verdict": "no",
      "summary": "none of its 11 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "terralith",
      "name": "Terralith",
      "version": "2.6.5",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "net/stardustlabs/terralith/TerralithFabric"
        },
        {
          "kind": "modmenu",
          "value": "net/stardustlabs/terralith/compat/TerralithModMenu"
        }
      ],
      "mixin_configs": [
        "terralith.mixins.json"
      ],
      "depends": [
        "lithostitched"
      ],
      "classes": 11,
      "methods": 51,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceCondition",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceConditionType",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceConditions",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        }
      ],
      "code": {
        "classes": 11,
        "features": {
          "screen": 3
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 11,
        "methods": 25,
        "tried": 25,
        "completed": 5,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "java/util/List#of(Ljava/lang/Object;)Ljava/util/List;": 2,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList#updateSize(ILnet/minecraft/client/gui/layouts/HeaderAndFooterLayout;)V": 1,
          "net/minecraft/client/gui/layouts/HeaderAndFooterLayout#arrangeElements()V": 1,
          "net/minecraft/client/gui/screens/Screen#onClose()V": 1,
          "new net/minecraft/client/gui/components/StringWidget": 1
        },
        "runs": [
          {
            "class": "net/stardustlabs/terralith/ConfigResourceCondition",
            "method": "invert",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/stardustlabs/terralith/gui/TerralithConfigList",
            "method": "getRowWidth",
            "desc": "()I",
            "value": "310"
          }
        ],
        "insns": 86
      },
      "verdict": "works",
      "summary": "no patch sites: its content is carried over as a content mod"
    },
    {
      "mod_id": "toms_storage",
      "name": "Tom's Simple Storage Mod",
      "version": "2.12.2",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/tom/storagemod/StorageModClient"
        },
        {
          "kind": "emi",
          "value": "com/tom/storagemod/emi/EMIPlugin"
        },
        {
          "kind": "jade",
          "value": "com/tom/storagemod/jade/JadePlugin"
        },
        {
          "kind": "jei_mod_plugin",
          "value": "com/tom/storagemod/jei/JEIHandler"
        },
        {
          "kind": "main",
          "value": "com/tom/storagemod/StorageMod"
        },
        {
          "kind": "modmenu",
          "value": "com/tom/storagemod/ModMenu"
        },
        {
          "kind": "rei_client",
          "value": "com/tom/storagemod/rei/REIPlugin"
        }
      ],
      "mixin_configs": [],
      "depends": [],
      "classes": 264,
      "methods": 1792,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "Storage",
          "horizon": "",
          "note": "",
          "classes": 13
        },
        {
          "class": "ItemVariant",
          "horizon": "",
          "note": "",
          "classes": 11
        },
        {
          "class": "StorageView",
          "horizon": "",
          "note": "",
          "classes": 10
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "BlockApiLookup",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ItemStorage",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "Transaction",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "FabricBlockEntityTypeBuilder",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 2
        },
        {
          "class": "FabricBlockEntityTypeBuilder$Factory",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 2
        },
        {
          "class": "FriendlyByteBufs",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModelLoadingPlugin",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "StoragePreconditions",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "UseBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "AttachmentRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "AttackBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BlankVariantView",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BlockApiCache",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BlockColorRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientLoginNetworking",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientLoginNetworking$LoginQueryRequestHandler",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ContainerStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricCreativeModeTab",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FilteringStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "HudElementRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemTooltipCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LevelRenderContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LevelRenderEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LevelRenderEvents$EndMain",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LoginPacketSender",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLoadingPlugin$Context",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelModifier",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelModifier$OnLoadBlock",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelModifier$OnLoadBlock$Context",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "MutableQuadView",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PacketContext",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents$After",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "QuadEmitter",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerBlockEntityEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerBlockEntityEvents$Load",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLoginConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLoginConnectionEvents$QueryStart",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLoginNetworking",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLoginNetworking$LoginQueryResponseHandler",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLoginNetworking$LoginSynchronizer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "SidedStorageBlockEntity",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SnapshotParticipant",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "StorageUtil",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "TransactionContext",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 264,
        "features": {
          "block-behaviour": 17,
          "item-behaviour": 8,
          "block-entity": 14,
          "menu": 10,
          "screen": 23,
          "network": 2,
          "events": 4
        },
        "events": [
          "AttackBlockCallback",
          "Event",
          "PlayerBlockBreakEvents",
          "UseBlockCallback"
        ],
        "examples": {
          "AbstractInventoryHopperBlock": [
            "appendHoverText",
            "canConnectFrom",
            "getTicker",
            "neighborChanged",
            "nextScan",
            "onPlace",
            "updateState"
          ],
          "AbstractStorageTerminalBlock": [
            "canConnectFrom",
            "getTicker",
            "nextScan",
            "useWithoutItem"
          ],
          "AdvWirelessTerminalItem": [
            "activateTerminal",
            "canOpen",
            "getRange",
            "open",
            "use",
            "useOn"
          ],
          "BasicInventoryHopperBlock": [
            "appendHoverText",
            "canConnectFrom",
            "getTicker",
            "neighborChanged",
            "newBlockEntity",
            "nextScan",
            "onPlace",
            "updateState",
            "useItemOn",
            "useWithoutItem"
          ],
          "CraftingTerminalBlock": [
            "affectNeighborsAfterRemoval",
            "appendHoverText",
            "canConnectFrom",
            "getTicker",
            "newBlockEntity",
            "nextScan",
            "useWithoutItem"
          ],
          "FilingCabinetBlock": [
            "affectNeighborsAfterRemoval",
            "appendHoverText",
            "newBlockEntity",
            "useWithoutItem"
          ],
          "FilterItem": [
            "createFilter",
            "openGui",
            "use"
          ],
          "FramedInventoryCableBlock": [
            "appendHoverText",
            "destroy",
            "getHighlightColor",
            "getHighlightShape",
            "isFunctionalNode",
            "makeShapes",
            "neighborChanged",
            "newBlockEntity",
            "nextScan",
            "onNeighborChange",
            "paint",
            "useItemOn",
            "withConnectionProperties"
          ],
          "FramedInventoryCableConnectorBlock": [
            "appendHoverText",
            "box",
            "canConnect",
            "canConnectFrom",
            "createShape",
            "destroy",
            "getHighlightColor",
            "getHighlightShape",
            "getShapeIndex",
            "getTicker",
            "makeShapes",
            "neighborChanged",
            "newBlockEntity",
            "nextScan",
            "onNeighborChange",
            "paint",
            "useItemOn",
            "useWithoutItem",
            "withConnectionProperties"
          ],
          "InventoryCableBlock": [
            "appendHoverText",
            "destroy",
            "isFunctionalNode",
            "neighborChanged",
            "nextScan",
            "onNeighborChange",
            "withConnectionProperties"
          ],
          "InventoryCableConnectorBlock": [
            "appendHoverText",
            "box",
            "canConnect",
            "canConnectFrom",
            "createShape",
            "destroy",
            "getShapeIndex",
            "getTicker",
            "makeShapes",
            "neighborChanged",
            "newBlockEntity",
            "nextScan",
            "onNeighborChange",
            "useWithoutItem",
            "withConnectionProperties"
          ],
          "InventoryConfiguratorItem": [
            "action",
            "inventoryTick",
            "onLeftClick",
            "onRightClick",
            "openMenu",
            "use"
          ],
          "InventoryConnectorBlock": [
            "appendHoverText",
            "destroy",
            "getTicker",
            "neighborChanged",
            "newBlockEntity",
            "nextScan",
            "onNeighborChange",
            "useWithoutItem"
          ],
          "InventoryInterfaceBlock": [
            "appendHoverText",
            "destroy",
            "getTicker",
            "neighborChanged",
            "newBlockEntity",
            "onNeighborChange"
          ],
          "InventoryProxyBlock": [
            "appendHoverText",
            "getHighlightColor",
            "getHighlightShape",
            "newBlockEntity",
            "paint",
            "useItemOn"
          ],
          "LevelEmitterBlock": [
            "appendHoverText",
            "canConnectFrom",
            "destroy",
            "getDirectSignal",
            "getSignal",
            "getTicker",
            "isSignalSource",
            "neighborChanged",
            "newBlockEntity",
            "nextScan",
            "onNeighborChange",
            "useWithoutItem"
          ],
          "OpenCrateBlock": [
            "appendHoverText",
            "getTicker",
            "newBlockEntity"
          ],
          "PaintKitItem": [
            "useOn"
          ],
          "PaintedTrimBlock": [
            "appendHoverText",
            "getHighlightColor",
            "getHighlightShape",
            "newBlockEntity",
            "paint",
            "useItemOn"
          ],
          "PlatformItem": [
            "onRightClick"
          ],
          "PolyFilterItem": [
            "createFilter",
            "openGui"
          ],
          "StorageTerminalBlock": [
            "appendHoverText",
            "canConnectFrom",
            "getTicker",
            "newBlockEntity",
            "nextScan",
            "useWithoutItem"
          ],
          "TagFilterItem": [
            "createFilter",
            "openGui",
            "use"
          ],
          "TrimBlock": [
            "appendHoverText",
            "paint"
          ],
          "WirelessTerminalItem": [
            "canOpen",
            "getRange",
            "isPlayerHolding",
            "open",
            "use"
          ]
        }
      },
      "interp": {
        "classes": 264,
        "methods": 1190,
        "tried": 600,
        "completed": 155,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/tom/storagemod/block/AbstractStorageTerminalBlock$TerminalPos;#clone()Ljava/lang/Object;": 1,
          "[Lcom/tom/storagemod/jade/InventoryConfigComponentProvider;#clone()Ljava/lang/Object;": 1,
          "[Lcom/tom/storagemod/jade/InventoryHopperDataProvider;#clone()Ljava/lang/Object;": 1,
          "[Lcom/tom/storagemod/util/Priority;#clone()Ljava/lang/Object;": 2,
          "[Lcom/tom/storagemod/util/TerminalSyncManager$SlotAction;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/Lists#newArrayList()Ljava/util/ArrayList;": 1,
          "com/illusivesoulworks/polymorph/api/PolymorphApi#getInstance()Lcom/illusivesoulworks/polymorph/api/PolymorphApi;": 1,
          "com/tom/storagemod/block/FilingCabinetBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "com/tom/storagemod/block/InventoryProxyBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "com/tom/storagemod/block/OpenCrateBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "com/tom/storagemod/block/entity/AbstractInventoryHopperBlockEntity#getBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "com/tom/storagemod/block/entity/AbstractPainedBlockEntity#saveWithFullMetadata(Lnet/minecraft/core/HolderLookup$Provider;)Lnet/minecraft/nbt/CompoundTag;": 1,
          "com/tom/storagemod/block/entity/InventoryCableConnectorBlockEntity#isRemoved()Z": 1,
          "com/tom/storagemod/block/entity/InventoryCableConnectorBlockEntity#setChanged()V": 1,
          "com/tom/storagemod/block/entity/PaintedBlockEntity#setChanged()V": 1,
          "com/tom/storagemod/block/entity/StorageTerminalBlockEntity#setChanged()V": 3,
          "com/tom/storagemod/inventory/IInventoryAccess#tracker()Lcom/tom/storagemod/inventory/IInventoryAccess$IInventoryChangeTracker;": 3,
          "com/tom/storagemod/menu/AbstractFilteredMenu#removed(Lnet/minecraft/world/entity/player/Player;)V": 1,
          "com/tom/storagemod/menu/CraftingTerminalMenu$Result#checkTakeAchievements(Lnet/minecraft/world/item/ItemStack;)V": 1,
          "com/tom/storagemod/menu/StorageTerminalMenu#addSlotListener(Lnet/minecraft/world/inventory/ContainerListener;)V": 1,
          "com/tom/storagemod/menu/StorageTerminalMenu#removeSlotListener(Lnet/minecraft/world/inventory/ContainerListener;)V": 1,
          "com/tom/storagemod/menu/StorageTerminalMenu#removed(Lnet/minecraft/world/entity/player/Player;)V": 1,
          "com/tom/storagemod/menu/slot/ItemFilterSlot#getItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "com/tom/storagemod/platform/PlatformBlockEntity#applyImplicitComponents(Lnet/minecraft/core/component/DataComponentGetter;)V": 1,
          "com/tom/storagemod/platform/PlatformBlockEntity#collectImplicitComponents(Lnet/minecraft/core/component/DataComponentMap$Builder;)V": 1,
          "com/tom/storagemod/screen/AbstractFilteredScreen#extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "com/tom/storagemod/screen/AbstractFilteredScreen#getMenu()Lnet/minecraft/world/inventory/AbstractContainerMenu;": 2,
          "com/tom/storagemod/screen/AbstractStorageTerminalScreen#extractSlots(Lnet/minecraft/client/gui/GuiGraphicsExtractor;II)V": 1,
          "com/tom/storagemod/screen/AbstractStorageTerminalScreen#extractTooltip(Lnet/minecraft/client/gui/GuiGraphicsExtractor;II)V": 1,
          "com/tom/storagemod/screen/AbstractStorageTerminalScreen#getMenu()Lnet/minecraft/world/inventory/AbstractContainerMenu;": 4,
          "com/tom/storagemod/screen/AbstractStorageTerminalScreen#slotClicked(Lnet/minecraft/world/inventory/Slot;IILnet/minecraft/world/inventory/ContainerInput;)V": 1,
          "com/tom/storagemod/screen/FilingCabinetScreen#getMenu()Lnet/minecraft/world/inventory/AbstractContainerMenu;": 1,
          "com/tom/storagemod/screen/InventoryLinkScreen#addRenderableWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "com/tom/storagemod/screen/TSContainerScreen#extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 4,
          "com/tom/storagemod/screen/TSContainerScreen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 2,
          "com/tom/storagemod/screen/TSContainerScreen#extractTooltip(Lnet/minecraft/client/gui/GuiGraphicsExtractor;II)V": 1,
          "com/tom/storagemod/screen/TSContainerScreen#mouseDragged(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z": 2,
          "com/tom/storagemod/screen/TagItemFilterScreen#addRenderableWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "com/tom/storagemod/screen/widget/CraftingTerminalRecipeBookWidget#fillGhostRecipe(Lnet/minecraft/world/item/crafting/display/RecipeDisplay;)V": 1,
          "com/tom/storagemod/screen/widget/CraftingTerminalRecipeBookWidget#isVisible()Z": 1,
          "com/tom/storagemod/screen/widget/CraftingTerminalRecipeBookWidget#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "com/tom/storagemod/screen/widget/CraftingTerminalRecipeBookWidget#recipesUpdated()V": 1,
          "com/tom/storagemod/screen/widget/IconButton#setTooltip(Lnet/minecraft/client/gui/components/Tooltip;)V": 3,
          "com/tom/storagemod/util/BasicContainer#getContainerSize()I": 2,
          "com/tom/storagemod/util/BasicContainer#getItem(I)Lnet/minecraft/world/item/ItemStack;": 2,
          "com/tom/storagemod/util/Priority#ordinal()I": 1,
          "java/lang/Runnable#run()V": 1,
          "java/lang/ref/SoftReference#get()Ljava/lang/Object;": 3,
          "java/util/Arrays#asList([Ljava/lang/Object;)Ljava/util/List;": 2,
          "java/util/Collections#EMPTY_SET": 1,
          "java/util/Collections#emptyIterator()Ljava/util/Iterator;": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 1,
          "java/util/Collections#emptySet()Ljava/util/Set;": 4,
          "java/util/List#copyOf(Ljava/util/Collection;)Ljava/util/List;": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 2,
          "java/util/Stack#add(Ljava/lang/Object;)Z": 1,
          "java/util/UUID#randomUUID()Ljava/util/UUID;": 1,
          "java/util/function/IntConsumer#accept(I)V": 1,
          "java/util/function/IntSupplier#getAsInt()I": 1,
          "java/util/regex/Pattern#compile(Ljava/lang/String;I)Ljava/util/regex/Pattern;": 1,
          "java/util/regex/Pattern#matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;": 1,
          "java/util/stream/Stream#empty()Ljava/util/stream/Stream;": 1,
          "me/shedaniel/rei/api/client/REIRuntime#getInstance()Lme/shedaniel/rei/api/client/REIRuntime;": 2,
          "mezz/jei/api/recipe/transfer/IRecipeTransferError$Type#COSMETIC": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayNetworking#send(Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload;)V": 2,
          "net/fabricmc/fabric/api/networking/v1/ServerPlayNetworking#send(Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload;)V": 1,
          "net/fabricmc/fabric/api/transfer/v1/item/ItemStorage#SIDED": 3,
          "net/fabricmc/fabric/api/transfer/v1/storage/StoragePreconditions#notNegative(J)V": 4,
          "net/fabricmc/fabric/api/transfer/v1/storage/StorageUtil#tryInsertStacking(Lnet/fabricmc/fabric/api/transfer/v1/storage/Storage;Ljava/lang/Object;JLnet/fabricmc/fabric/api/transfer/v1/transaction/TransactionContext;)J": 2,
          "net/fabricmc/fabric/api/transfer/v1/storage/StorageView#getAmount()J": 1,
          "net/fabricmc/fabric/api/transfer/v1/storage/StorageView#getResource()Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/transfer/v1/storage/StorageView#getUnderlyingView()Lnet/fabricmc/fabric/api/transfer/v1/storage/StorageView;": 2,
          "net/fabricmc/fabric/api/transfer/v1/storage/base/FilteringStorage#iterator()Ljava/util/Iterator;": 1,
          "net/fabricmc/fabric/api/transfer/v1/transaction/Transaction#openOuter()Lnet/fabricmc/fabric/api/transfer/v1/transaction/Transaction;": 2,
          "net/minecraft/client/gui/components/EditBox#charTyped(Lnet/minecraft/client/input/CharacterEvent;)Z": 1,
          "net/minecraft/client/input/KeyEvent#isEscape()Z": 1,
          "net/minecraft/client/input/KeyEvent#key()I": 3,
          "net/minecraft/client/input/MouseButtonEvent#button()I": 4,
          "net/minecraft/client/renderer/RenderPipelines#GUI_TEXTURED": 1,
          "net/minecraft/core/BlockPos#ZERO": 1,
          "net/minecraft/core/BlockPos#below()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/BlockPos#equals(Ljava/lang/Object;)Z": 1,
          "net/minecraft/core/BlockPos#relative(Lnet/minecraft/core/Direction;)Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/Direction#values()[Lnet/minecraft/core/Direction;": 3,
          "net/minecraft/core/NonNullList#clear()V": 1,
          "net/minecraft/core/NonNullList#iterator()Ljava/util/Iterator;": 2,
          "net/minecraft/core/NonNullList#set(ILjava/lang/Object;)Ljava/lang/Object;": 1,
          "net/minecraft/core/NonNullList#size()I": 2,
          "net/minecraft/core/component/DataComponentPatch#builder()Lnet/minecraft/core/component/DataComponentPatch$Builder;": 1,
          "net/minecraft/core/component/DataComponents#CUSTOM_NAME": 1,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 2,
          "net/minecraft/network/FriendlyByteBuf#writeNbt(Lnet/minecraft/nbt/Tag;)Lnet/minecraft/network/FriendlyByteBuf;": 1,
          "net/minecraft/network/chat/Component#empty()Lnet/minecraft/network/chat/MutableComponent;": 3,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 2,
          "net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket#create(Lnet/minecraft/world/level/block/entity/BlockEntity;)Lnet/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket;": 2,
          "net/minecraft/server/level/ServerLevel#getServer()Lnet/minecraft/server/MinecraftServer;": 2,
          "net/minecraft/world/Container#canPlaceItem(ILnet/minecraft/world/item/ItemStack;)Z": 1,
          "net/minecraft/world/Container#clearContent()V": 1,
          "net/minecraft/world/Container#countItem(Lnet/minecraft/world/item/Item;)I": 1,
          "net/minecraft/world/Container#getContainerSize()I": 1,
          "net/minecraft/world/Container#getItem(I)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/Container#getMaxStackSize()I": 1,
          "net/minecraft/world/Container#hasAnyMatching(Ljava/util/function/Predicate;)Z": 1,
          "net/minecraft/world/Container#hasAnyOf(Ljava/util/Set;)Z": 1,
          "net/minecraft/world/Container#isEmpty()Z": 1,
          "net/minecraft/world/Container#removeItem(II)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/Container#removeItemNoUpdate(I)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/Container#setChanged()V": 1,
          "net/minecraft/world/Container#setItem(ILnet/minecraft/world/item/ItemStack;)V": 1,
          "net/minecraft/world/Container#startOpen(Lnet/minecraft/world/entity/ContainerUser;)V": 1,
          "net/minecraft/world/Container#stillValid(Lnet/minecraft/world/entity/player/Player;)Z": 1,
          "net/minecraft/world/Container#stopOpen(Lnet/minecraft/world/entity/ContainerUser;)V": 1,
          "net/minecraft/world/ContainerHelper#removeItem(Ljava/util/List;II)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/ContainerHelper#takeItem(Ljava/util/List;I)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/Containers#updateNeighboursAfterDestroy(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V": 1,
          "net/minecraft/world/InteractionHand#MAIN_HAND": 1,
          "net/minecraft/world/SimpleContainer#getItems()Lnet/minecraft/core/NonNullList;": 1,
          "net/minecraft/world/entity/item/ItemEntity#getItem()Lnet/minecraft/world/item/ItemStack;": 4,
          "net/minecraft/world/entity/item/ItemEntity#isAlive()Z": 2,
          "net/minecraft/world/entity/player/Player#getItemInHand(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;": 2,
          "net/minecraft/world/entity/player/Player#getMainHandItem()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/player/Player#level()Lnet/minecraft/world/level/Level;": 2,
          "net/minecraft/world/inventory/CraftingContainer#fillStackedContents(Lnet/minecraft/world/entity/player/StackedItemContents;)V": 1,
          "net/minecraft/world/inventory/DataSlot#<init>()V": 1,
          "net/minecraft/world/inventory/InventoryMenu#EMPTY_ARMOR_SLOT_SHIELD": 1,
          "net/minecraft/world/item/CreativeModeTabs#searchTab()Lnet/minecraft/world/item/CreativeModeTab;": 1,
          "net/minecraft/world/item/ItemStack#EMPTY": 5,
          "net/minecraft/world/item/ItemStack#copy()Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 4,
          "net/minecraft/world/item/context/BlockPlaceContext#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/item/context/UseOnContext#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/level/Level#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 6,
          "net/minecraft/world/level/Level#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/Level#getGameTime()J": 4,
          "net/minecraft/world/level/Level#isClientSide()Z": 4,
          "net/minecraft/world/level/block/Blocks#AIR": 2,
          "net/minecraft/world/level/block/Mirror#ordinal()I": 1,
          "net/minecraft/world/level/block/RenderShape#MODEL": 6,
          "net/minecraft/world/level/block/Rotation#ordinal()I": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 2,
          "net/minecraft/world/level/block/state/BlockState#getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;": 7,
          "net/minecraft/world/level/block/state/BlockState#is(Lnet/minecraft/tags/TagKey;)Z": 1,
          "net/minecraft/world/level/block/state/StateDefinition$Builder#add([Lnet/minecraft/world/level/block/state/properties/Property;)Lnet/minecraft/world/level/block/state/StateDefinition$Builder;": 3,
          "net/minecraft/world/level/block/state/properties/BlockStateProperties#FACING": 3,
          "net/minecraft/world/phys/shapes/Shapes#block()Lnet/minecraft/world/phys/shapes/VoxelShape;": 2,
          "new net/minecraft/core/BlockPos": 1,
          "new net/minecraft/nbt/CompoundTag": 1,
          "new net/minecraft/world/SimpleMenuProvider": 1,
          "new net/minecraft/world/item/ItemStack": 1,
          "new net/minecraft/world/phys/AABB": 1
        },
        "runs": [
          {
            "class": "com/tom/storagemod/item/PolyFilterItem",
            "method": "createFilter",
            "desc": "(Lcom/tom/storagemod/util/BlockFaceReference;Lnet/minecraft/world/item/ItemStack;)Lcom/tom/storagemod/inventory/filter/ItemFilter;",
            "value": "obj#40"
          },
          {
            "class": "com/tom/storagemod/item/WirelessTerminalItem",
            "method": "canOpen",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/PlatformProxyInventoryAccess",
            "method": "get",
            "desc": "()Lnet/fabricmc/fabric/api/transfer/v1/storage/Storage;",
            "value": "obj#58"
          },
          {
            "class": "com/tom/storagemod/inventory/PlatformProxyInventoryAccess",
            "method": "get",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#71"
          },
          {
            "class": "com/tom/storagemod/inventory/PlatformMultiInventoryAccess$MultiIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/entity/InventoryCableConnectorBlockEntity",
            "method": "getConnector",
            "desc": "()Lcom/tom/storagemod/block/entity/IInventoryConnector;",
            "value": "obj#93"
          },
          {
            "class": "com/tom/storagemod/block/entity/InventoryCableConnectorBlockEntity",
            "method": "getBeaconLevel",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/NeoForgeBlock",
            "method": "canConnectRedstone",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;)Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/util/DataSlots",
            "method": "onUpdate",
            "desc": "(Ljava/lang/Runnable;)Lcom/tom/storagemod/util/DataSlots;",
            "value": "obj#117"
          },
          {
            "class": "com/tom/storagemod/block/IInventoryCable",
            "method": "canConnectFrom",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;)Z",
            "value": "1"
          },
          {
            "class": "com/tom/storagemod/block/IInventoryCable",
            "method": "isFunctionalNode",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/tom/storagemod/inventory/InventoryImage",
            "method": "getVersion",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/InventoryChangeTracker",
            "method": "getChangeTracker",
            "desc": "(Lnet/minecraft/world/level/Level;)J",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/InventoryChangeTracker",
            "method": "checkFilter",
            "desc": "(Lcom/tom/storagemod/inventory/StoredItemStack;)Z",
            "value": "1"
          },
          {
            "class": "com/tom/storagemod/inventory/InventoryChangeTracker",
            "method": "countItems",
            "desc": "(Lcom/tom/storagemod/inventory/StoredItemStack;)J",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/InventoryChangeTracker",
            "method": "finishOffThreadProcess",
            "desc": "(Lnet/minecraft/world/level/Level;Lcom/tom/storagemod/inventory/InventoryImage$InvState;)J",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/InventoryChangeTracker",
            "method": "finishOffThreadProcess",
            "desc": "(Lnet/minecraft/world/level/Level;Ljava/lang/Object;)J",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/PlatformFilteredInventoryAccess",
            "method": "get",
            "desc": "()Lnet/fabricmc/fabric/api/transfer/v1/storage/Storage;",
            "value": "obj#248"
          },
          {
            "class": "com/tom/storagemod/inventory/PlatformFilteredInventoryAccess",
            "method": "get",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#264"
          },
          {
            "class": "com/tom/storagemod/block/FramedInventoryCableConnectorBlock",
            "method": "getHighlightColor",
            "desc": "()I",
            "value": "16776960"
          },
          {
            "class": "com/tom/storagemod/block/InventoryCableBlock",
            "method": "isFunctionalNode",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/menu/slot/ItemFilterSlot",
            "method": "getMaxStackSize",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "com/tom/storagemod/screen/IScreen$Box",
            "method": "x",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/screen/IScreen$Box",
            "method": "y",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/screen/IScreen$Box",
            "method": "width",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/screen/IScreen$Box",
            "method": "height",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/InventoryProxyBlock",
            "method": "getHighlightColor",
            "desc": "()I",
            "value": "8913032"
          },
          {
            "class": "com/tom/storagemod/inventory/PlatformInventoryAccess$BlockInventoryAccess",
            "method": "tracker",
            "desc": "()Lcom/tom/storagemod/inventory/IInventoryAccess$IInventoryChangeTracker;",
            "value": "obj#359"
          },
          {
            "class": "com/tom/storagemod/inventory/PlatformInventoryAccess$BlockInventoryAccess",
            "method": "exists",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/PlatformInventoryAccess$BlockInventoryAccess",
            "method": "getRootHandler",
            "desc": "(Ljava/util/Set;)Lcom/tom/storagemod/inventory/IInventoryAccess;",
            "value": "obj#366"
          },
          {
            "class": "com/tom/storagemod/util/CraftingMatrix",
            "method": "stillValid",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "com/tom/storagemod/util/CraftingMatrix",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/util/CraftingMatrix",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/util/Priority",
            "method": "add",
            "desc": "(Lcom/tom/storagemod/util/Priority;)Lcom/tom/storagemod/util/Priority;",
            "value": "obj#407"
          },
          {
            "class": "com/tom/storagemod/components/TagFilterComponent",
            "method": "allowList",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/menu/LevelEmitterMenu",
            "method": "stillValid",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "com/tom/storagemod/screen/widget/ToggleButton",
            "method": "getState",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/client/ClientUtil$PaintHighlight",
            "method": "color",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/client/ClientUtil$PaintHighlight",
            "method": "a",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/tom/storagemod/inventory/filter/ItemFilter",
            "method": "configMatch",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "1"
          },
          {
            "class": "com/tom/storagemod/block/entity/OpenCrateBlockEntity$Handler$1",
            "method": "getCapacity",
            "desc": "()J",
            "value": "64"
          },
          {
            "class": "com/tom/storagemod/util/AbstractTagFilter",
            "method": "isAllowList",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/util/AbstractSimpleItemFilter",
            "method": "isMatchNBT",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/util/AbstractSimpleItemFilter",
            "method": "isAllowList",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/PaintedTrimBlock",
            "method": "getHighlightColor",
            "desc": "()I",
            "value": "8947848"
          },
          {
            "class": "com/tom/storagemod/inventory/BlockFilter",
            "method": "skip",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/BlockFilter",
            "method": "isKeepLast",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/util/ComponentJoiner",
            "method": "joining",
            "desc": "(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/Component;)Ljava/util/stream/Collector;",
            "value": "obj#537"
          },
          {
            "class": "com/tom/storagemod/inventory/NetworkInventory",
            "method": "isNetwork",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/NetworkInventory",
            "method": "isValid",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/util/PopupMenuManager$TextFieldElement",
            "method": "charTyped",
            "desc": "(Lnet/minecraft/client/input/CharacterEvent;)Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/TerminalItemStack",
            "method": "getUsedSlotCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/InventorySlot",
            "method": "extract",
            "desc": "(Lnet/fabricmc/fabric/api/transfer/v1/item/ItemVariant;JLnet/fabricmc/fabric/api/transfer/v1/transaction/TransactionContext;)J",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/inventory/InventorySlot",
            "method": "extract",
            "desc": "(Ljava/lang/Object;JLnet/fabricmc/fabric/api/transfer/v1/transaction/TransactionContext;)J",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/entity/StorageTerminalBlockEntity",
            "method": "getSorting",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/entity/StorageTerminalBlockEntity",
            "method": "getModes",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/entity/StorageTerminalBlockEntity",
            "method": "getSearchType",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/entity/StorageTerminalBlockEntity",
            "method": "getBeaconLevel",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/entity/StorageTerminalBlockEntity",
            "method": "getChangeCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/entity/StorageTerminalBlockEntity",
            "method": "getFreeCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/block/entity/StorageTerminalBlockEntity",
            "method": "getSlotCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/screen/AbstractStorageTerminalScreen",
            "method": "writeModes",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/screen/AbstractStorageTerminalScreen",
            "method": "getRowCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/util/PopupMenuManager$PopupElement",
            "method": "charTyped",
            "desc": "(Lnet/minecraft/client/input/CharacterEvent;)Z",
            "value": "0"
          },
          {
            "class": "com/tom/storagemod/menu/AbstractFilteredMenu",
            "method": "canTakeItemForPickAll",
            "desc": "(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/inventory/Slot;)Z",
            "value": "1"
          }
        ],
        "insns": 3514
      },
      "verdict": "works",
      "summary": "no patch sites: its content is carried over as a content mod"
    },
    {
      "mod_id": "t_and_t",
      "name": "Towns and Towers",
      "version": "1.13.13",
      "license": "CC-BY-NC-ND-4.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [],
      "mixin_configs": [],
      "depends": [
        "cristellib"
      ],
      "classes": 0,
      "methods": 0,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [],
      "code": {
        "classes": 0,
        "features": {},
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 0,
        "methods": 0,
        "tried": 0,
        "completed": 0,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {},
        "runs": [],
        "insns": 0
      },
      "verdict": "works",
      "summary": "no patch sites: its content is carried over as a content mod"
    },
    {
      "mod_id": "travelersbackpack",
      "name": "Traveler's Backpack",
      "version": "11.4.3",
      "license": "GNU LESSER GENERAL PUBLIC LICENSE",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "com/tiviacz/travelersbackpack/TravelersBackpackClient"
        },
        {
          "kind": "fabric-datagen",
          "value": "com/tiviacz/travelersbackpack/datagen/ModDataGeneration"
        },
        {
          "kind": "jei_mod_plugin",
          "value": "com/tiviacz/travelersbackpack/compat/jei/TravelersBackpackPlugin"
        },
        {
          "kind": "lambdynlights:initializer",
          "value": "com/tiviacz/travelersbackpack/compat/lambdynamiclight/BackpackDynamicLight"
        },
        {
          "kind": "main",
          "value": "com/tiviacz/travelersbackpack/TravelersBackpack"
        }
      ],
      "mixin_configs": [
        "travelersbackpack.mixins.json"
      ],
      "depends": [
        "forgeconfigapiport"
      ],
      "classes": 358,
      "methods": 2479,
      "sites": [
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/AbstractContainerScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen"
          ],
          "handler": "renderContents",
          "kind": "inject",
          "method": "extractContents",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractContents TAIL"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/HudMixin",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "onExtractCrosshair",
          "kind": "inject",
          "method": "extractCrosshair",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/HumoanoidMobRenderer",
          "targets": [
            "net/minecraft/client/renderer/entity/HumanoidMobRenderer"
          ],
          "handler": "render",
          "kind": "inject",
          "method": "extractHumanoidRenderState",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/HumanoidMobRenderer#extractHumanoidRenderState TAIL"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/ItemStackMixin",
          "targets": [
            "net/minecraft/world/item/ItemStack"
          ],
          "handler": "afterOverrideOtherStackedOnMe",
          "kind": "inject",
          "method": "overrideOtherStackedOnMe",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/item/ItemStack#overrideOtherStackedOnMe TAIL"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/LivingEntityPriorityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "drop",
          "kind": "inject",
          "method": "dropAllDeathLoot",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#dropAllDeathLoot HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/LocalPlayerMixin",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "afterInputTick",
          "kind": "inject",
          "method": "aiStep",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/ClientInput;tick()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/LocalPlayer#aiStep INVOKE"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/MobEntityMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "initialize",
          "kind": "inject",
          "method": "finalizeSpawn",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#finalizeSpawn TAIL"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "abilityTick",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#tick TAIL"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "attack",
          "kind": "inject",
          "method": "attack",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "attack_entity",
          "why": "AttackEntityEvent"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "getFlyingSpeed",
          "kind": "inject",
          "method": "getFlyingSpeed",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#getFlyingSpeed RETURN"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "fromTag",
          "kind": "inject",
          "method": "readAdditionalSaveData",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/player/Player#readAdditionalSaveData HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/ShulkerBoxBlockEntityMixin",
          "targets": [
            "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity"
          ],
          "handler": "canInsert",
          "kind": "inject",
          "method": "canPlaceItemThroughFace",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#canPlaceItemThroughFace HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/abilities/EndermanEntityMixin",
          "targets": [
            "net/minecraft/world/entity/monster/Enderman"
          ],
          "handler": "isPlayerStaring",
          "kind": "inject",
          "method": "isBeingStaredBy",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/monster/Enderman#isBeingStaredBy HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/abilities/ExperienceOrbEntityMixin",
          "targets": [
            "net/minecraft/world/entity/ExperienceOrb"
          ],
          "handler": "onPlayerCollision",
          "kind": "inject",
          "method": "playerTouch",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;take(Lnet/minecraft/world/entity/Entity;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/ExperienceOrb#playerTouch INVOKE"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/abilities/GhastEntityMixin",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "setTarget",
          "kind": "inject",
          "method": "setTarget",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Mob#setTarget HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/abilities/LootTableMixin",
          "targets": [
            "net/minecraft/world/level/storage/loot/LootTable"
          ],
          "handler": "setTarget",
          "kind": "inject",
          "method": "getRandomItems",
          "at": "TAIL",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/loot/LootTable#getRandomItems TAIL"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/abilities/SmallFireballEntityMixin",
          "targets": [
            "net/minecraft/world/entity/projectile/hurtingprojectile/SmallFireball"
          ],
          "handler": "onEntityHit",
          "kind": "inject",
          "method": "onHitEntity",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/projectile/hurtingprojectile/SmallFireball#onHitEntity HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/entity/item/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "travelersbackpack$isInWater",
          "kind": "inject",
          "method": "isInWater",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#isInWater HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/entity/item/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "travelersbackpack$isInvulnerable",
          "kind": "inject",
          "method": "isInvulnerable",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#isInvulnerable HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/entity/item/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "travelersbackpack$onBelowWorld",
          "kind": "inject",
          "method": "onBelowWorld",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#onBelowWorld HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/entity/item/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "playerTouch",
          "kind": "inject",
          "method": "playerTouch",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/item/ItemStack;getCount()I",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/ItemEntity#playerTouch INVOKE"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/entity/item/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "travelersbackpack$onSetItem",
          "kind": "inject",
          "method": "setItem",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/ItemEntity#setItem TAIL"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/entity/item/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "travelersbackpack$onTick",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/ItemEntity#tick HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/entity/item/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "travelersbackpack$fireImmune",
          "kind": "inject",
          "method": "fireImmune",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/ItemEntity#fireImmune HEAD"
        },
        {
          "mixin": "com/tiviacz/travelersbackpack/mixin/entity/item/ItemEntityMixin",
          "targets": [
            "net/minecraft/world/entity/item/ItemEntity"
          ],
          "handler": "travelersbackpack$ignoreExplosion",
          "kind": "inject",
          "method": "ignoreExplosion",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/item/ItemEntity#ignoreExplosion HEAD"
        }
      ],
      "listening": 22,
      "accessors": 1,
      "hooks": {
        "attack_entity": 1,
        "hud": 1
      },
      "wanted": {
        "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractContents @TAIL": 1,
        "net/minecraft/client/renderer/entity/HumanoidMobRenderer#extractHumanoidRenderState @TAIL": 1,
        "net/minecraft/world/entity/Entity#isInWater @HEAD": 1,
        "net/minecraft/world/entity/Entity#isInvulnerable @HEAD": 1,
        "net/minecraft/world/entity/Entity#onBelowWorld @HEAD": 1,
        "net/minecraft/world/entity/LivingEntity#dropAllDeathLoot @HEAD": 1,
        "net/minecraft/world/entity/Mob#finalizeSpawn @TAIL": 1,
        "net/minecraft/world/entity/Mob#setTarget @HEAD": 1,
        "net/minecraft/world/entity/item/ItemEntity#fireImmune @HEAD": 1,
        "net/minecraft/world/entity/item/ItemEntity#ignoreExplosion @HEAD": 1,
        "net/minecraft/world/entity/item/ItemEntity#setItem @TAIL": 1,
        "net/minecraft/world/entity/item/ItemEntity#tick @HEAD": 1,
        "net/minecraft/world/entity/monster/Enderman#isBeingStaredBy @HEAD": 1,
        "net/minecraft/world/entity/player/Player#getFlyingSpeed @RETURN": 1,
        "net/minecraft/world/entity/player/Player#readAdditionalSaveData @HEAD": 1,
        "net/minecraft/world/entity/player/Player#tick @TAIL": 1,
        "net/minecraft/world/entity/projectile/hurtingprojectile/SmallFireball#onHitEntity @HEAD": 1,
        "net/minecraft/world/item/ItemStack#overrideOtherStackedOnMe @TAIL": 1,
        "net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity#canPlaceItemThroughFace @HEAD": 1,
        "net/minecraft/world/level/storage/loot/LootTable#getRandomItems @TAIL": 1
      },
      "wanted_calls": {
        "net/minecraft/client/player/LocalPlayer#aiStep @INVOKE": 1,
        "net/minecraft/world/entity/ExperienceOrb#playerTouch @INVOKE": 1,
        "net/minecraft/world/entity/item/ItemEntity#playerTouch @INVOKE": 1
      },
      "api": [
        {
          "class": "FluidVariant",
          "horizon": "",
          "note": "",
          "classes": 22
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 14
        },
        {
          "class": "FluidConstants",
          "horizon": "",
          "note": "",
          "classes": 12
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 12
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 10
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 8
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 7
        },
        {
          "class": "FluidVariantRendering",
          "horizon": "",
          "note": "",
          "classes": 6
        },
        {
          "class": "ExtendedMenuProvider",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "FluidStorage",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "Storage",
          "horizon": "",
          "note": "",
          "classes": 5
        },
        {
          "class": "FluidVariantAttributes",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ItemVariant",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "ContainerItemContext",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "EventFactory",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "SingleSlotStorage",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "StoragePreconditions",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "StorageUtil",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "Transaction",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "BlockApiLookup",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ContainerStorage",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "CustomUnbakedBlockStateModel",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 2
        },
        {
          "class": "RecipeSynchronization",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ResourceAmount",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ScreenEvents",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 2
        },
        {
          "class": "ServerPlayerEvents",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "SlottedStorage",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "TransactionContext",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "UnbakedModelDeserializer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "AttachmentRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "AttachmentRegistry$Builder",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "BlockColorRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientCommands",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTooltipComponentCallback",
          "horizon": "hook:tooltip_component",
          "note": "a tooltip component is drawn",
          "classes": 1
        },
        {
          "class": "CombinedSlottedStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ConventionalItemTags",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CreativeModeTabEvents$ModifyOutput",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DataGeneratorEntrypoint",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntityRendererRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntitySleepEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntitySleepEvents$AllowSettingSpawn",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntitySleepEvents$StopSleeping",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntityTrackingEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EntityTrackingEvents$StartTracking",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ExtendedMenuType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ExtendedMenuType$ExtendedFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ExtraModelKey",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricBlockEntityTypeBuilder",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FabricBlockEntityTypeBuilder$Factory",
          "horizon": "content:registries",
          "note": "a registry entry built in code",
          "classes": 1
        },
        {
          "class": "FabricBlockLootSubProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricClientCommandSource",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricCreativeModeTab",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricCreativeModeTabOutput",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack$RegistryDependentFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricRecipeProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FluidRenderingRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FluidVariantAttributeHandler",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FluidVariantRenderHandler",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "HudElementRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemApiLookup",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemApiLookup$ItemApiProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ItemStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LivingEntityRenderLayerRegistrationCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LivingEntityRenderLayerRegistrationCallback$RegistrationHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LootTableEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LootTableEvents$Modify",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLoadingPlugin",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModelLoadingPlugin$Context",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PlayerLookup",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PlayerPickItemEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PlayerPickItemEvents$PickItemFromBlock",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "QuadEmitter",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "RenderDataBlockEntity",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ResourceManagerHelper",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ResourceReloadListenerKeys",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "ScreenEvents$AfterInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenEvents$BeforeInit",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenKeyboardEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenKeyboardEvents$BeforeKeyPress",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ScreenMouseEvents$AfterMouseClick",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityLevelChangeEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityLevelChangeEvents$AfterPlayerChange",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLivingEntityEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLivingEntityEvents$AfterDeath",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLivingEntityEvents$AllowDeath",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents$AfterRespawn",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerTickEvents",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "ServerTickEvents$EndTick",
          "horizon": "hook:server_tick",
          "note": "ServerTickEvent",
          "classes": 1
        },
        {
          "class": "SimpleSynchronousResourceReloadListener",
          "horizon": "content:data",
          "note": "a data pack file",
          "classes": 1
        },
        {
          "class": "SimpleUnbakedExtraModel",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SingleVariantStorage",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SnapshotParticipant",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "StorageView",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "TransactionContext$OuterCloseCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "TransactionContext$Result",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "UseBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "VanillaHudElements",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 358,
        "features": {
          "block-behaviour": 2,
          "item-behaviour": 17,
          "block-entity": 1,
          "menu": 5,
          "entity": 1,
          "screen": 6,
          "renderer": 2,
          "recipe": 2,
          "command": 1,
          "network": 14,
          "events": 8,
          "mixin": 18
        },
        "events": [
          "EntitySleepEvents",
          "Event",
          "EventFactory",
          "PlayerPickItemEvents",
          "ServerEntityLevelChangeEvents",
          "ServerLivingEntityEvents",
          "ServerPlayerEvents",
          "UseBlockCallback"
        ],
        "examples": {
          "BackpackTankItem": [
            "isEnabled"
          ],
          "BlastFurnaceUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "CraftingUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "FeedingUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "FurnaceUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "HoseItem": [
            "consumeSeconds",
            "consumeTicks",
            "drink",
            "emitDrinkingSound",
            "emptyContents",
            "finishUsingItem",
            "getHoseMode",
            "getHoseTank",
            "getSelectedFluidTank",
            "getUseAnimation",
            "getUseDuration",
            "onUseTick",
            "playEmptySound",
            "shouldEmitDrinkingSounds",
            "spillPotion",
            "triggerAdvancement",
            "use"
          ],
          "JukeboxUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "LanternUpgradeItem": [
            "addStatusTooltip",
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "MagnetUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "PickupUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "RefillUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "SleepingBagBlock": [
            "destroyOnUse",
            "getDrops",
            "getNeighbourDirection",
            "getSeed",
            "kickVillagerOutOfBed",
            "playerWillDestroy",
            "setPlacedBy",
            "useWithoutItem"
          ],
          "SleepingBagItem": [
            "getDefaultColor",
            "isEnabled"
          ],
          "SmokerUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "TanksUpgradeItem": [
            "canBePutInBackpack",
            "getLeftFluidStack",
            "getRightFluidStack",
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack",
            "writeToRenderData"
          ],
          "TravelersBackpackBlock": [
            "entityInside",
            "getAnalogOutputSignal",
            "getSignal",
            "getTicker",
            "hasAnalogOutputSignal",
            "isSignalSource",
            "neighborChanged",
            "newBlockEntity",
            "onExplosionHit",
            "onPlace",
            "playerWillDestroy",
            "registerDispenserBehaviour",
            "removeWaterBreadthFirstSearch",
            "tryAbsorbWater",
            "useWithoutItem"
          ],
          "TravelersBackpackItem": [
            "add",
            "addAttributeModifierTooltip",
            "canFitInsideContainerItems",
            "getTooltipImage",
            "isCreative",
            "overrideOtherStackedOnMe",
            "overrideStackedOnOther",
            "place",
            "playInsertSound",
            "use",
            "useOn"
          ],
          "UpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ],
          "VoidUpgradeItem": [
            "getUpgrade",
            "getUpgradeClass",
            "hasBlockFunctionality",
            "isEnabled",
            "isTickingUpgrade",
            "requiresEquippedBackpack"
          ]
        }
      },
      "interp": {
        "classes": 358,
        "methods": 1678,
        "tried": 600,
        "completed": 151,
        "handlers_tried": 2,
        "handlers_completed": 0,
        "missing": {
          "[Lcom/tiviacz/travelersbackpack/inventory/sorter/SortSelector$SortType;#clone()Ljava/lang/Object;": 2,
          "com/google/common/collect/ArrayListMultimap#create()Lcom/google/common/collect/ArrayListMultimap;": 1,
          "com/google/common/collect/BiMap#containsKey(Ljava/lang/Object;)Z": 1,
          "com/google/common/collect/BiMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/mojang/blaze3d/vertex/PoseStack#translate(FFF)V": 1,
          "com/tiviacz/travelersbackpack/block/SleepingBagBlock#FACING": 2,
          "com/tiviacz/travelersbackpack/block/TravelersBackpackBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity#getBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 2,
          "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity#getLevel()Lnet/minecraft/world/level/Level;": 3,
          "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity#setChanged()V": 1,
          "com/tiviacz/travelersbackpack/client/screens/AbstractBackpackScreen#addRenderableWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "com/tiviacz/travelersbackpack/client/screens/AbstractBackpackScreen#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "com/tiviacz/travelersbackpack/client/screens/AbstractBackpackScreen#extractTooltip(Lnet/minecraft/client/gui/GuiGraphicsExtractor;II)V": 1,
          "com/tiviacz/travelersbackpack/client/screens/AbstractBackpackScreen#init()V": 1,
          "com/tiviacz/travelersbackpack/client/screens/AbstractBackpackScreen#resize(II)V": 1,
          "com/tiviacz/travelersbackpack/client/screens/AbstractBackpackScreen#slotClicked(Lnet/minecraft/world/inventory/Slot;IILnet/minecraft/world/inventory/ContainerInput;)V": 1,
          "com/tiviacz/travelersbackpack/client/screens/BackpackScreen#ICONS": 1,
          "com/tiviacz/travelersbackpack/client/screens/BackpackScreen#getMenu()Lnet/minecraft/world/inventory/AbstractContainerMenu;": 1,
          "com/tiviacz/travelersbackpack/client/screens/BackpackSettingsScreen#children()Ljava/util/List;": 2,
          "com/tiviacz/travelersbackpack/client/screens/BackpackSettingsScreen#clearWidgets()V": 1,
          "com/tiviacz/travelersbackpack/inventory/menu/AbstractBackpackMenu#addSlot(Lnet/minecraft/world/inventory/Slot;)Lnet/minecraft/world/inventory/Slot;": 1,
          "com/tiviacz/travelersbackpack/inventory/menu/AbstractBackpackMenu#sendAllDataToRemote()V": 1,
          "com/tiviacz/travelersbackpack/inventory/menu/AbstractBackpackMenu#slotsChanged(Lnet/minecraft/world/Container;)V": 1,
          "com/tiviacz/travelersbackpack/inventory/menu/BackpackBaseMenu#getSlot(I)Lnet/minecraft/world/inventory/Slot;": 1,
          "com/tiviacz/travelersbackpack/inventory/menu/slot/ResultSlotExt#hasItem()Z": 1,
          "com/tiviacz/travelersbackpack/inventory/menu/slot/SlotItemHandler#isActive()Z": 1,
          "com/tiviacz/travelersbackpack/inventory/menu/slot/SlotItemHandler#setChanged()V": 1,
          "com/tiviacz/travelersbackpack/inventory/sorter/SortSelector$SortType#ordinal()I": 1,
          "com/tiviacz/travelersbackpack/inventory/upgrades/UpgradeBase#hasTab()Z": 4,
          "com/tiviacz/travelersbackpack/inventory/upgrades/refill/RefillUpgrade#getRows()I": 2,
          "java/util/Collections#emptyList()Ljava/util/List;": 1,
          "java/util/List#of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;": 3,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 1,
          "mezz/jei/api/constants/RecipeTypes#CRAFTING": 1,
          "mezz/jei/common/Internal#getServerConnection()Lmezz/jei/common/network/IConnectionToServer;": 1,
          "net/blay09/mods/craftingtweaks/api/CraftingGrid#getCraftingMatrix(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/inventory/AbstractContainerMenu;)Lnet/minecraft/world/Container;": 1,
          "net/fabricmc/fabric/api/client/command/v2/ClientCommandRegistrationCallback#EVENT": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientTickEvents#START_CLIENT_TICK": 1,
          "net/fabricmc/fabric/api/client/keymapping/v1/KeyMappingHelper#registerKeyMapping(Lnet/minecraft/client/KeyMapping;)Lnet/minecraft/client/KeyMapping;": 1,
          "net/fabricmc/fabric/api/client/networking/v1/ClientPlayNetworking$Context#client()Lnet/minecraft/client/Minecraft;": 2,
          "net/fabricmc/fabric/api/client/render/fluid/v1/FluidRenderingRegistry#register(Lnet/minecraft/world/level/material/Fluid;Lnet/minecraft/world/level/material/Fluid;Lnet/minecraft/client/renderer/block/FluidModel$Unbaked;)V": 1,
          "net/fabricmc/fabric/api/client/rendering/v1/ClientTooltipComponentCallback#EVENT": 1,
          "net/fabricmc/fabric/api/client/rendering/v1/LivingEntityRenderLayerRegistrationCallback#EVENT": 1,
          "net/fabricmc/fabric/api/client/screen/v1/ScreenEvents#AFTER_INIT": 1,
          "net/fabricmc/fabric/api/entity/event/v1/EntitySleepEvents#ALLOW_SETTING_SPAWN": 1,
          "net/fabricmc/fabric/api/entity/event/v1/ServerLivingEntityEvents#ALLOW_DEATH": 1,
          "net/fabricmc/fabric/api/networking/v1/PayloadTypeRegistry#serverboundPlay()Lnet/fabricmc/fabric/api/networking/v1/PayloadTypeRegistry;": 1,
          "net/fabricmc/fabric/api/networking/v1/ServerPlayNetworking$Context#server()Lnet/minecraft/server/MinecraftServer;": 3,
          "net/fabricmc/fabric/api/transfer/v1/context/ContainerItemContext#ofPlayerCursor(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/inventory/AbstractContainerMenu;)Lnet/fabricmc/fabric/api/transfer/v1/context/ContainerItemContext;": 2,
          "net/fabricmc/fabric/api/transfer/v1/context/ContainerItemContext#ofSingleSlot(Lnet/fabricmc/fabric/api/transfer/v1/storage/base/SingleSlotStorage;)Lnet/fabricmc/fabric/api/transfer/v1/context/ContainerItemContext;": 1,
          "net/fabricmc/fabric/api/transfer/v1/context/ContainerItemContext#withConstant(Lnet/minecraft/world/item/ItemStack;)Lnet/fabricmc/fabric/api/transfer/v1/context/ContainerItemContext;": 4,
          "net/fabricmc/fabric/api/transfer/v1/fluid/FluidStorage#ITEM": 1,
          "net/fabricmc/fabric/api/transfer/v1/fluid/FluidVariant#blank()Lnet/fabricmc/fabric/api/transfer/v1/fluid/FluidVariant;": 2,
          "net/fabricmc/fabric/api/transfer/v1/fluid/FluidVariant#getFluid()Lnet/minecraft/world/level/material/Fluid;": 1,
          "net/fabricmc/fabric/api/transfer/v1/fluid/FluidVariant#isBlank()Z": 3,
          "net/fabricmc/fabric/api/transfer/v1/storage/Storage#iterator()Ljava/util/Iterator;": 1,
          "net/fabricmc/fabric/api/transfer/v1/storage/Storage#supportsExtraction()Z": 1,
          "net/fabricmc/fabric/api/transfer/v1/transaction/Transaction#openOuter()Lnet/fabricmc/fabric/api/transfer/v1/transaction/Transaction;": 3,
          "net/minecraft/client/KeyMapping#isUnbound()Z": 1,
          "net/minecraft/client/KeyMapping#matches(Lnet/minecraft/client/input/KeyEvent;)Z": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/client/gui/GuiGraphicsExtractor#enableScissor(IIII)V": 1,
          "net/minecraft/client/gui/GuiGraphicsExtractor#fill(IIIII)V": 1,
          "net/minecraft/client/gui/GuiGraphicsExtractor#pose()Lorg/joml/Matrix3x2fStack;": 1,
          "net/minecraft/client/gui/components/events/AbstractContainerEventHandler#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "net/minecraft/client/gui/components/events/AbstractContainerEventHandler#mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z": 1,
          "net/minecraft/client/input/MouseButtonEvent#x()D": 4,
          "net/minecraft/client/renderer/RenderPipelines#GUI_TEXTURED": 3,
          "net/minecraft/client/renderer/block/dispatch/Variant#modelLocation()Lnet/minecraft/resources/Identifier;": 2,
          "net/minecraft/client/renderer/item/ItemModel$BakingContext#blockModelBaker()Lnet/minecraft/client/resources/model/ModelBaker;": 1,
          "net/minecraft/client/resources/model/ResolvableModel$Resolver#markDependency(Lnet/minecraft/resources/Identifier;)V": 1,
          "net/minecraft/core/NonNullList#create()Lnet/minecraft/core/NonNullList;": 2,
          "net/minecraft/core/NonNullList#size()I": 1,
          "net/minecraft/core/component/DataComponentMap#keySet()Ljava/util/Set;": 1,
          "net/minecraft/core/component/DataComponents#FOOD": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 4,
          "net/minecraft/core/registries/Registries#ITEM": 1,
          "net/minecraft/data/recipes/RecipeUnlockAdvancementBuilder#unlockedBy(Ljava/lang/String;Lnet/minecraft/advancements/triggers/Criterion;)V": 1,
          "net/minecraft/nbt/NbtOps#INSTANCE": 4,
          "net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket#create(Lnet/minecraft/world/level/block/entity/BlockEntity;)Lnet/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket;": 1,
          "net/minecraft/server/level/ServerPlayer#getDisplayName()Lnet/minecraft/network/chat/Component;": 2,
          "net/minecraft/server/level/ServerPlayer#level()Lnet/minecraft/server/level/ServerLevel;": 1,
          "net/minecraft/sounds/SoundEvents#BUCKET_EMPTY": 1,
          "net/minecraft/util/RandomSource#create(J)Lnet/minecraft/util/RandomSource;": 1,
          "net/minecraft/world/SimpleContainer#<init>([Lnet/minecraft/world/item/ItemStack;)V": 2,
          "net/minecraft/world/entity/Entity#isAlive()Z": 1,
          "net/minecraft/world/entity/ai/attributes/Attributes#ARMOR": 1,
          "net/minecraft/world/entity/player/Player#getActiveEffects()Ljava/util/Collection;": 1,
          "net/minecraft/world/entity/player/Player#getAttribute(Lnet/minecraft/core/Holder;)Lnet/minecraft/world/entity/ai/attributes/AttributeInstance;": 1,
          "net/minecraft/world/entity/player/Player#getFoodData()Lnet/minecraft/world/food/FoodData;": 1,
          "net/minecraft/world/entity/player/Player#getId()I": 1,
          "net/minecraft/world/entity/player/Player#level()Lnet/minecraft/world/level/Level;": 7,
          "net/minecraft/world/food/FoodData#needsFood()Z": 1,
          "net/minecraft/world/inventory/ResultSlot#onSwapCraft(I)V": 1,
          "net/minecraft/world/item/ItemStack#EMPTY": 2,
          "net/minecraft/world/item/ItemStack#copy()Lnet/minecraft/world/item/ItemStack;": 2,
          "net/minecraft/world/item/ItemStack#getDamageValue()I": 1,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 10,
          "net/minecraft/world/item/ItemStack#getMaxStackSize()I": 2,
          "net/minecraft/world/item/ItemStack#getOrDefault(Lnet/minecraft/core/component/DataComponentType;Ljava/lang/Object;)Ljava/lang/Object;": 5,
          "net/minecraft/world/item/ItemStack#has(Lnet/minecraft/core/component/DataComponentType;)Z": 4,
          "net/minecraft/world/item/ItemStack#isEmpty()Z": 1,
          "net/minecraft/world/item/Items#AIR": 1,
          "net/minecraft/world/item/Items#TRIDENT": 1,
          "net/minecraft/world/item/context/BlockPlaceContext#getHorizontalDirection()Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/world/item/crafting/CraftingInput#stackedContents()Lnet/minecraft/world/entity/player/StackedItemContents;": 1,
          "net/minecraft/world/level/BlockGetter#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/world/level/Level#canSeeSky(Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/world/level/Level#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 2,
          "net/minecraft/world/level/Level#getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/Level#isClientSide()Z": 2,
          "net/minecraft/world/level/Level#removeBlock(Lnet/minecraft/core/BlockPos;Z)Z": 1,
          "net/minecraft/world/level/block/Block#animateTick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V": 1,
          "net/minecraft/world/level/block/Block#byItem(Lnet/minecraft/world/item/Item;)Lnet/minecraft/world/level/block/Block;": 1,
          "net/minecraft/world/level/block/Block#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/minecraft/world/level/block/Blocks#BLAST_FURNACE": 1,
          "net/minecraft/world/level/block/Blocks#FURNACE": 1,
          "net/minecraft/world/level/block/RenderShape#MODEL": 2,
          "net/minecraft/world/level/block/entity/BlockEntity#<init>(Lnet/minecraft/world/level/block/entity/BlockEntityType;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#collectImplicitComponents(Lnet/minecraft/core/component/DataComponentMap$Builder;)V": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#preRemoveSideEffects(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#setLevel(Lnet/minecraft/world/level/Level;)V": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 2,
          "net/minecraft/world/level/block/state/BlockState#getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;": 3,
          "net/minecraft/world/level/block/state/StateDefinition$Builder#add([Lnet/minecraft/world/level/block/state/properties/Property;)Lnet/minecraft/world/level/block/state/StateDefinition$Builder;": 1,
          "net/minecraft/world/level/block/state/properties/BedPart#FOOT": 1,
          "net/minecraft/world/level/storage/loot/LootTable#lootTable()Lnet/minecraft/world/level/storage/loot/LootTable$Builder;": 2,
          "net/minecraft/world/phys/EntityHitResult#getEntity()Lnet/minecraft/world/entity/Entity;": 1,
          "net/neoforged/neoforge/common/ModConfigSpec#isLoaded()Z": 20,
          "new net/minecraft/client/renderer/Rect2i": 1,
          "new net/minecraft/world/item/ItemStack": 1,
          "new net/minecraft/world/item/crafting/Recipe$CommonInfo": 1
        },
        "runs": [
          {
            "class": "com/tiviacz/travelersbackpack/network/ClientboundSyncComponentsPacket",
            "method": "entityID",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/api/event/HoseEvent",
            "method": "isCanceled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/item/upgrade/MagnetUpgradeItem",
            "method": "isTickingUpgrade",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity$BackpackRenderData",
            "method": "dyeColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity$BackpackRenderData",
            "method": "isSleepingBagDeployed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity$BackpackRenderData",
            "method": "sleepingBagColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/component/Slots",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/component/Slots",
            "method": "memoryMatch",
            "desc": "(Ljava/util/List;)Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/block/TravelersBackpackBlock",
            "method": "hasAnalogOutputSignal",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/filter/FilterButton",
            "method": "getCurrentState",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/crafting/CraftingWidget",
            "method": "isCraftingTweaksAdditionEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity",
            "method": "isSleepingBagDeployed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity",
            "method": "getSettingsUser",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity",
            "method": "shouldCloseCurrentScreen",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity",
            "method": "saveSettingsExtraData",
            "desc": "(Lnet/minecraft/core/BlockPos;)Lcom/tiviacz/travelersbackpack/init/ModScreenHandlerTypes$SettingsScreenData;",
            "value": "obj#114"
          },
          {
            "class": "com/tiviacz/travelersbackpack/blockentity/BackpackBlockEntity",
            "method": "saveExtraData",
            "desc": "(ILnet/minecraft/core/BlockPos;)Lcom/tiviacz/travelersbackpack/init/ModScreenHandlerTypes$BlockEntityScreenData;",
            "value": "obj#115"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/Tiers$Tier",
            "method": "getOrdinal",
            "desc": "()I",
            "value": "-1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/sorter/ContainerSorter$CustomWrapper",
            "method": "getSlotLimit",
            "desc": "(I)I",
            "value": "8192"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/sorter/ContainerSorter$CustomWrapper",
            "method": "isItemValid",
            "desc": "(ILnet/minecraft/world/item/ItemStack;)Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/menu/slot/UpgradeSlotItemHandler",
            "method": "shiftClickToBackpack",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/FilterSettingsBase",
            "method": "isTagFilter",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/voiding/VoidWidget",
            "method": "isHoveringWithTrashBin",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/voiding/VoidWidget",
            "method": "selectSlots",
            "desc": "(Lnet/minecraft/world/inventory/Slot;I)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/util/CooldownHelper",
            "method": "seconds",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/compat/craftingtweaks/BackpackCraftingGridProvider",
            "method": "requiresServerSide",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/compat/craftingtweaks/BackpackCraftingGridProvider",
            "method": "handles",
            "desc": "(Lnet/minecraft/world/inventory/AbstractContainerMenu;)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/compat/craftingtweaks/BackpackCraftingGridProvider",
            "method": "ignoresSlotId",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/compat/craftingtweaks/BackpackCraftingGridProvider",
            "method": "rotateSlotId",
            "desc": "(IZ)I",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/init/ModScreenHandlerTypes$BlockEntityScreenData",
            "method": "entityId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/UpgradeBase",
            "method": "getDataHolderSlot",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/handlers/KeybindHandler",
            "method": "sdlButtonMask",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/buttons/EquipButton",
            "method": "mouseClicked",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/TravelersBackpackClient$BackpackTintSources$LeftFluidItemTintSource",
            "method": "defaultColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/menu/slot/ResultSlotExt",
            "method": "mayPickup",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/menu/slot/ResultSlotExt",
            "method": "isActive",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/common/BackpackAbilities",
            "method": "abilityTick",
            "desc": "(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/network/SupporterBadgePacket$Serverbound",
            "method": "isEnabledForPlayer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/feeding/FeedingFilterSettings",
            "method": "checkHarmfulEffect",
            "desc": "(Lnet/minecraft/world/item/component/Consumable;)Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/widgets/ScrollPanel",
            "method": "clickPanel",
            "desc": "(DDLnet/minecraft/client/input/MouseButtonEvent;)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/widgets/ScrollPanel",
            "method": "mouseScrolled",
            "desc": "(DDDD)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/widgets/ScrollPanel",
            "method": "getScrollAmount",
            "desc": "()I",
            "value": "20"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/widgets/ScrollPanel",
            "method": "isMouseOver",
            "desc": "(DD)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/widgets/ScrollPanel",
            "method": "mouseDragged",
            "desc": "(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/widgets/FilterUpgradeWidgetBase",
            "method": "getSelectedTagIndex",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/widgets/FilterUpgradeWidgetBase",
            "method": "addTag",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/widgets/FilterUpgradeWidgetBase",
            "method": "removeTag",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/item/upgrade/VoidUpgradeItem",
            "method": "requiresEquippedBackpack",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/item/upgrade/JukeboxUpgradeItem",
            "method": "hasBlockFunctionality",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/api/event/HoseEvent$Drink",
            "method": "getAmount",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/BackpackSettingsScreen",
            "method": "selectSlots",
            "desc": "(Lnet/minecraft/world/inventory/Slot;I)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/client/screens/BackpackSettingsScreen",
            "method": "selectSlotsIndex",
            "desc": "(Ljava/util/List;ZLnet/minecraft/world/inventory/Slot;I)Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/item/upgrade/TanksUpgradeItem",
            "method": "requiresEquippedBackpack",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/advancements/ActionTypeTrigger$TriggerInstance",
            "method": "test",
            "desc": "(Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/compat/jei/ItemTransferInfo",
            "method": "getMenuType",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#422"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/crafting/CraftingContainerImproved",
            "method": "stillValid",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/crafting/CraftingContainerImproved",
            "method": "getHeight",
            "desc": "()I",
            "value": "3"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/crafting/CraftingContainerImproved",
            "method": "getWidth",
            "desc": "()I",
            "value": "3"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/BackpackContainer$3",
            "method": "getScreenOpeningData",
            "desc": "(Lnet/minecraft/server/level/ServerPlayer;)Lcom/tiviacz/travelersbackpack/init/ModScreenHandlerTypes$ItemScreenData;",
            "value": "obj#502"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/BackpackContainer$3",
            "method": "getScreenOpeningData",
            "desc": "(Lnet/minecraft/server/level/ServerPlayer;)Ljava/lang/Object;",
            "value": "obj#504"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/FluidVariantWrapper",
            "method": "getAmount",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/FluidVariantWrapper",
            "method": "getViewAmount",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/FluidVariantWrapper",
            "method": "setAmount",
            "desc": "(J)Lcom/tiviacz/travelersbackpack/inventory/FluidVariantWrapper;",
            "value": "obj#544"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/FluidVariantWrapper",
            "method": "grow",
            "desc": "(J)Lcom/tiviacz/travelersbackpack/inventory/FluidVariantWrapper;",
            "value": "obj#546"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/FluidVariantWrapper",
            "method": "shrink",
            "desc": "(J)Lcom/tiviacz/travelersbackpack/inventory/FluidVariantWrapper;",
            "value": "obj#548"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/FluidVariantWrapper",
            "method": "amount",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/compat/vinurl/ServerboundVinURLStopPacket",
            "method": "cancelable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/upgrades/IUpgrade",
            "method": "hasTab",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/menu/slot/FilterSlotItemHandler",
            "method": "isFake",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/inventory/menu/BackpackBaseMenu",
            "method": "stillValid",
            "desc": "(Lnet/minecraft/world/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "com/tiviacz/travelersbackpack/item/upgrade/LanternUpgradeItem",
            "method": "hasBlockFunctionality",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 3534
      },
      "verdict": "no",
      "summary": "only 2 of 22 listening patch sites have a hook (9%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "mr_trek",
      "name": "Trek",
      "version": "1-B0.6.2.1",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [],
      "mixin_configs": [],
      "depends": [],
      "classes": 0,
      "methods": 0,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [],
      "code": {
        "classes": 0,
        "features": {},
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 0,
        "methods": 0,
        "tried": 0,
        "completed": 0,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {},
        "runs": [],
        "insns": 0
      },
      "verdict": "works",
      "summary": "no patch sites: its content is carried over as a content mod"
    },
    {
      "mod_id": "veinminer_client",
      "name": "Veinminer Client",
      "version": "2.13.0",
      "license": "AGPL 3.0",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "de/miraculixx/veinminerClient/VeinminerClient"
        },
        {
          "kind": "modmenu",
          "value": "de/miraculixx/veinminerClient/compat/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "veinminer_client.mixins.json"
      ],
      "depends": [
        "veinminer"
      ],
      "classes": 9,
      "methods": 33,
      "sites": [
        {
          "mixin": "de/miraculixx/veinminerClient/mixin/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "renderVeinminerHighlights",
          "kind": "inject",
          "method": "submitBlockOutline",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#submitBlockOutline HEAD"
        },
        {
          "mixin": "de/miraculixx/veinminerClient/mixin/MixinMouseHandler",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "veinminerOnScroll",
          "kind": "inject",
          "method": "onScroll",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "wheel",
          "why": "the wheel turns"
        }
      ],
      "listening": 2,
      "accessors": 0,
      "hooks": {
        "wheel": 1
      },
      "wanted": {
        "net/minecraft/client/renderer/LevelRenderer#submitBlockOutline @HEAD": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "HudElement",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "HudElementRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 9,
        "features": {
          "events": 1,
          "mixin": 2
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 9,
        "methods": 16,
        "tried": 16,
        "completed": 1,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "de/miraculixx/veinminer/network/VeinminerPayloadKt#payloadType(Ljava/lang/String;)Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload$Type;": 4,
          "de/miraculixx/veinminerClient/KeyBindManager#INSTANCE": 2,
          "de/miraculixx/veinminerClient/constants/KeyBindings#INSTANCE": 1,
          "de/miraculixx/veinminerClient/render/BlockHighlightingRenderer#INSTANCE": 1,
          "de/miraculixx/veinminerClient/render/FabricHUDRenderer#renderCrosshair(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V": 1,
          "de/miraculixx/veinminerClient/render/ShapeRouletteOverlay#INSTANCE": 1,
          "kotlin/Unit#INSTANCE": 2,
          "kotlin/coroutines/intrinsics/IntrinsicsKt#getCOROUTINE_SUSPENDED()Ljava/lang/Object;": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1,
          "new net/minecraft/client/KeyMapping": 1
        },
        "runs": [
          {
            "class": "de/miraculixx/veinminerClient/VeinminerClient$onInitializeClient$4",
            "method": "create",
            "desc": "(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;",
            "value": "obj#4"
          }
        ],
        "insns": 264
      },
      "verdict": "partly",
      "summary": "1 of 2 listening patch sites land on a Horizon hook (50%); of 2 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "veinminer_enchantment",
      "name": "Veinminer Enchantment",
      "version": "2.13.0",
      "license": "AGPL 3.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "de/miraculixx/veinminerEnchant/fabric/VeinminerEnchantment"
        }
      ],
      "mixin_configs": [],
      "depends": [
        "veinminer"
      ],
      "classes": 8,
      "methods": 28,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 8,
        "features": {},
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 8,
        "methods": 13,
        "tried": 13,
        "completed": 4,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "de/miraculixx/veinminerEnchant/paper/VeinminerEnchantment#getLogger()Ljava/util/logging/Logger;": 1,
          "io/papermc/paper/plugin/bootstrap/BootstrapContext#getLifecycleManager()Lio/papermc/paper/plugin/lifecycle/event/LifecycleEventManager;": 1,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 1,
          "java/util/stream/Stream#empty()Ljava/util/stream/Stream;": 1,
          "new io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver": 1,
          "org/slf4j/Logger#info(Ljava/lang/String;)V": 1
        },
        "runs": [],
        "insns": 54
      },
      "verdict": "no",
      "summary": "no patch sites and no content: nothing to convert"
    },
    {
      "mod_id": "veinminer",
      "name": "Veinminer",
      "version": "2.13.0",
      "license": "AGPL 3.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "de/miraculixx/veinminer/Veinminer"
        }
      ],
      "mixin_configs": [
        "veinminer.mixins.json"
      ],
      "depends": [],
      "classes": 6,
      "methods": 53,
      "sites": [
        {
          "mixin": "de/miraculixx/veinminer/mixin/MixinPackRepository",
          "targets": [
            "net/minecraft/server/packs/repository/PackRepository"
          ],
          "handler": "veinminerAddEnchantmentPack",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/packs/repository/PackRepository#<init> RETURN"
        }
      ],
      "listening": 1,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/server/packs/repository/PackRepository#<init> @RETURN": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "AttackBlockCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$Context",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ClientPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_server",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PayloadTypeRegistry",
          "horizon": "hook:net_from_server",
          "note": "a custom payload channel",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PlayerBlockBreakEvents$Before",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityEvents$Load",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarting",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopped",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Disconnect",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayConnectionEvents$Join",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$Context",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        },
        {
          "class": "ServerPlayNetworking$PlayPayloadHandler",
          "horizon": "hook:net_from_client",
          "note": "play packets",
          "classes": 1
        }
      ],
      "code": {
        "classes": 6,
        "features": {
          "command": 1,
          "events": 3,
          "mixin": 1
        },
        "events": [
          "AttackBlockCallback",
          "Event",
          "PlayerBlockBreakEvents"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 6,
        "methods": 22,
        "tried": 22,
        "completed": 13,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "de/miraculixx/veinminer/ActiveConfig#INSTANCE": 1,
          "de/miraculixx/veinminer/event/EventState#INSTANCE": 1,
          "de/miraculixx/veinminer/network/VeinminerPayloadKt#payloadType(Ljava/lang/String;)Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload$Type;": 4,
          "java/util/Set#stream()Ljava/util/stream/Stream;": 1,
          "kotlin/Result#Companion": 1,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 1
        },
        "runs": [
          {
            "class": "de/miraculixx/veinminer/utils/FabricHost",
            "method": "getActive",
            "desc": "()Z",
            "value": "0"
          }
        ],
        "insns": 294
      },
      "verdict": "no",
      "summary": "none of its 1 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "villagernames",
      "name": "Villager Names",
      "version": "9.0",
      "license": "All Rights Reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "com/serilum/villagernames/ModFabric"
        },
        {
          "kind": "modmenu",
          "value": "com/serilum/villagernames/fabric/config/IntegrateModMenu"
        }
      ],
      "mixin_configs": [
        "villagernames_fabric.mixins.json"
      ],
      "depends": [
        "collective"
      ],
      "classes": 37,
      "methods": 130,
      "sites": [
        {
          "mixin": "com/serilum/villagernames_common_fabric/mixin/MerchantScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/MerchantScreen"
          ],
          "handler": "extractLabels",
          "kind": "inject",
          "method": "extractLabels",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/screens/inventory/MerchantScreen#extractLabels HEAD"
        },
        {
          "mixin": "com/serilum/villagernames_common_fabric/mixin/MerchantScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/inventory/MerchantScreen"
          ],
          "handler": "extractLabels_component",
          "kind": "modify-variable",
          "method": "extractLabels",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/Font;width(Lnet/minecraft/network/chat/FormattedText;)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        }
      ],
      "listening": 1,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/gui/screens/inventory/MerchantScreen#extractLabels @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/client/gui/Font#width @INVOKE (modify-variable)": 1
      },
      "api": [
        {
          "class": "CommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerEntityEvents$Load",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "UseEntityCallback",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 37,
        "features": {
          "command": 1,
          "events": 4,
          "mixin": 3
        },
        "events": [
          "EntityJoinLevelEvent",
          "Event",
          "PlayerInteractEvent",
          "UseEntityCallback"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 37,
        "methods": 33,
        "tried": 33,
        "completed": 9,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/natamus/collective_common_fabric/functions/DataFunctions#getConfigDirectory()Ljava/lang/String;": 1,
          "com/natamus/collective_common_forge/functions/DataFunctions#getConfigDirectory()Ljava/lang/String;": 1,
          "com/natamus/collective_common_neoforge/functions/DataFunctions#getConfigDirectory()Ljava/lang/String;": 1,
          "net/fabricmc/fabric/api/event/lifecycle/v1/ServerEntityEvents#ENTITY_LOAD": 1,
          "net/minecraft/world/entity/Entity#getName()Lnet/minecraft/network/chat/Component;": 3,
          "net/minecraft/world/entity/Entity#getType()Lnet/minecraft/world/entity/EntityType;": 3,
          "net/minecraftforge/event/RegisterCommandsEvent#getDispatcher()Lcom/mojang/brigadier/CommandDispatcher;": 1,
          "net/minecraftforge/event/entity/EntityJoinLevelEvent#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraftforge/event/entity/player/PlayerInteractEvent$EntityInteractSpecific#getEntity()Lnet/minecraft/world/entity/player/Player;": 1,
          "net/neoforged/neoforge/event/RegisterCommandsEvent#getDispatcher()Lcom/mojang/brigadier/CommandDispatcher;": 1,
          "net/neoforged/neoforge/event/entity/EntityJoinLevelEvent#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "net/neoforged/neoforge/event/entity/player/PlayerInteractEvent$EntityInteract#getEntity()Lnet/minecraft/world/entity/player/Player;": 1
        },
        "runs": [],
        "insns": 87
      },
      "verdict": "no",
      "summary": "none of its 2 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "visualworkbench",
      "name": "Visual Workbench",
      "version": "26.3.0",
      "license": "MPL-2.0",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "fuzs/visualworkbench/fabric/client/VisualWorkbenchFabricClient"
        },
        {
          "kind": "jei_mod_plugin",
          "value": "fuzs/visualworkbench/common/integration/jei/VisualWorkbenchJEIPlugin"
        },
        {
          "kind": "main",
          "value": "fuzs/visualworkbench/fabric/VisualWorkbenchFabric"
        }
      ],
      "mixin_configs": [
        "visualworkbench.common.mixins.json",
        "visualworkbench.fabric.mixins.json"
      ],
      "depends": [
        "forgeconfigapiport",
        "puzzleslib"
      ],
      "classes": 23,
      "methods": 126,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 23,
        "features": {
          "block-behaviour": 1,
          "block-entity": 1,
          "menu": 1,
          "renderer": 1
        },
        "events": [],
        "examples": {
          "CraftingTableWithInventoryBlock": [
            "affectNeighborsAfterRemoval",
            "getAnalogOutputSignal",
            "getBlockEntityType",
            "hasAnalogOutputSignal",
            "useWithoutItem"
          ]
        }
      },
      "interp": {
        "classes": 23,
        "methods": 75,
        "tried": 75,
        "completed": 22,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Lfuzs/visualworkbench/common/config/ClientConfig$IngredientRendering;#clone()Ljava/lang/Object;": 1,
          "[Lfuzs/visualworkbench/common/config/ClientConfig$RotateIngredients;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/BiMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "com/google/common/collect/Maps#unmodifiableBiMap(Lcom/google/common/collect/BiMap;)Lcom/google/common/collect/BiMap;": 2,
          "fuzs/puzzleslib/common/api/client/event/v1/ClientTagsUpdatedCallback#EVENT": 2,
          "fuzs/puzzleslib/common/api/container/v1/ContainerMenuHelper#copyItemsIntoContainer(Lnet/minecraft/core/NonNullList;Lnet/minecraft/world/Container;)V": 1,
          "fuzs/puzzleslib/common/api/core/v1/ModLoaderEnvironment#INSTANCE": 1,
          "fuzs/visualworkbench/common/data/tags/ModBlockTagsProvider#tag(Lnet/minecraft/tags/TagKey;)Lfuzs/puzzleslib/common/api/data/v3/tags/AbstractTagAppender;": 1,
          "fuzs/visualworkbench/common/world/level/block/entity/CraftingTableBlockEntity#getLevel()Lnet/minecraft/world/level/Level;": 1,
          "fuzs/visualworkbench/common/world/level/block/entity/CraftingTableBlockEntity#saveWithoutMetadata(Lnet/minecraft/core/HolderLookup$Provider;)Lnet/minecraft/nbt/CompoundTag;": 1,
          "java/util/function/Predicate#test(Ljava/lang/Object;)Z": 1,
          "net/minecraft/client/renderer/blockentity/state/BlockEntityRenderState#<init>()V": 2,
          "net/minecraft/client/renderer/item/ItemStackRenderState#getModelBoundingBox()Lnet/minecraft/world/phys/AABB;": 1,
          "net/minecraft/core/Holder$Reference#value()Ljava/lang/Object;": 5,
          "net/minecraft/core/NonNullList#get(I)Ljava/lang/Object;": 1,
          "net/minecraft/core/NonNullList#getFirst()Ljava/lang/Object;": 1,
          "net/minecraft/core/NonNullList#size()I": 2,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 1,
          "net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket#create(Lnet/minecraft/world/level/block/entity/BlockEntity;)Lnet/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket;": 2,
          "net/minecraft/world/Container#stillValidBlockEntity(Lnet/minecraft/world/level/block/entity/BlockEntity;Lnet/minecraft/world/entity/player/Player;)Z": 1,
          "net/minecraft/world/Containers#updateNeighboursAfterDestroy(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V": 1,
          "net/minecraft/world/inventory/CraftingMenu#slotsChanged(Lnet/minecraft/world/Container;)V": 1,
          "net/minecraft/world/level/Level#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/world/level/block/RenderShape#MODEL": 1,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#loadAdditional(Lnet/minecraft/world/level/storage/ValueInput;)V": 1,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#saveAdditional(Lnet/minecraft/world/level/storage/ValueOutput;)V": 1,
          "net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity#setChanged()V": 1,
          "net/minecraft/world/level/block/state/BlockState#getValues()Ljava/util/stream/Stream;": 1
        },
        "runs": [
          {
            "class": "fuzs/visualworkbench/common/world/level/block/entity/CraftingTableBlockEntity",
            "method": "canTakeItem",
            "desc": "(Lnet/minecraft/world/Container;ILnet/minecraft/world/item/ItemStack;)Z",
            "value": "0"
          },
          {
            "class": "fuzs/visualworkbench/common/client/renderer/blockentity/ClientCraftingTableAnimationController",
            "method": "getTime",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fuzs/visualworkbench/common/client/renderer/blockentity/ClientCraftingTableAnimationController",
            "method": "getCurrentAngle",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "fuzs/visualworkbench/common/client/renderer/blockentity/ClientCraftingTableAnimationController",
            "method": "getNextAngle",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "fuzs/visualworkbench/common/client/renderer/blockentity/ClientCraftingTableAnimationController",
            "method": "calcEaseOutQuad",
            "desc": "(DFFD)F",
            "value": "NaNf"
          },
          {
            "class": "fuzs/visualworkbench/common/world/level/block/entity/WorkbenchVisualsProvider$1",
            "method": "getTime",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "fuzs/visualworkbench/common/world/level/block/entity/WorkbenchVisualsProvider$1",
            "method": "getCurrentAngle",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "fuzs/visualworkbench/common/world/level/block/entity/WorkbenchVisualsProvider$1",
            "method": "getNextAngle",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "fuzs/visualworkbench/common/world/level/block/CraftingTableWithInventoryBlock",
            "method": "hasAnalogOutputSignal",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "1"
          }
        ],
        "insns": 381
      },
      "verdict": "works",
      "summary": "no patch sites: its content is carried over as a content mod"
    },
    {
      "mod_id": "visuality",
      "name": "Visuality",
      "version": "0.7.15+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "visuality/VisualityMod"
        },
        {
          "kind": "modmenu",
          "value": "visuality/compat/VisualityModMenu"
        }
      ],
      "mixin_configs": [
        "visuality.mixins.json"
      ],
      "depends": [
        "cloth-config"
      ],
      "classes": 36,
      "methods": 148,
      "sites": [
        {
          "mixin": "visuality/mixin/AmethystClusterMixin",
          "targets": [
            "net/minecraft/world/level/block/AmethystClusterBlock"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/AmethystClusterBlock#<init> RETURN"
        },
        {
          "mixin": "visuality/mixin/BlockMixin",
          "targets": [
            "net/minecraft/world/level/block/Block"
          ],
          "handler": "randomDisplayTick",
          "kind": "inject",
          "method": "animateTick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/Block#animateTick TAIL"
        },
        {
          "mixin": "visuality/mixin/CreeperEntityMixin",
          "targets": [
            "net/minecraft/world/entity/monster/Creeper"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/monster/Creeper#tick TAIL"
        },
        {
          "mixin": "visuality/mixin/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "spawnSprintingParticles",
          "kind": "inject",
          "method": "spawnSprintParticle",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#spawnSprintParticle TAIL"
        },
        {
          "mixin": "visuality/mixin/LivingEntityMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "tick",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#tick TAIL"
        }
      ],
      "listening": 5,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/world/entity/Entity#spawnSprintParticle @TAIL": 1,
        "net/minecraft/world/entity/LivingEntity#tick @TAIL": 1,
        "net/minecraft/world/entity/monster/Creeper#tick @TAIL": 1,
        "net/minecraft/world/level/block/AmethystClusterBlock#<init> @RETURN": 1,
        "net/minecraft/world/level/block/Block#animateTick @TAIL": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$StartLevelTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricParticleTypes",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ParticleProviderRegistry$PendingParticleProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 36,
        "features": {
          "particle": 7,
          "events": 1,
          "mixin": 6
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 36,
        "methods": 78,
        "tried": 78,
        "completed": 12,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "java/util/Random#nextInt(I)I": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientTickEvents#START_LEVEL_TICK": 1,
          "net/fabricmc/fabric/api/client/particle/v1/ParticleProviderRegistry#getInstance()Lnet/fabricmc/fabric/api/client/particle/v1/ParticleProviderRegistry;": 2,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 3,
          "net/minecraft/client/particle/SingleQuadParticle#extractRotatedQuad(Lnet/minecraft/client/renderer/state/level/QuadParticleRenderState;Lnet/minecraft/client/Camera;Lorg/joml/Quaternionf;F)V": 1,
          "net/minecraft/client/particle/SingleQuadParticle#tick()V": 1,
          "net/minecraft/client/particle/SingleQuadParticle$Layer#TRANSLUCENT": 7,
          "net/minecraft/core/registries/BuiltInRegistries#BLOCK": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ENTITY_TYPE": 1,
          "net/minecraft/core/registries/BuiltInRegistries#ITEM": 1,
          "net/minecraft/core/registries/BuiltInRegistries#PARTICLE_TYPE": 2,
          "net/minecraft/util/ARGB#red(I)I": 1,
          "net/minecraft/world/entity/EquipmentSlot#FEET": 2,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 1,
          "net/minecraft/world/level/block/AmethystBlock#animateTick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V": 1,
          "net/minecraft/world/level/block/state/BlockState#getBlock()Lnet/minecraft/world/level/block/Block;": 1,
          "visuality/mixin/CreeperEntityMixin#level()Lnet/minecraft/world/level/Level;": 1,
          "visuality/mixin/LivingEntityMixin#getBbHeight()F": 1,
          "visuality/mixin/LivingEntityMixin#level()Lnet/minecraft/world/level/Level;": 1
        },
        "runs": [
          {
            "class": "visuality/particle/SparkleParticle",
            "method": "getLightCoords",
            "desc": "(F)I",
            "value": "15728880"
          },
          {
            "class": "visuality/util/ColorsUtils",
            "method": "add",
            "desc": "(I)I",
            "value": "0"
          }
        ],
        "insns": 322
      },
      "verdict": "no",
      "summary": "none of its 5 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "vmp",
      "name": "Very Many Players",
      "version": "0.2.0+beta.7.238+26.3",
      "license": "MIT",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "main",
          "value": "com/ishland/vmp/VMPMod"
        }
      ],
      "mixin_configs": [
        "vmp.mixins.json"
      ],
      "depends": [],
      "classes": 85,
      "methods": 354,
      "sites": [
        {
          "mixin": "com/ishland/vmp/mixins/chunk/loading/commands/MixinCommandFunctionManager",
          "targets": [
            "net/minecraft/server/ServerFunctionManager"
          ],
          "handler": "onGetScheduledCommandSource",
          "kind": "inject",
          "method": "getGameLoopSender",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ServerFunctionManager#getGameLoopSender RETURN"
        },
        {
          "mixin": "com/ishland/vmp/mixins/chunk/loading/commands/MixinSpreadPlayersCommand",
          "targets": [
            "net/minecraft/server/commands/SpreadPlayersCommand"
          ],
          "handler": "execute",
          "kind": "inject",
          "method": "spreadPlayers",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/commands/SpreadPlayersCommand#spreadPlayers HEAD"
        },
        {
          "mixin": "com/ishland/vmp/mixins/entity/move_zero_velocity/MixinEntity",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onMove",
          "kind": "inject",
          "method": "move",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#move HEAD"
        },
        {
          "mixin": "com/ishland/vmp/mixins/entity/move_zero_velocity/MixinEntity",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "onBoundingBoxChanged",
          "kind": "inject",
          "method": "setBoundingBox",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#setBoundingBox HEAD"
        },
        {
          "mixin": "com/ishland/vmp/mixins/entitytracker/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap#<init> RETURN"
        },
        {
          "mixin": "com/ishland/vmp/mixins/entitytracker/MixinThreadedAnvilChunkStorageEntityTracker",
          "targets": [
            "net/minecraft/server/level/ChunkMap$TrackedEntity"
          ],
          "handler": "redirectGetMaxTrackDistance",
          "kind": "redirect",
          "method": "updatePlayer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkMap$TrackedEntity;getEffectiveRange()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/biome_access/fast_chunk_access/MixinWorldView",
          "targets": [
            "net/minecraft/world/level/LevelReader"
          ],
          "handler": "redirectBiomeChunk",
          "kind": "redirect",
          "method": "getNoiseBiome",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/LevelReader;getChunk(IILnet/minecraft/world/level/chunk/status/ChunkStatus;Z)Lnet/minecraft/world/level/chunk/ChunkAccess;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/collections/MixinTypeFilterableList",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "redirectSetElementsByType",
          "kind": "redirect",
          "method": "<init>",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/util/ClassInstanceMultiMap;byClass:Ljava/util/Map;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/collections/MixinTypeFilterableList",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "redirectSetAllElements",
          "kind": "redirect",
          "method": "<init>",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/util/ClassInstanceMultiMap;allInstances:Ljava/util/List;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/collections/MixinTypeFilterableList",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "redirectNewHashMap",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/Maps;newHashMap()Ljava/util/HashMap;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/collections/MixinTypeFilterableList",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "redirectNewArrayList",
          "kind": "redirect",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lcom/google/common/collect/Lists;newArrayList()Ljava/util/ArrayList;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/collections/MixinTypeFilterableList",
          "targets": [
            "net/minecraft/util/ClassInstanceMultiMap"
          ],
          "handler": "find",
          "kind": "overwrite",
          "method": "find",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/no_locking/MixinPalettedContainer",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "acquire",
          "kind": "overwrite",
          "method": "acquire",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/no_locking/MixinPalettedContainer",
          "targets": [
            "net/minecraft/world/level/chunk/PalettedContainer"
          ],
          "handler": "release",
          "kind": "overwrite",
          "method": "release",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/spawn_density_cap/MixinSpawnDensityCapperDensityCap",
          "targets": [
            "net/minecraft/world/level/LocalMobCapCalculator$MobCounts"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/LocalMobCapCalculator$MobCounts#<init> RETURN"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/spawn_density_cap/MixinSpawnDensityCapperDensityCap",
          "targets": [
            "net/minecraft/world/level/LocalMobCapCalculator$MobCounts"
          ],
          "handler": "add",
          "kind": "overwrite",
          "method": "add",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/general/spawn_density_cap/MixinSpawnDensityCapperDensityCap",
          "targets": [
            "net/minecraft/world/level/LocalMobCapCalculator$MobCounts"
          ],
          "handler": "canSpawn",
          "kind": "overwrite",
          "method": "canSpawn",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/networking/avoid_deadlocks/MixinClientConnection",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "noDisconnectWait",
          "kind": "redirect",
          "method": "disconnect",
          "at": "INVOKE",
          "at_target": "Lio/netty/channel/ChannelFuture;awaitUninterruptibly()Lio/netty/channel/ChannelFuture;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/networking/avoid_deadlocks/MixinClientConnection",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "redirectIsOpen",
          "kind": "redirect",
          "method": "*",
          "at": "INVOKE",
          "at_target": "Lio/netty/channel/Channel;isOpen()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/networking/config_enforce_main/MixinServerConfigurationNetworkHandler",
          "targets": [
            "net/minecraft/server/network/ServerConfigurationPacketListenerImpl"
          ],
          "handler": "onResourcePackStatus",
          "kind": "inject",
          "method": "handleResourcePackResponse",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerConfigurationPacketListenerImpl#handleResourcePackResponse HEAD"
        },
        {
          "mixin": "com/ishland/vmp/mixins/networking/config_enforce_main/MixinServerConfigurationNetworkHandler",
          "targets": [
            "net/minecraft/server/network/ServerConfigurationPacketListenerImpl"
          ],
          "handler": "onAcceptCodeOfConduct",
          "kind": "inject",
          "method": "handleAcceptCodeOfConduct",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/network/ServerConfigurationPacketListenerImpl#handleAcceptCodeOfConduct HEAD"
        },
        {
          "mixin": "com/ishland/vmp/mixins/networking/no_flush/MixinClientConnection",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "dontFlush",
          "kind": "redirect",
          "method": "tick",
          "at": "INVOKE",
          "at_target": "Lio/netty/channel/Channel;flush()Lio/netty/channel/Channel;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/networking/no_flush/MixinClientConnection",
          "targets": [
            "net/minecraft/network/Connection"
          ],
          "handler": "avoidImmediateExecute",
          "kind": "wrap-operation",
          "method": "sendPacket",
          "at": "INVOKE",
          "at_target": "Lio/netty/channel/EventLoop;execute(Ljava/lang/Runnable;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinChunkFilter",
          "targets": [
            "net/minecraft/server/level/ChunkTrackingView"
          ],
          "handler": "isWithinDistance",
          "kind": "overwrite",
          "method": "isWithinDistance",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinServerPlayerEntity",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "onClientSettingsChanged",
          "kind": "inject",
          "method": "updateOptions",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerPlayer#updateOptions HEAD"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinServerPlayerEntity",
          "targets": [
            "net/minecraft/server/level/ServerPlayer"
          ],
          "handler": "onPlayerCopy",
          "kind": "inject",
          "method": "restoreFrom",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ServerPlayer#restoreFrom RETURN"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinTACSCancelSending",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "redirectWatchPacketsOnChangingVD",
          "kind": "redirect",
          "method": "setServerViewDistance",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/PlayerMap;getAllPlayers()Ljava/util/Set;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinTACSCancelSending",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "redirectChunkFilterSet",
          "kind": "redirect",
          "method": "updatePlayerStatus",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ServerPlayer;setChunkTrackingView(Lnet/minecraft/server/level/ChunkTrackingView;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinTACSCancelSending",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "updateChunkTracking",
          "kind": "overwrite",
          "method": "updateChunkTracking",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinTACSCancelSending",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "applyChunkTrackingView",
          "kind": "overwrite",
          "method": "applyChunkTrackingView",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "redirectNewPlayerChunkWatchingManager",
          "kind": "inject",
          "method": "<init>",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkMap;setServerViewDistance(I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap#<init> INVOKE"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap#tick RETURN"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "onSetViewDistance",
          "kind": "inject",
          "method": "setServerViewDistance",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap#setServerViewDistance RETURN"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "getPlayers",
          "kind": "overwrite",
          "method": "getPlayers",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "getPlayersCloseForSpawning",
          "kind": "overwrite",
          "method": "getPlayersCloseForSpawning",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "anyPlayerCloseEnoughForSpawning",
          "kind": "overwrite",
          "method": "anyPlayerCloseEnoughForSpawning",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "onHandlePlayerAddedOrRemoved",
          "kind": "inject",
          "method": "updatePlayerStatus",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap#updatePlayerStatus HEAD"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "onPlayerSectionChange",
          "kind": "inject",
          "method": "move",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkMap;updatePlayerPos(Lnet/minecraft/server/level/ServerPlayer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap#move INVOKE"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_entity_tracking_lookups/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "redirectUpdateOnAddEntity",
          "kind": "redirect",
          "method": "addEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkMap$TrackedEntity;updatePlayers(Ljava/util/List;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_entity_tracking_lookups/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "nullifyTrackerListOnAddEntity",
          "kind": "redirect",
          "method": "addEntity",
          "at": "INVOKE",
          "at_target": "Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;values()Lit/unimi/dsi/fastutil/objects/ObjectCollection;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_entity_tracking_lookups/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "nullifyTrackerListOnRemoveEntity",
          "kind": "redirect",
          "method": "removeEntity",
          "at": "INVOKE",
          "at_target": "Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;values()Lit/unimi/dsi/fastutil/objects/ObjectCollection;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_entity_tracking_lookups/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "redirectUpdateOnRemoveEntity",
          "kind": "redirect",
          "method": "removeEntity",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkMap$TrackedEntity;broadcastRemoved()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_entity_tracking_lookups/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "redirectTrackersOnUpdatePosition",
          "kind": "redirect",
          "method": "move",
          "at": "INVOKE",
          "at_target": "Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;values()Lit/unimi/dsi/fastutil/objects/ObjectCollection;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_entity_tracking_lookups/MixinThreadedAnvilChunkStorage",
          "targets": [
            "net/minecraft/server/level/ChunkMap"
          ],
          "handler": "tick",
          "kind": "overwrite",
          "method": "tick",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_entity_tracking_lookups/MixinThreadedAnvilChunkStorageEntityTracker",
          "targets": [
            "net/minecraft/server/level/ChunkMap$TrackedEntity"
          ],
          "handler": "beforeStartTracking",
          "kind": "inject",
          "method": "updatePlayer",
          "at": "INVOKE",
          "at_target": "Ljava/util/Set;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/ChunkMap$TrackedEntity#updatePlayer INVOKE"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_entity_tracking_lookups/MixinThreadedAnvilChunkStorageEntityTracker",
          "targets": [
            "net/minecraft/server/level/ChunkMap$TrackedEntity"
          ],
          "handler": "assumeAlwaysTracked",
          "kind": "redirect",
          "method": "updatePlayer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/ChunkMap;isChunkTracked(Lnet/minecraft/server/level/ServerPlayer;II)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_player_lookups/MixinMobEntity",
          "targets": [
            "net/minecraft/world/entity/Mob"
          ],
          "handler": "redirectGetClosestPlayer",
          "kind": "redirect",
          "method": "checkDespawn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/Level;getNearestPlayer(Lnet/minecraft/world/entity/Entity;D)Lnet/minecraft/world/entity/player/Player;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_player_lookups/MixinSpawnDensityCapper",
          "targets": [
            "net/minecraft/world/level/LocalMobCapCalculator"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/LocalMobCapCalculator#<init> RETURN"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_player_lookups/MixinSpawnDensityCapper",
          "targets": [
            "net/minecraft/world/level/LocalMobCapCalculator"
          ],
          "handler": "addMob",
          "kind": "overwrite",
          "method": "addMob",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_player_lookups/MixinSpawnDensityCapper",
          "targets": [
            "net/minecraft/world/level/LocalMobCapCalculator"
          ],
          "handler": "canSpawn",
          "kind": "overwrite",
          "method": "canSpawn",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "com/ishland/vmp/mixins/ticketsystem/ticketpropagator/MixinChunkLevelManager",
          "targets": [
            "net/minecraft/server/level/DistanceManager"
          ],
          "handler": "onInit",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/level/DistanceManager#<init> RETURN"
        },
        {
          "mixin": "com/ishland/vmp/mixins/ticketsystem/ticketpropagator/MixinChunkLevelManager",
          "targets": [
            "net/minecraft/server/level/DistanceManager"
          ],
          "handler": "tickTickets",
          "kind": "redirect",
          "method": "runAllUpdates",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/server/level/LoadingChunkTracker;runDistanceUpdates(I)I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        }
      ],
      "listening": 15,
      "accessors": 36,
      "hooks": {},
      "wanted": {
        "net/minecraft/server/ServerFunctionManager#getGameLoopSender @RETURN": 1,
        "net/minecraft/server/commands/SpreadPlayersCommand#spreadPlayers @HEAD": 1,
        "net/minecraft/server/level/ChunkMap#<init> @RETURN": 1,
        "net/minecraft/server/level/ChunkMap#setServerViewDistance @RETURN": 1,
        "net/minecraft/server/level/ChunkMap#tick @RETURN": 1,
        "net/minecraft/server/level/ChunkMap#updatePlayerStatus @HEAD": 1,
        "net/minecraft/server/level/DistanceManager#<init> @RETURN": 1,
        "net/minecraft/server/level/ServerPlayer#restoreFrom @RETURN": 1,
        "net/minecraft/server/level/ServerPlayer#updateOptions @HEAD": 1,
        "net/minecraft/server/network/ServerConfigurationPacketListenerImpl#handleAcceptCodeOfConduct @HEAD": 1,
        "net/minecraft/server/network/ServerConfigurationPacketListenerImpl#handleResourcePackResponse @HEAD": 1,
        "net/minecraft/world/entity/Entity#move @HEAD": 1,
        "net/minecraft/world/entity/Entity#setBoundingBox @HEAD": 1,
        "net/minecraft/world/level/LocalMobCapCalculator#<init> @RETURN": 1,
        "net/minecraft/world/level/LocalMobCapCalculator$MobCounts#<init> @RETURN": 1
      },
      "wanted_calls": {
        "com/google/common/collect/Lists#newArrayList @INVOKE (redirect)": 1,
        "com/google/common/collect/Maps#newHashMap @INVOKE (redirect)": 1,
        "io/netty/channel/Channel#flush @INVOKE (redirect)": 1,
        "io/netty/channel/Channel#isOpen @INVOKE (redirect)": 1,
        "io/netty/channel/ChannelFuture#awaitUninterruptibly @INVOKE (redirect)": 1,
        "io/netty/channel/EventLoop#execute @INVOKE (wrap-operation)": 1,
        "it/unimi/dsi/fastutil/ints/Int2ObjectMap#values @INVOKE (redirect)": 3,
        "net/minecraft/server/level/ChunkMap#<init> @INVOKE": 1,
        "net/minecraft/server/level/ChunkMap#anyPlayerCloseEnoughForSpawning @OVERWRITE": 1,
        "net/minecraft/server/level/ChunkMap#applyChunkTrackingView @OVERWRITE": 1,
        "net/minecraft/server/level/ChunkMap#getPlayers @OVERWRITE": 1,
        "net/minecraft/server/level/ChunkMap#getPlayersCloseForSpawning @OVERWRITE": 1,
        "net/minecraft/server/level/ChunkMap#isChunkTracked @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ChunkMap#move @INVOKE": 1,
        "net/minecraft/server/level/ChunkMap#tick @OVERWRITE": 1,
        "net/minecraft/server/level/ChunkMap#updateChunkTracking @OVERWRITE": 1,
        "net/minecraft/server/level/ChunkMap$TrackedEntity#broadcastRemoved @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ChunkMap$TrackedEntity#getEffectiveRange @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ChunkMap$TrackedEntity#updatePlayer @INVOKE": 1,
        "net/minecraft/server/level/ChunkMap$TrackedEntity#updatePlayers @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ChunkTrackingView#isWithinDistance @OVERWRITE": 1,
        "net/minecraft/server/level/LoadingChunkTracker#runDistanceUpdates @INVOKE (redirect)": 1,
        "net/minecraft/server/level/PlayerMap#getAllPlayers @INVOKE (redirect)": 1,
        "net/minecraft/server/level/ServerPlayer#setChunkTrackingView @INVOKE (redirect)": 1,
        "net/minecraft/util/ClassInstanceMultiMap#allInstances:Ljava/util/List; @FIELD (redirect)": 1,
        "net/minecraft/util/ClassInstanceMultiMap#byClass:Ljava/util/Map; @FIELD (redirect)": 1,
        "net/minecraft/util/ClassInstanceMultiMap#find @OVERWRITE": 1,
        "net/minecraft/world/level/Level#getNearestPlayer @INVOKE (redirect)": 1,
        "net/minecraft/world/level/LevelReader#getChunk @INVOKE (redirect)": 1,
        "net/minecraft/world/level/LocalMobCapCalculator#addMob @OVERWRITE": 1,
        "net/minecraft/world/level/LocalMobCapCalculator#canSpawn @OVERWRITE": 1,
        "net/minecraft/world/level/LocalMobCapCalculator$MobCounts#add @OVERWRITE": 1,
        "net/minecraft/world/level/LocalMobCapCalculator$MobCounts#canSpawn @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#acquire @OVERWRITE": 1,
        "net/minecraft/world/level/chunk/PalettedContainer#release @OVERWRITE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvArray",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue$CvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 85,
        "features": {
          "command": 1,
          "mixin": 43
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 85,
        "methods": 198,
        "tried": 198,
        "completed": 55,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/ishland/vmp/mixins/carpet/MixinEntityPlayerMPFake#position()Lnet/minecraft/world/phys/Vec3;": 1,
          "com/ishland/vmp/mixins/playerwatching/optimize_nearby_player_lookups/MixinMobEntity#getType()Lnet/minecraft/world/entity/EntityType;": 1,
          "io/papermc/paper/util/misc/Delayed8WayDistancePropagator2D$LevelMap#get(J)B": 2,
          "it/unimi/dsi/fastutil/ints/Int2ObjectMaps#emptyMap()Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;": 3,
          "it/unimi/dsi/fastutil/longs/Long2ByteOpenHashMap#remove(J)B": 2,
          "it/unimi/dsi/fastutil/longs/Long2IntLinkedOpenHashMap#<init>()V": 1,
          "it/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap#computeIfAbsent(JLit/unimi/dsi/fastutil/longs/Long2ObjectFunction;)Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap#get(J)Ljava/lang/Object;": 3,
          "it/unimi/dsi/fastutil/longs/LongLinkedOpenHashSet#isEmpty()Z": 1,
          "it/unimi/dsi/fastutil/objects/AbstractObject2IntMap#<init>()V": 2,
          "it/unimi/dsi/fastutil/objects/AbstractObjectIterator#<init>()V": 2,
          "it/unimi/dsi/fastutil/objects/AbstractObjectSet#<init>()V": 1,
          "it/unimi/dsi/fastutil/objects/Object2LongOpenHashMap#object2LongEntrySet()Lit/unimi/dsi/fastutil/objects/Object2LongMap$FastEntrySet;": 2,
          "it/unimi/dsi/fastutil/objects/ObjectArrayList#elements()[Ljava/lang/Object;": 1,
          "it/unimi/dsi/fastutil/objects/ObjectLinkedOpenHashSet#iterator()Lit/unimi/dsi/fastutil/objects/ObjectListIterator;": 1,
          "it/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap#containsKey(Ljava/lang/Object;)Z": 2,
          "it/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap#put(Ljava/lang/Object;I)I": 1,
          "it/unimi/dsi/fastutil/objects/Reference2LongOpenHashMap#size()I": 1,
          "java/lang/Class#forName(Ljava/lang/String;)Ljava/lang/Class;": 1,
          "java/lang/Class#isAssignableFrom(Ljava/lang/Class;)Z": 1,
          "java/lang/Integer#numberOfLeadingZeros(I)I": 4,
          "java/lang/Integer#numberOfTrailingZeros(I)I": 1,
          "java/lang/Long#numberOfLeadingZeros(J)I": 6,
          "java/lang/Long#numberOfTrailingZeros(J)I": 1,
          "java/lang/System#identityHashCode(Ljava/lang/Object;)I": 1,
          "java/util/Collections#emptySet()Ljava/util/Set;": 1,
          "java/util/List#of()Ljava/util/List;": 1,
          "java/util/Properties#getProperty(Ljava/lang/String;)Ljava/lang/String;": 3,
          "java/util/concurrent/atomic/AtomicLong#incrementAndGet()J": 3,
          "java/util/function/Function#apply(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/minecraft/core/SectionPos#blockToSectionCoord(I)I": 1,
          "net/minecraft/core/SectionPos#of(Lnet/minecraft/world/level/entity/EntityAccess;)Lnet/minecraft/core/SectionPos;": 1,
          "net/minecraft/server/level/ChunkLevel#MAX_LEVEL": 2,
          "net/minecraft/server/level/ChunkLevel#byStatus(Lnet/minecraft/world/level/chunk/status/ChunkStatus;)I": 1,
          "net/minecraft/server/level/ChunkMap$TrackedEntity#updatePlayer(Lnet/minecraft/server/level/ServerPlayer;)V": 1,
          "net/minecraft/server/level/ClientInformation#viewDistance()I": 1,
          "net/minecraft/server/level/ServerLevel#getChunkSource()Lnet/minecraft/server/level/ServerChunkCache;": 3,
          "net/minecraft/server/level/ServerLevel#getServer()Lnet/minecraft/server/MinecraftServer;": 1,
          "net/minecraft/world/entity/Entity#level()Lnet/minecraft/world/level/Level;": 1,
          "net/minecraft/world/entity/Entity#position()Lnet/minecraft/world/phys/Vec3;": 3,
          "net/minecraft/world/entity/MobCategory#ordinal()I": 3,
          "net/minecraft/world/level/ChunkPos#getMiddleBlockX()I": 2,
          "net/minecraft/world/level/ChunkPos#getX(J)I": 2,
          "net/minecraft/world/level/ChunkPos#pack()J": 3,
          "net/minecraft/world/level/ChunkPos#z()I": 1,
          "net/minecraft/world/phys/AABB#equals(Ljava/lang/Object;)Z": 1,
          "new it/unimi/dsi/fastutil/ints/Int2ObjectLinkedOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/AbstractObject2IntMap$BasicEntry": 2,
          "new it/unimi/dsi/fastutil/objects/Object2ObjectLinkedOpenHashMap": 1,
          "new it/unimi/dsi/fastutil/objects/ObjectArrayList": 1,
          "new it/unimi/dsi/fastutil/objects/Reference2ReferenceOpenHashMap": 1,
          "new net/minecraft/world/phys/Vec3": 1,
          "org/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable#getReturnValue()Ljava/lang/Object;": 1
        },
        "runs": [
          {
            "class": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_entity_tracking_lookups/MixinThreadedAnvilChunkStorageEntityTracker",
            "method": "assumeAlwaysTracked",
            "desc": "(Lnet/minecraft/server/level/ChunkMap;Lnet/minecraft/server/level/ServerPlayer;II)Z",
            "value": "1"
          },
          {
            "class": "com/ishland/vmp/mixins/playerwatching/MixinServerPlayerEntity",
            "method": "isClientViewDistanceChanged",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/ishland/vmp/mixins/playerwatching/MixinServerPlayerEntity",
            "method": "getClientViewDistance",
            "desc": "()I",
            "value": "2"
          },
          {
            "class": "com/ishland/vmp/common/maps/AreaMap",
            "method": "chebyshevDistance",
            "desc": "(IIII)I",
            "value": "0"
          },
          {
            "class": "com/ishland/vmp/common/playerwatching/NearbyEntityTracking$StagedTracker",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/ishland/vmp/common/playerwatching/NearbyEntityTracking$StagedTracker",
            "method": "tickAdded",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/ishland/vmp/common/util/SimpleObjectPool",
            "method": "getAllocatedCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "isPowerOfTwo",
            "desc": "(I)Z",
            "value": "1"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "isPowerOfTwo",
            "desc": "(J)Z",
            "value": "1"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "getTrailingBit",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "getTrailingBit",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "getDivisorMultiple",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "getDivisorShift",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "branchlessAbs",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "branchlessAbs",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "hash0",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "hash1",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "hash2",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "hash3",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "hash1",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "hash2",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/IntegerUtil",
            "method": "hash3",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/MCUtil",
            "method": "getCoordinateKey",
            "desc": "(II)J",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/MCUtil",
            "method": "getCoordinateX",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "io/papermc/paper/util/MCUtil",
            "method": "getCoordinateZ",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "com/ishland/vmp/mixins/VMPMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "com/ishland/vmp/mixins/playerwatching/optimize_nearby_player_lookups/MixinSpawnDensityCapper",
            "method": "sqrDistance",
            "desc": "(DDDD)D",
            "value": "0"
          },
          {
            "class": "com/ishland/vmp/mixins/networking/avoid_deadlocks/MixinClientConnection",
            "method": "redirectIsOpen",
            "desc": "(Lio/netty/channel/Channel;)Z",
            "value": "0"
          }
        ],
        "insns": 2182
      },
      "verdict": "no",
      "summary": "none of its 52 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "waveycapes",
      "name": "WaveyCapes",
      "version": "1.11.3",
      "license": "tr7zw Protective License",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/tr7zw/waveycapes/WaveyCapesMod"
        },
        {
          "kind": "modmenu",
          "value": "dev/tr7zw/waveycapes/WaveyCapesModMenu"
        }
      ],
      "mixin_configs": [
        "waveycapes.mixins.json"
      ],
      "depends": [],
      "classes": 47,
      "methods": 371,
      "sites": [
        {
          "mixin": "dev/tr7zw/waveycapes/mixin/LivingEntityRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/LivingEntityRenderer"
          ],
          "handler": "addLayer",
          "kind": "inject",
          "method": "addLayer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/LivingEntityRenderer#addLayer HEAD"
        },
        {
          "mixin": "dev/tr7zw/waveycapes/mixin/PlayerMixin",
          "targets": [
            "net/minecraft/world/entity/LivingEntity"
          ],
          "handler": "moveCloakUpdate",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/LivingEntity#tick TAIL"
        },
        {
          "mixin": "dev/tr7zw/waveycapes/mixin/PlayerRendererMixin",
          "targets": [
            "net/minecraft/client/renderer/entity/player/AvatarRenderer"
          ],
          "handler": "onCreate",
          "kind": "inject",
          "method": "<init>*",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/entity/player/AvatarRenderer#<init>* RETURN"
        }
      ],
      "listening": 3,
      "accessors": 0,
      "hooks": {},
      "wanted": {
        "net/minecraft/client/renderer/entity/LivingEntityRenderer#addLayer @HEAD": 1,
        "net/minecraft/client/renderer/entity/player/AvatarRenderer#<init>* @RETURN": 1,
        "net/minecraft/world/entity/LivingEntity#tick @TAIL": 1
      },
      "wanted_calls": {},
      "api": [
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 47,
        "features": {
          "renderer": 1,
          "mixin": 3
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 47,
        "methods": 243,
        "tried": 243,
        "completed": 141,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "[Ldev/tr7zw/waveycapes/versionless/CapeMovement;#clone()Ljava/lang/Object;": 1,
          "[Ldev/tr7zw/waveycapes/versionless/CapeStyle;#clone()Ljava/lang/Object;": 1,
          "[Ldev/tr7zw/waveycapes/versionless/WindMode;#clone()Ljava/lang/Object;": 1,
          "com/unascribed/ears/api/EarsFeatureType#CAPE": 1,
          "dev/tr7zw/transition/mc/entitywrapper/PlayerWrapper#getAvatar()Lnet/minecraft/world/entity/Avatar;": 6,
          "dev/tr7zw/transition/mc/entitywrapper/PlayerWrapper#getCapeTexture()Lnet/minecraft/resources/Identifier;": 2,
          "dev/tr7zw/transition/mc/entitywrapper/PlayerWrapper#getEntity()Lnet/minecraft/world/entity/player/Player;": 1,
          "dev/tr7zw/waveycapes/WaveyCapesBase#config": 2,
          "dev/tr7zw/waveycapes/mixin/PlayerMixin#getUUID()Ljava/util/UUID;": 1,
          "java/io/File#exists()Z": 2,
          "java/lang/Class#forName(Ljava/lang/String;)Ljava/lang/Class;": 1,
          "java/lang/Double#doubleToRawLongBits(D)J": 1,
          "java/lang/Double#isNaN(D)Z": 1,
          "java/lang/Float#floatToIntBits(F)I": 4,
          "java/lang/StrictMath#log(D)D": 1,
          "java/util/Collections#emptyList()Ljava/util/List;": 1,
          "java/util/List#of()Ljava/util/List;": 1,
          "net/labymod/api/Laby#references()Lnet/labymod/api/generated/ReferenceStorage;": 1,
          "net/labymod/api/user/shop/cloak/RenderedCloak#textureWidth()I": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 2,
          "net/minecraft/client/renderer/entity/layers/RenderLayer#<init>(Lnet/minecraft/client/renderer/entity/RenderLayerParent;)V": 1,
          "net/minecraft/world/entity/Avatar#getX()D": 1,
          "net/minecraft/world/entity/Avatar#getXRot()F": 1,
          "net/minecraft/world/entity/Avatar#getY()D": 1,
          "net/minecraft/world/entity/Avatar#getYRot()F": 1,
          "net/minecraft/world/entity/Avatar#getZ()D": 1,
          "net/minecraft/world/entity/Avatar#isCrouching()Z": 1,
          "net/minecraft/world/entity/Avatar#isUnderWater()Z": 1,
          "net/minecraft/world/entity/Avatar#isVisuallySwimming()Z": 1,
          "net/minecraftcapes/config/MinecraftCapesConfig#isCapeVisible()Z": 1,
          "new net/minecraft/client/model/geom/builders/MeshDefinition": 1
        },
        "runs": [
          {
            "class": "dev/tr7zw/waveycapes/WaveyCapesBase",
            "method": "getINSTANCE",
            "desc": "()Ldev/tr7zw/waveycapes/WaveyCapesBase;",
            "value": "obj#0"
          },
          {
            "class": "dev/tr7zw/waveycapes/render/CapeRenderer",
            "method": "vanillaUvValues",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/waveycapes/render/CapeRenderer",
            "method": "singleSidedTexture",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/render/CapeRenderer",
            "method": "uvSheetWidth",
            "desc": "()I",
            "value": "64"
          },
          {
            "class": "dev/tr7zw/waveycapes/render/CapeRenderer",
            "method": "uvSheetHeight",
            "desc": "()I",
            "value": "32"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/ModSupport",
            "method": "shouldBeUsed",
            "desc": "(Lnet/minecraft/client/player/AbstractClientPlayer;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/ModSupport",
            "method": "priority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "clone",
            "desc": "()Ldev/tr7zw/waveycapes/versionless/util/Vector3;",
            "value": "obj#58"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "add",
            "desc": "(FFF)Ldev/tr7zw/waveycapes/versionless/util/Vector3;",
            "value": "obj#61"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "div",
            "desc": "(F)Ldev/tr7zw/waveycapes/versionless/util/Vector3;",
            "value": "obj#63"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "mul",
            "desc": "(F)Ldev/tr7zw/waveycapes/versionless/util/Vector3;",
            "value": "obj#64"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "normalize",
            "desc": "()Ldev/tr7zw/waveycapes/versionless/util/Vector3;",
            "value": "obj#66"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "rotateDegrees",
            "desc": "(F)Ldev/tr7zw/waveycapes/versionless/util/Vector3;",
            "value": "obj#68"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "sqrMagnitude",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "canEqual",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector3",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#75"
          },
          {
            "class": "dev/tr7zw/waveycapes/render/VanillaCapeRenderer",
            "method": "vanillaUvValues",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/waveycapes/mixin/PlayerMixin",
            "method": "canUpdateGravityVector",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/render/CustomCapeRenderer",
            "method": "getAngle",
            "desc": "(FF)D",
            "value": "180"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector4",
            "method": "clone",
            "desc": "()Ldev/tr7zw/waveycapes/versionless/util/Vector4;",
            "value": "obj#133"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector4",
            "method": "toVec3",
            "desc": "()Ldev/tr7zw/waveycapes/versionless/util/Vector3;",
            "value": "obj#135"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector4",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector4",
            "method": "canEqual",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Vector4",
            "method": "clone",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#141"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/sim/CapeSimulation",
            "method": "getGravity",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/sim/CapeSimulation",
            "method": "isSneaking",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/laby/LabySupport$LabyModCloakRenderer",
            "method": "uvSheetWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/laby/LabySupport$LabyModCloakRenderer",
            "method": "uvSheetHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/render/CapeInfos",
            "method": "isGlint",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/MinecraftCapesSupport",
            "method": "getRenderer",
            "desc": "()Ldev/tr7zw/waveycapes/render/CapeRenderer;",
            "value": "obj#183"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/MinecraftCapesSupport",
            "method": "blockFeatureRenderer",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/sim/StickSimulation3d",
            "method": "init",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/EarsSupport",
            "method": "blockFeatureRenderer",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/laby/LabySupport",
            "method": "rendersCloakOf",
            "desc": "(Lnet/labymod/api/client/entity/player/Player;)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/laby/LabySupport",
            "method": "getRenderer",
            "desc": "()Ldev/tr7zw/waveycapes/render/CapeRenderer;",
            "value": "obj#210"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/laby/LabySupport",
            "method": "blockFeatureRenderer",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/support/EarsSupport$EarsRenderer",
            "method": "vanillaUvValues",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "truncate",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "sqrt",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "floor",
            "desc": "(F)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "fastFloor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "floor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "lfloor",
            "desc": "(D)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "absFloor",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "abs",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "abs",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "ceil",
            "desc": "(F)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "ceil",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "clamp",
            "desc": "(BBB)B",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "clamp",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "clamp",
            "desc": "(JJJ)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "clamp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "clamp",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "clampedLerp",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "clampedLerp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "absMax",
            "desc": "(DD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "equal",
            "desc": "(FF)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "equal",
            "desc": "(DD)Z",
            "value": "1"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "positiveModulo",
            "desc": "(FF)F",
            "value": "NaNf"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "positiveModulo",
            "desc": "(DD)D",
            "value": "NaN"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "wrapDegrees",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "wrapDegrees",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "wrapDegrees",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "degreesDifference",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "degreesDifferenceAbs",
            "desc": "(FF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "rotateIfNecessary",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "approach",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "approachDegrees",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "getDouble",
            "desc": "(Ljava/lang/String;D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "getDouble",
            "desc": "(Ljava/lang/String;DD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "smallestEncompassingPowerOfTwo",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "isPowerOfTwo",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "ceillog2",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "log2",
            "desc": "(I)I",
            "value": "-1"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "color",
            "desc": "(FFF)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "color",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "colorMultiply",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "colorMultiply",
            "desc": "(IFFF)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "frac",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "frac",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "getSeed",
            "desc": "(III)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "inverseLerp",
            "desc": "(DDD)D",
            "value": "NaN"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "inverseLerp",
            "desc": "(FFF)F",
            "value": "NaNf"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "hsvToRgb",
            "desc": "(FFF)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "murmurHash3Mixer",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "murmurHash3Mixer",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "binarySearch",
            "desc": "(IILjava/util/function/IntPredicate;)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "lerp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "lerp",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "smoothstep",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "smoothstepDerivative",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "sign",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "rotLerp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "diffuseLight",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "rotlerp",
            "desc": "(FFF)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "rotWrap",
            "desc": "(D)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "triangleWave",
            "desc": "(FF)F",
            "value": "NaNf"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "square",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "square",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "square",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "square",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "cube",
            "desc": "(F)F",
            "value": "0f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "lengthSquared",
            "desc": "(DD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "length",
            "desc": "(DD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "lengthSquared",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "length",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "quantize",
            "desc": "(DI)I",
            "value": "0"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "cos",
            "desc": "(F)F",
            "value": "1f"
          },
          {
            "class": "dev/tr7zw/waveycapes/versionless/util/Mth",
            "method": "sin",
            "desc": "(F)F",
            "value": "0f"
          }
        ],
        "insns": 3443
      },
      "verdict": "no",
      "summary": "none of its 3 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "waystones",
      "name": "Waystones",
      "version": "26.3.0.2",
      "license": "All Rights Reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "net/blay09/mods/waystones/fabric/client/FabricWaystonesClient"
        },
        {
          "kind": "fabric-datagen",
          "value": "net/blay09/mods/waystones/datagen/ModDataGenerator"
        },
        {
          "kind": "journeymap",
          "value": "net/blay09/mods/waystones/compat/JourneyMapIntegration"
        },
        {
          "kind": "main",
          "value": "net/blay09/mods/waystones/fabric/FabricWaystones"
        }
      ],
      "mixin_configs": [
        "waystones.mixins.json",
        "waystones.fabric.mixins.json"
      ],
      "depends": [
        "balm",
        "shogi"
      ],
      "classes": 399,
      "methods": 2423,
      "sites": [
        {
          "mixin": "net/blay09/mods/waystones/mixin/DimensionStorageFileFixMixin",
          "targets": [
            "net/minecraft/util/filefix/fixes/DimensionStorageFileFix"
          ],
          "handler": "makeFixer",
          "kind": "inject",
          "method": "makeFixer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/util/filefix/fixes/DimensionStorageFileFix#makeFixer RETURN"
        },
        {
          "mixin": "net/blay09/mods/waystones/mixin/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "waystones$saveWarpPlateState",
          "kind": "inject",
          "method": "saveWithoutId",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#saveWithoutId HEAD"
        },
        {
          "mixin": "net/blay09/mods/waystones/mixin/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "waystones$loadWarpPlateState",
          "kind": "inject",
          "method": "load",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/entity/Entity#load HEAD"
        },
        {
          "mixin": "net/blay09/mods/waystones/mixin/EntityMixin",
          "targets": [
            "net/minecraft/world/entity/Entity"
          ],
          "handler": "waystones$tickWarpPlateState",
          "kind": "inject",
          "method": "tick",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "entity_tick_post",
          "why": "EntityTickEvent.Post"
        },
        {
          "mixin": "net/blay09/mods/waystones/mixin/JigsawPlacementPlacerMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/pools/JigsawPlacement$Placer"
          ],
          "handler": "forceWaystonePool",
          "kind": "modify-arg",
          "method": "tryPlacingChildren",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/core/Registry;get(Lnet/minecraft/resources/ResourceKey;)Ljava/util/Optional;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "net/blay09/mods/waystones/mixin/ServerScoreboardMixin",
          "targets": [
            "net/minecraft/server/ServerScoreboard"
          ],
          "handler": "addPlayerToTeam",
          "kind": "inject",
          "method": "addPlayerToTeam",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ServerScoreboard#addPlayerToTeam RETURN"
        },
        {
          "mixin": "net/blay09/mods/waystones/mixin/ServerScoreboardMixin",
          "targets": [
            "net/minecraft/server/ServerScoreboard"
          ],
          "handler": "removePlayerFromTeam",
          "kind": "inject",
          "method": "removePlayerFromTeam",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/ServerScoreboard#removePlayerFromTeam RETURN"
        },
        {
          "mixin": "net/blay09/mods/waystones/mixin/SinglePoolElementMixin",
          "targets": [
            "net/minecraft/world/level/levelgen/structure/pools/SinglePoolElement"
          ],
          "handler": "place",
          "kind": "inject",
          "method": "place",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/levelgen/structure/pools/SinglePoolElement#place HEAD"
        }
      ],
      "listening": 7,
      "accessors": 5,
      "hooks": {
        "entity_tick_post": 1
      },
      "wanted": {
        "net/minecraft/server/ServerScoreboard#addPlayerToTeam @RETURN": 1,
        "net/minecraft/server/ServerScoreboard#removePlayerFromTeam @RETURN": 1,
        "net/minecraft/util/filefix/fixes/DimensionStorageFileFix#makeFixer @RETURN": 1,
        "net/minecraft/world/entity/Entity#load @HEAD": 1,
        "net/minecraft/world/entity/Entity#saveWithoutId @HEAD": 1,
        "net/minecraft/world/level/levelgen/structure/pools/SinglePoolElement#place @HEAD": 1
      },
      "wanted_calls": {
        "net/minecraft/core/Registry#get @INVOKE (modify-arg)": 1
      },
      "api": [
        {
          "class": "FabricTagsProvider",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DataGeneratorEntrypoint",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricBlockLootSubProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack$Factory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricDataGenerator$Pack$RegistryDependentFactory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricModelProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricRecipeProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricTagsProvider$BlockTagsProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricTagsProvider$ItemTagsProvider",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 399,
        "features": {
          "block-behaviour": 7,
          "item-behaviour": 11,
          "block-entity": 7,
          "menu": 3,
          "screen": 43,
          "renderer": 4,
          "command": 1,
          "network": 19,
          "mixin": 6
        },
        "events": [],
        "examples": {
          "AbstractAttunedShardItem": [
            "getWaystoneAttunedTo",
            "setWaystoneAttunedTo"
          ],
          "AttunedShardItem": [
            "getWaystoneAttunedTo",
            "setWaystoneAttunedTo"
          ],
          "BlankScrollItem": [
            "useOn"
          ],
          "BoundScrollItem": [
            "finishUsingItem",
            "getUseAnimation",
            "getUseDuration",
            "getWaystoneAttunedTo",
            "onUseTick",
            "setWaystoneAttunedTo",
            "use"
          ],
          "CrumblingAttunedShardItem": [
            "getWaystoneAttunedTo",
            "setWaystoneAttunedTo"
          ],
          "FleetingMemorialBlock": [
            "canSurvive",
            "handleActivation",
            "handleEditActions",
            "isDoubleBlock",
            "newBlockEntity",
            "notifyObserversOfAction",
            "playerDestroy",
            "playerWillDestroy",
            "setPlacedBy",
            "shouldOpenMenuWhenPlaced",
            "useItemOn",
            "useWithoutItem"
          ],
          "PortalScrollItem": [
            "finishUsingItem",
            "getUseAnimation",
            "getUseDuration",
            "onUseTick",
            "use"
          ],
          "PortstoneBlock": [
            "canSurvive",
            "getType",
            "handleActivation",
            "handleEditActions",
            "isDoubleBlock",
            "newBlockEntity",
            "notifyObserversOfAction",
            "playerDestroy",
            "playerWillDestroy",
            "setPlacedBy",
            "shouldOpenMenuWhenPlaced",
            "useItemOn",
            "useWithoutItem"
          ],
          "ReturnScrollItem": [
            "finishUsingItem",
            "getUseAnimation",
            "getUseDuration",
            "getWaystoneAttunedTo",
            "onUseTick",
            "setWaystoneAttunedTo",
            "use"
          ],
          "ScrollItemBase": [
            "getUseAnimation",
            "onUseTick",
            "use"
          ],
          "SharestoneBlock": [
            "canSurvive",
            "getType",
            "handleActivation",
            "handleEditActions",
            "isDoubleBlock",
            "newBlockEntity",
            "notifyObserversOfAction",
            "playerDestroy",
            "playerWillDestroy",
            "setPlacedBy",
            "shouldOpenMenuWhenPlaced",
            "useItemOn",
            "useWithoutItem"
          ],
          "TwinboundFeatherItem": [
            "areFeathersBesties",
            "becomeBesties",
            "canTarget",
            "ensurePlayersGroup",
            "findTargetedPlayer",
            "getOrCreateFeatherId",
            "getUseAnimation",
            "getUseDuration",
            "inventoryTick",
            "isTouchingTips",
            "onUseTick",
            "releaseUsing",
            "spawnTwinningParticles",
            "use"
          ],
          "WarpPlateBlock": [
            "canSurvive",
            "entityInside",
            "getColorForName",
            "getGalacticIdentifier",
            "getGalacticName",
            "getTicker",
            "handleActivation",
            "handleEditActions",
            "isDoubleBlock",
            "newBlockEntity",
            "notifyObserversOfAction",
            "playerDestroy",
            "playerWillDestroy",
            "setPlacedBy",
            "shouldOpenMenuWhenPlaced",
            "useItemOn",
            "useWithoutItem"
          ],
          "WarpPortalBlock": [
            "entityInside",
            "getTicker",
            "newBlockEntity"
          ],
          "WarpScrollItem": [
            "finishUsingItem",
            "getUseAnimation",
            "getUseDuration",
            "onUseTick",
            "use"
          ],
          "WarpStoneItem": [
            "finishUsingItem",
            "getType",
            "getUseAnimation",
            "getUseDuration",
            "getWaystoneKind",
            "onUseTick",
            "use"
          ],
          "WaystoneBlock": [
            "canSurvive",
            "getType",
            "handleActivation",
            "handleEditActions",
            "isDoubleBlock",
            "newBlockEntity",
            "notifyObserversOfAction",
            "playerDestroy",
            "playerWillDestroy",
            "setPlacedBy",
            "shouldOpenMenuWhenPlaced",
            "useItemOn",
            "useWithoutItem"
          ],
          "WaystoneBlockBase": [
            "canSurvive",
            "handleActivation",
            "handleEditActions",
            "isDoubleBlock",
            "notifyObserversOfAction",
            "playerDestroy",
            "playerWillDestroy",
            "setPlacedBy",
            "shouldOpenMenuWhenPlaced",
            "useItemOn",
            "useWithoutItem"
          ]
        }
      },
      "interp": {
        "classes": 399,
        "methods": 1535,
        "tried": 600,
        "completed": 173,
        "handlers_tried": 1,
        "handlers_completed": 0,
        "missing": {
          "[Lnet/blay09/mods/waystones/block/WarpPlateBlock$WarpPlateStatus;#clone()Ljava/lang/Object;": 1,
          "[Lnet/blay09/mods/waystones/command/WaystoneOwnership;#clone()Ljava/lang/Object;": 1,
          "[Lnet/blay09/mods/waystones/config/WaystonesConfig$DefaultWaystoneVisibility;#clone()Ljava/lang/Object;": 1,
          "[Lnet/blay09/mods/waystones/config/WaystonesConfig$TransportMobs;#clone()Ljava/lang/Object;": 1,
          "[Lnet/blay09/mods/waystones/config/WorldGenStyle;#clone()Ljava/lang/Object;": 1,
          "[Lnet/blay09/mods/waystones/worldgen/namegen/NameGenerationMode;#clone()Ljava/lang/Object;": 1,
          "com/google/common/collect/Multimap#get(Ljava/lang/Object;)Ljava/util/Collection;": 1,
          "com/google/common/collect/SetMultimap#clear()V": 1,
          "com/mojang/serialization/DataResult#success(Ljava/lang/Object;)Lcom/mojang/serialization/DataResult;": 1,
          "com/mojang/serialization/JsonOps#INSTANCE": 1,
          "java/util/ArrayList#addAll(Ljava/util/Collection;)Z": 3,
          "java/util/Collection#stream()Ljava/util/stream/Stream;": 3,
          "java/util/Collections#newSetFromMap(Ljava/util/Map;)Ljava/util/Set;": 5,
          "java/util/Collections#shuffle(Ljava/util/List;)V": 1,
          "java/util/Collections#unmodifiableList(Ljava/util/List;)Ljava/util/List;": 2,
          "java/util/Collections#unmodifiableSet(Ljava/util/Set;)Ljava/util/Set;": 1,
          "java/util/Comparator#compare(Ljava/lang/Object;Ljava/lang/Object;)I": 2,
          "java/util/List#copyOf(Ljava/util/Collection;)Ljava/util/List;": 1,
          "java/util/List#of()Ljava/util/List;": 2,
          "java/util/List#of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;": 1,
          "java/util/Locale#ROOT": 2,
          "java/util/Set#add(Ljava/lang/Object;)Z": 2,
          "java/util/Set#copyOf(Ljava/util/Collection;)Ljava/util/Set;": 1,
          "java/util/Set#remove(Ljava/lang/Object;)Z": 1,
          "java/util/TreeMap#floorKey(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/UUID#randomUUID()Ljava/util/UUID;": 1,
          "java/util/WeakHashMap#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 3,
          "net/blay09/mods/balm/Balm#networking()Lnet/blay09/mods/balm/network/BalmNetworking;": 1,
          "net/blay09/mods/balm/Balm#safeClientAccess()Lnet/blay09/mods/balm/platform/BalmSafeClientAccess;": 2,
          "net/blay09/mods/balm/client/platform/config/screen/BalmConfigScreen#bindingFor(Lnet/blay09/mods/balm/platform/config/schema/ConfiguredProperty;)Lnet/blay09/mods/balm/platform/config/schema/ConfigControlBinding;": 1,
          "net/blay09/mods/balm/client/platform/event/callback/RenderCallback$UpdateFov#EVENT": 1,
          "net/blay09/mods/balm/client/platform/event/callback/ScreenCallback$Init$After#EVENT": 1,
          "net/blay09/mods/balm/platform/BalmEnvironment#CLIENT": 2,
          "net/blay09/mods/balm/platform/config/schema/BalmConfigSchema#findCategory(Ljava/lang/String;)Lnet/blay09/mods/balm/platform/config/schema/builder/ConfigCategory;": 1,
          "net/blay09/mods/balm/platform/config/schema/BalmConfigSchema#findProperty(Ljava/lang/String;Ljava/lang/String;)Lnet/blay09/mods/balm/platform/config/schema/ConfiguredProperty;": 4,
          "net/blay09/mods/balm/platform/event/BidirectionalEventMapper#invoker()Ljava/lang/Object;": 1,
          "net/blay09/mods/balm/platform/event/callback/BlockCallback$Use#EVENT": 2,
          "net/blay09/mods/balm/platform/event/callback/LivingEntityCallback$Damage$Before#EVENT": 1,
          "net/blay09/mods/balm/platform/event/callback/LivingEntityCallback$Death$Before#EVENT": 1,
          "net/blay09/mods/balm/platform/event/callback/ServerPlayerCallback$Join#EVENT": 2,
          "net/blay09/mods/balm/world/item/DeferredItem#asItem()Lnet/minecraft/world/item/Item;": 2,
          "net/blay09/mods/balm/world/item/DeferredItem#createStack()Lnet/minecraft/world/item/ItemStack;": 2,
          "net/blay09/mods/balm/world/level/block/DeferredBlock#defaultBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/blay09/mods/kuma/api/Kuma#hasShiftDown()Z": 2,
          "net/blay09/mods/shogi/ShogiValue#getOrDefault(Ljava/lang/Object;)Ljava/lang/Object;": 3,
          "net/blay09/mods/shogi/context/MutableShogiContext#of(Ljava/lang/Object;)Lnet/blay09/mods/shogi/context/MutableShogiContext;": 1,
          "net/blay09/mods/shogi/context/ShogiContext#entity()Lnet/minecraft/world/entity/Entity;": 1,
          "net/blay09/mods/shogi/context/ShogiContext#fork()Lnet/blay09/mods/shogi/context/MutableShogiContext;": 2,
          "net/blay09/mods/shogi/context/executor/EffectExecutor#deferred()Lnet/blay09/mods/shogi/context/executor/DeferredEffectExecutor;": 2,
          "net/blay09/mods/waystones/api/MutablePersonalizedWaystone#getConfiguredGroups()Ljava/util/Set;": 2,
          "net/blay09/mods/waystones/api/MutablePersonalizedWaystone#getWaystoneKind()Lnet/minecraft/resources/Identifier;": 1,
          "net/blay09/mods/waystones/api/WaystoneVisibility#ordinal()I": 2,
          "net/blay09/mods/waystones/block/PortstoneBlock#FACING": 1,
          "net/blay09/mods/waystones/block/WarpPlateBlock$WarpPlateStatus#name()Ljava/lang/String;": 1,
          "net/blay09/mods/waystones/block/entity/SharestoneBlockEntity#getBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/blay09/mods/waystones/block/entity/WaystoneBlockEntityBase#getBlockState()Lnet/minecraft/world/level/block/state/BlockState;": 1,
          "net/blay09/mods/waystones/client/gui/screen/ManageWaystoneGroupsScreen#getFocused()Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "net/blay09/mods/waystones/client/gui/screen/WaystoneContainerScreen#init()V": 1,
          "net/blay09/mods/waystones/client/gui/screen/WaystoneContainerScreen#keyPressed(Lnet/minecraft/client/input/KeyEvent;)Z": 4,
          "net/blay09/mods/waystones/client/gui/screen/WaystoneContainerScreen#mouseScrolled(DDDD)Z": 1,
          "net/blay09/mods/waystones/client/gui/widget/AbstractWaystoneList#clearEntries()V": 1,
          "net/blay09/mods/waystones/client/gui/widget/AbstractWaystoneList#getX()I": 1,
          "net/blay09/mods/waystones/client/gui/widget/AbstractWaystoneList$Entry#setX(I)V": 1,
          "net/blay09/mods/waystones/client/gui/widget/AbstractWaystoneList$Entry#setY(I)V": 1,
          "net/blay09/mods/waystones/client/gui/widget/ManageWaystoneButton#extractDefaultSprite(Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V": 1,
          "net/blay09/mods/waystones/config/WaystonesConfig$DefaultWaystoneVisibility#name()Ljava/lang/String;": 1,
          "net/blay09/mods/waystones/config/WaystonesConfig$TransportMobs#name()Ljava/lang/String;": 1,
          "net/blay09/mods/waystones/config/WorldGenStyle#name()Ljava/lang/String;": 1,
          "net/blay09/mods/waystones/datagen/ModBiomeTagProvider#tag(Lnet/minecraft/tags/TagKey;)Lnet/minecraft/data/tags/TagAppender;": 1,
          "net/blay09/mods/waystones/worldgen/namegen/NameGenerationMode#name()Ljava/lang/String;": 1,
          "net/minecraft/ChatFormatting#values()[Lnet/minecraft/ChatFormatting;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 5,
          "net/minecraft/client/color/block/BlockTintSources#constant(I)Lnet/minecraft/client/color/block/BlockTintSource;": 1,
          "net/minecraft/client/gui/components/AbstractContainerWidget#setHeight(I)V": 1,
          "net/minecraft/client/gui/components/AbstractContainerWidget#setWidth(I)V": 1,
          "net/minecraft/client/gui/components/AbstractContainerWidget#setX(I)V": 1,
          "net/minecraft/client/gui/components/AbstractContainerWidget#setY(I)V": 1,
          "net/minecraft/client/gui/components/Button#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 2,
          "net/minecraft/client/gui/components/Button$Plain#extractContents(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 3,
          "net/minecraft/client/gui/components/ContainerObjectSelectionList#extractListItems(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#extractLabels(Lnet/minecraft/client/gui/GuiGraphicsExtractor;II)V": 1,
          "net/minecraft/client/gui/screens/inventory/AbstractContainerScreen#removed()V": 1,
          "net/minecraft/client/input/MouseButtonEvent#y()D": 2,
          "net/minecraft/client/renderer/blockentity/state/BlockEntityRenderState#<init>()V": 2,
          "net/minecraft/core/BlockPos#above()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/BlockPos#below()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/core/BlockPos#getX()I": 1,
          "net/minecraft/core/Direction#values()[Lnet/minecraft/core/Direction;": 1,
          "net/minecraft/core/Holder#value()Ljava/lang/Object;": 11,
          "net/minecraft/core/NonNullList#get(I)Ljava/lang/Object;": 1,
          "net/minecraft/core/NonNullList#size()I": 1,
          "net/minecraft/core/particles/ParticleTypes#PORTAL": 2,
          "net/minecraft/data/recipes/RecipeProvider#<init>(Lnet/minecraft/data/worldgen/BootstrapContext;Lnet/minecraft/data/worldgen/BootstrapContext;)V": 1,
          "net/minecraft/network/chat/Component#copy()Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/Component#getString()Ljava/lang/String;": 1,
          "net/minecraft/resources/ResourceKey#identifier()Lnet/minecraft/resources/Identifier;": 1,
          "net/minecraft/server/MinecraftServer#getDataStorage()Lnet/minecraft/world/level/storage/SavedDataStorage;": 9,
          "net/minecraft/server/level/ServerLevel#getServer()Lnet/minecraft/server/MinecraftServer;": 2,
          "net/minecraft/server/level/ServerLevel#isInWorldBounds(Lnet/minecraft/core/BlockPos;)Z": 1,
          "net/minecraft/server/level/ServerPlayer#getEyePosition()Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/server/level/ServerPlayer#getInventory()Lnet/minecraft/world/entity/player/Inventory;": 1,
          "net/minecraft/server/level/ServerPlayer#getTeam()Lnet/minecraft/world/scores/PlayerTeam;": 1,
          "net/minecraft/server/level/ServerPlayer#isUsingItem()Z": 1,
          "net/minecraft/server/level/ServerPlayer#level()Lnet/minecraft/server/level/ServerLevel;": 4,
          "net/minecraft/world/Container#getContainerSize()I": 1,
          "net/minecraft/world/Container#stillValid(Lnet/minecraft/world/entity/player/Player;)Z": 2,
          "net/minecraft/world/entity/Entity#blockPosition()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/world/entity/Entity#level()Lnet/minecraft/world/level/Level;": 5,
          "net/minecraft/world/entity/LivingEntity#getUUID()Ljava/util/UUID;": 1,
          "net/minecraft/world/entity/player/Player#getItemInHand(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;": 1,
          "net/minecraft/world/entity/player/Player#level()Lnet/minecraft/world/level/Level;": 12,
          "net/minecraft/world/entity/player/Player#startUsingItem(Lnet/minecraft/world/InteractionHand;)V": 1,
          "net/minecraft/world/item/DyeColor#getTextColor()I": 1,
          "net/minecraft/world/item/DyeColor#getTextureDiffuseColor()I": 1,
          "net/minecraft/world/item/ItemStack#EMPTY": 2,
          "net/minecraft/world/item/ItemStack#getItem()Lnet/minecraft/world/item/Item;": 2,
          "net/minecraft/world/item/ItemUseAnimation#BRUSH": 1,
          "net/minecraft/world/level/BlockGetter#getBlockEntity(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/entity/BlockEntity;": 1,
          "net/minecraft/world/level/Level#isClientSide()Z": 3,
          "net/minecraft/world/level/block/RenderShape#MODEL": 1,
          "net/minecraft/world/level/block/entity/BlockEntity#preRemoveSideEffects(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V": 1,
          "net/minecraft/world/level/block/state/BlockState#getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;": 2,
          "net/minecraft/world/level/block/state/StateDefinition$Builder#add([Lnet/minecraft/world/level/block/state/properties/Property;)Lnet/minecraft/world/level/block/state/StateDefinition$Builder;": 3,
          "net/minecraft/world/phys/shapes/Shapes#empty()Lnet/minecraft/world/phys/shapes/VoxelShape;": 2,
          "new net/minecraft/world/SimpleContainer": 2,
          "new net/minecraft/world/phys/Vec3": 1
        },
        "runs": [
          {
            "class": "net/blay09/mods/waystones/block/PortstoneBlock",
            "method": "isPathfindable",
            "desc": "(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/pathfinder/PathComputationType;)Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/item/WarpStoneItem",
            "method": "isFoil",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "1"
          },
          {
            "class": "net/blay09/mods/waystones/client/gui/widget/AbstractWaystoneList",
            "method": "getRowWidth",
            "desc": "()I",
            "value": "220"
          },
          {
            "class": "net/blay09/mods/waystones/item/BoundScrollItem",
            "method": "isFoil",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "1"
          },
          {
            "class": "net/blay09/mods/waystones/api/Waystone",
            "method": "getOwnerUsername",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#182"
          },
          {
            "class": "net/blay09/mods/waystones/api/Waystone",
            "method": "isValidInLevel",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;)Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/core/TwinboundFeatherWaystone",
            "method": "isValidInLevel",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;)Z",
            "value": "1"
          },
          {
            "class": "net/blay09/mods/waystones/core/TwinboundFeatherWaystone",
            "method": "isTransient",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/blay09/mods/waystones/core/WaystoneTeleportContextImpl",
            "method": "getFromWaystone",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#243"
          },
          {
            "class": "net/blay09/mods/waystones/core/WaystoneTeleportContextImpl",
            "method": "setFromWaystone",
            "desc": "(Lnet/blay09/mods/waystones/api/Waystone;)Lnet/blay09/mods/waystones/api/WaystoneTeleportContext;",
            "value": "obj#244"
          },
          {
            "class": "net/blay09/mods/waystones/core/WaystoneTeleportContextImpl",
            "method": "setWarpItem",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Lnet/blay09/mods/waystones/api/WaystoneTeleportContext;",
            "value": "obj#246"
          },
          {
            "class": "net/blay09/mods/waystones/core/WaystoneTeleportContextImpl",
            "method": "setWarpHand",
            "desc": "(Lnet/minecraft/world/InteractionHand;)Lnet/blay09/mods/waystones/api/WaystoneTeleportContext;",
            "value": "obj#248"
          },
          {
            "class": "net/blay09/mods/waystones/core/WaystoneTeleportContextImpl",
            "method": "playsSound",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/core/WaystoneTeleportContextImpl",
            "method": "setPlaysSound",
            "desc": "(Z)Lnet/blay09/mods/waystones/api/WaystoneTeleportContext;",
            "value": "obj#251"
          },
          {
            "class": "net/blay09/mods/waystones/core/WaystoneTeleportContextImpl",
            "method": "playsEffect",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/core/WaystoneTeleportContextImpl",
            "method": "setPlaysEffect",
            "desc": "(Z)Lnet/blay09/mods/waystones/api/WaystoneTeleportContext;",
            "value": "obj#253"
          },
          {
            "class": "net/blay09/mods/waystones/core/WaystoneTeleportContextImpl",
            "method": "setExecutor",
            "desc": "(Lnet/blay09/mods/shogi/context/executor/EffectExecutor;)Lnet/blay09/mods/waystones/core/WaystoneTeleportContextImpl;",
            "value": "obj#263"
          },
          {
            "class": "net/blay09/mods/waystones/client/requirement/EpitaphRequirementRenderer",
            "method": "getOrder",
            "desc": "()I",
            "value": "5"
          },
          {
            "class": "net/blay09/mods/waystones/block/entity/WaystoneBlockEntity",
            "method": "canSilkTouch",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/blay09/mods/waystones/api/event/WaystoneTeleportEvent$Complete",
            "method": "getPrimaryResult",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#337"
          },
          {
            "class": "net/blay09/mods/waystones/api/event/WaystoneTeleportEvent$Complete",
            "method": "getTeleportError",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#346"
          },
          {
            "class": "net/blay09/mods/waystones/util/ExperienceUtils",
            "method": "calculateMinimumLevelForExperiencePoints",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/util/ExperienceUtils",
            "method": "calculateDisplayedLevelCostFromExperiencePoints",
            "desc": "(IJI)I",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/util/ExperienceUtils",
            "method": "calculateLevelFromExperiencePoints",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/util/ExperienceUtils",
            "method": "getXpNeededForNextLevel",
            "desc": "(I)J",
            "value": "7"
          },
          {
            "class": "net/blay09/mods/waystones/network/message/ClientboundWaystoneRemovedPacket",
            "method": "wasDestroyed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/worldgen/namegen/NameGeneratorManager",
            "method": "getUsedNames",
            "desc": "()Ljava/util/List;",
            "value": "obj#414"
          },
          {
            "class": "net/blay09/mods/waystones/client/gui/widget/ManageWaystoneGroupsList",
            "method": "isDragging",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "net/blay09/mods/waystones/client/gui/widget/ManageWaystoneGroupsList",
            "method": "getRowWidth",
            "desc": "()I",
            "value": "220"
          },
          {
            "class": "net/blay09/mods/waystones/store/InMemoryWaystonesStore",
            "method": "getWaystoneById",
            "desc": "(Ljava/util/UUID;)Ljava/util/Optional;",
            "value": "obj#444"
          },
          {
            "class": "net/blay09/mods/waystones/api/event/WaystoneRemoveReceivedEvent",
            "method": "wasDestroyed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/item/TwinboundFeatherItem",
            "method": "getUseDuration",
            "desc": "(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/LivingEntity;)I",
            "value": "72000"
          },
          {
            "class": "net/blay09/mods/waystones/item/TwinboundFeatherItem",
            "method": "canTarget",
            "desc": "(Lnet/minecraft/world/entity/Entity;)Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/menu/WaystoneEditMenu$Data",
            "method": "modifierCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/block/WarpPlateBlock",
            "method": "shouldOpenMenuWhenPlaced",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/client/requirement/RequirementRenderer",
            "method": "getWidth",
            "desc": "(Lnet/minecraft/world/entity/player/Player;Ljava/lang/Object;)I",
            "value": "16"
          },
          {
            "class": "net/blay09/mods/waystones/client/requirement/RequirementRenderer",
            "method": "getOrder",
            "desc": "()I",
            "value": "100"
          },
          {
            "class": "net/blay09/mods/waystones/item/PortalScrollItem",
            "method": "isFoil",
            "desc": "(Lnet/minecraft/world/item/ItemStack;)Z",
            "value": "1"
          },
          {
            "class": "net/blay09/mods/waystones/api/WaystoneDelegate",
            "method": "getOwnerUsername",
            "desc": "()Ljava/util/Optional;",
            "value": "obj#566"
          },
          {
            "class": "net/blay09/mods/waystones/api/WaystoneDelegate",
            "method": "isValidInLevel",
            "desc": "(Lnet/minecraft/server/level/ServerLevel;)Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/api/event/WaystoneTeleportEvent$Before",
            "method": "isCanceled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "net/blay09/mods/waystones/menu/WaystoneEditMenu",
            "method": "getModifierCount",
            "desc": "()I",
            "value": "0"
          }
        ],
        "insns": 3181
      },
      "verdict": "no",
      "summary": "only 1 of 7 listening patch sites have a hook (14%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "xaeroplus",
      "name": "XaeroPlus",
      "version": "2.37.2",
      "license": "MIT",
      "loader": "fabric",
      "environment": "client",
      "entrypoints": [
        {
          "kind": "client",
          "value": "xaeroplus/fabric/XaeroPlusFabric"
        },
        {
          "kind": "modmenu",
          "value": "xaeroplus/fabric/XaeroPlusModMenu"
        },
        {
          "kind": "sodium:config_api_user",
          "value": "xaeroplus/fabric/XaeroPlusSodiumConfigBuilder"
        }
      ],
      "mixin_configs": [
        "xaeroplus.mixins.json",
        "xaeroplus-fabric.mixins.json",
        "xaeroplus-asmworkaround.mixins.json"
      ],
      "depends": [
        "xaeroworldmap"
      ],
      "classes": 1298,
      "methods": 11341,
      "sites": [
        {
          "mixin": "xaeroplus/fabric/mixin/client/MixinHudMod",
          "targets": [
            "xaero/common/HudMod"
          ],
          "handler": "loadCommon",
          "kind": "inject",
          "method": "loadCommon",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/HudMod#loadCommon HEAD"
        },
        {
          "mixin": "xaeroplus/fabric/mixin/client/MixinWorldMap",
          "targets": [
            "xaero/map/WorldMap"
          ],
          "handler": "onWorldMapInitialize",
          "kind": "inject",
          "method": "loadCommon",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/WorldMap#loadCommon HEAD"
        },
        {
          "mixin": "xaeroplus/fabric/mixin/client/mc/MixinGui",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "preventMinimapIncompatibleScreenFromClosing",
          "kind": "inject",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "screen_opening",
          "why": "ScreenEvent.Opening: a screen opens"
        },
        {
          "mixin": "xaeroplus/fabric/mixin/client/mc/MixinLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "renderBlockEntitiesInject",
          "kind": "inject",
          "method": "submitBlockEntities",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/LevelRenderer#submitBlockEntities HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinBlockStateShortShapeCache",
          "targets": [
            "xaero/map/cache/BlockStateShortShapeCache"
          ],
          "handler": "patchConcurrencyCrash",
          "kind": "wrap-operation",
          "method": "supplyForIOThread",
          "at": "FIELD",
          "at_target": "Lxaero/map/cache/BlockStateShortShapeCache;ioThreadWaitingForSupplier:Ljava/util/function/Supplier;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinBuiltInInfoDisplays",
          "targets": [
            "xaero/hud/minimap/info/BuiltInInfoDisplays"
          ],
          "handler": "hideAutoSubworldInfoWhenOwAutoWaypointsEnabled",
          "kind": "wrap-operation",
          "method": "lambda$static$20",
          "at": "INVOKE",
          "at_target": "Lxaero/hud/minimap/info/render/compile/InfoDisplayCompiler;addWords(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinClientEvents",
          "targets": [
            "xaero/common/events/ClientEvents"
          ],
          "handler": "onSystemChatReceived",
          "kind": "inject",
          "method": "handleClientSystemChatReceivedEvent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/common/events/ClientEvents#handleClientSystemChatReceivedEvent HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinClientEvents",
          "targets": [
            "xaero/common/events/ClientEvents"
          ],
          "handler": "onPlayerChatReceived",
          "kind": "inject",
          "method": "handleClientPlayerChatReceivedEvent",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/common/events/ClientEvents#handleClientPlayerChatReceivedEvent HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinCommonInternet",
          "targets": [
            "xaero/common/misc/Internet"
          ],
          "handler": "disableInternetAccessCheck",
          "kind": "inject",
          "method": "checkModVersion",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/common/misc/Internet#checkModVersion HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinCrashHandler",
          "targets": [
            "xaero/map/CrashHandler"
          ],
          "handler": "checkForCrashes",
          "kind": "overwrite",
          "method": "checkForCrashes",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinCustomRenderTypes",
          "targets": [
            "xaero/map/graphics/CustomRenderTypes"
          ],
          "handler": "injectCustomRenderTypes",
          "kind": "inject",
          "method": "applyFixedOrder",
          "at": "INVOKE",
          "at_target": "Lxaero/lib/client/graphics/XaeroBufferProvider;addToFixedOrder(Lnet/minecraft/client/renderer/rendertype/RenderType;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/graphics/CustomRenderTypes#applyFixedOrder INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiEntityRadarSettings",
          "targets": [
            "xaero/common/gui/GuiEntityRadarSettings"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/gui/GuiEntityRadarSettings#<init> RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "customInitGui",
          "kind": "inject",
          "method": "init",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#init RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "trulyUnlimitedWorldMapZoom0",
          "kind": "wrap-operation",
          "method": "changeZoom",
          "at": "INVOKE",
          "at_target": "Lxaero/map/gui/GuiMap;applyZoomLimits()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "lockedMapSettingHelp",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/gui/GuiMap;renderMessageScreen(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Ljava/lang/String;Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#extractRenderState INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "trulyUnlimitedWorldMapZoom1",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/gui/GuiMap;applyZoomLimits()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "trulyUnlimitedWorldMapZoomStrPrecisionFix2",
          "kind": "modify-arg",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/graphics/MapRenderHelper;drawCenteredStringWithBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIFFFF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "toggleRadarWhileDimensionSwitched",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/gui/GuiMap;init(II)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#extractRenderState INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "fixDimensionSwitchCameraCoordsX",
          "kind": "redirect",
          "method": "extractRenderState",
          "at": "FIELD",
          "at_target": "Lxaero/map/gui/GuiMap;cameraX:D",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "fixDimensionSwitchCameraCoordsZ",
          "kind": "redirect",
          "method": "extractRenderState",
          "at": "FIELD",
          "at_target": "Lxaero/map/gui/GuiMap;cameraZ:D",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "drawWorldMapFeatures",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/lib/client/graphics/XaeroBufferProvider;endBatch()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "renderCrossDimensionCursorCoordinates",
          "kind": "modify-arg",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/graphics/MapRenderHelper;drawCenteredStringWithBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIFFFF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "renderCoordinatesGotoTextEntryFields",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/graphics/MapRenderHelper;restoreDefaultShaderBlendState()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#extractRenderState INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "onDimensionToggleAfter",
          "kind": "inject",
          "method": "onDimensionToggleButton",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#onDimensionToggleButton RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#tick RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "updateInProgressLine",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#extractRenderState RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "injectCustomMapRenderType",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "FIELD",
          "at_target": "Lxaero/map/graphics/CustomRenderTypes;MAP:Lnet/minecraft/client/renderer/rendertype/RenderType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "injectCustomMapFrameRenderType",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "FIELD",
          "at_target": "Lxaero/map/graphics/CustomRenderTypes;MAP_FRAME:Lnet/minecraft/client/renderer/rendertype/RenderType;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "transparentBgSetPrimaryFboTransparentClearColor",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/lib/client/graphics/util/TextureUtils;clearRenderTarget(Lcom/mojang/blaze3d/pipeline/RenderTarget;Lorg/joml/Vector4fc;F)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "onImmediateFboRenderStateRegister",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/state/gui/GuiRenderState;addGuiElement(Lnet/minecraft/client/renderer/state/gui/GuiElementRenderState;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#extractRenderState INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "transparentBgConfigMapRenderWithLight",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/graphics/renderer/multitexture/MultiTextureRenderTypeRendererProvider;draw(Lxaero/map/graphics/renderer/multitexture/MultiTextureRenderTypeRenderer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "transparentBgConfigMapRenderNoLight",
          "kind": "wrap-operation",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/graphics/renderer/multitexture/MultiTextureRenderTypeRendererProvider;draw(Lxaero/map/graphics/renderer/multitexture/MultiTextureRenderTypeRenderer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "transparentBgDisableWorldRenderSkip",
          "kind": "inject",
          "method": "shouldSkipWorldRender",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#shouldSkipWorldRender HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "transparentBgCancelMapColorFiller0",
          "kind": "wrap-with-condition",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/graphics/MapRenderHelper;fillIntoExistingBuffer(Lorg/joml/Matrix4f;Lcom/mojang/blaze3d/vertex/VertexConsumer;IIIIFFFF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "transparentBgCancelMapColorFiller1",
          "kind": "wrap-with-condition",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/graphics/MapRenderHelper;fillIntoExistingBuffer(Lorg/joml/Matrix4f;Lcom/mojang/blaze3d/vertex/VertexConsumer;IIIIFFFF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "renderMeasurementToolText",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "FIELD",
          "at_target": "Lxaero/map/common/config/option/WorldMapProfiledConfigOptions;COORDINATES:Lxaero/lib/common/config/option/BooleanConfigOption;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#extractRenderState FIELD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "renderDrawingStatusText",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "INVOKE",
          "at_target": "Lxaero/map/mods/SupportXaeroMinimap;getSubWorldNameToRender()Ljava/lang/String;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#extractRenderState INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "cancelClicksWhileDrawing",
          "kind": "inject",
          "method": "mouseClicked",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#mouseClicked HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "drawingClickReleasedHandler",
          "kind": "inject",
          "method": "mouseReleased",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#mouseReleased HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "xaeroplus$drawingModeUndo",
          "kind": "inject",
          "method": "keyPressed",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#keyPressed RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "panMouseButtonClick",
          "kind": "inject",
          "method": "onInputPress",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#onInputPress HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "panMouseButtonRelease",
          "kind": "inject",
          "method": "onInputRelease",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#onInputRelease HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "panMapOnRender",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#extractRenderState HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "renderTileSelectionSize",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "FIELD",
          "at_target": "Lxaero/map/common/config/option/WorldMapProfiledConfigOptions;COORDINATES:Lxaero/lib/common/config/option/BooleanConfigOption;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#extractRenderState FIELD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "onInputPress",
          "kind": "inject",
          "method": "keyPressed",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#keyPressed HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMap",
          "targets": [
            "xaero/map/gui/GuiMap"
          ],
          "handler": "getRightClickOptionsInject",
          "kind": "inject",
          "method": "getRightClickOptions",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiMap#getRightClickOptions RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiMinimapMain",
          "targets": [
            "xaero/common/gui/GuiMinimapMain"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/gui/GuiMinimapMain#<init> RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiSettings",
          "targets": [
            "xaero/lib/client/gui/GuiSettings"
          ],
          "handler": "adjustEntriesPerPage",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/lib/client/gui/GuiSettings#init HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiSettings",
          "targets": [
            "xaero/lib/client/gui/GuiSettings"
          ],
          "handler": "adjustForwardBackButtonPositionsForExtraRows",
          "kind": "inject",
          "method": "init",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/lib/client/gui/GuiSettings#init RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiSettings",
          "targets": [
            "xaero/lib/client/gui/GuiSettings"
          ],
          "handler": "settingListToRenderRedirect",
          "kind": "redirect",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Ljava/util/ArrayList;add(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiSettings",
          "targets": [
            "xaero/lib/client/gui/GuiSettings"
          ],
          "handler": "adjustSettingEntryWidth",
          "kind": "wrap-operation",
          "method": "init",
          "at": "INVOKE",
          "at_target": "Lxaero/lib/client/gui/ISettingEntry;createWidget(III)Lnet/minecraft/client/gui/components/AbstractWidget;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiWaypointSettings",
          "targets": [
            "xaero/common/gui/GuiWaypointSettings"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/gui/GuiWaypointSettings#<init> RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiWaypoints",
          "targets": [
            "xaero/common/gui/GuiWaypoints"
          ],
          "handler": "initGui",
          "kind": "inject",
          "method": "init",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/gui/GuiWaypoints#init HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiWaypoints",
          "targets": [
            "xaero/common/gui/GuiWaypoints"
          ],
          "handler": "shareButtonRedirect",
          "kind": "redirect",
          "method": "updateButtons",
          "at": "INVOKE",
          "at_target": "Lxaero/common/gui/GuiWaypoints;isOneSelected()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiWaypointsList",
          "targets": [
            "xaero/common/gui/GuiWaypoints$List"
          ],
          "handler": "drawWaypointDistances",
          "kind": "wrap-operation",
          "method": "drawWaypointSlot",
          "at": "INVOKE",
          "at_target": "Lxaero/common/minimap/waypoints/Waypoint;isThirdParty()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinGuiWorldMapSettings",
          "targets": [
            "xaero/map/gui/GuiWorldMapSettings"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/gui/GuiWorldMapSettings#<init> RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinHudMinimapRenderer",
          "targets": [
            "xaero/hud/minimap/module/MinimapRenderer"
          ],
          "handler": "allowMinimapRenderOnTopOf",
          "kind": "redirect",
          "method": "render",
          "at": "INVOKE",
          "at_target": "Lxaero/hud/minimap/module/MinimapSession;getHideMinimapUnderScreen()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinHudMod",
          "targets": [
            "xaero/common/HudMod"
          ],
          "handler": "onClientLoadComplete",
          "kind": "inject",
          "method": "loadLater",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/HudMod#loadLater RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinIOUtils",
          "targets": [
            "xaero/lib/common/util/IOUtils"
          ],
          "handler": "randomizeBackupPath",
          "kind": "wrap-operation",
          "method": "quickFileBackupMove",
          "at": "INVOKE",
          "at_target": "Ljava/nio/file/Path;resolveSibling(Ljava/lang/String;)Ljava/nio/file/Path;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinIOUtils",
          "targets": [
            "xaero/lib/common/util/IOUtils"
          ],
          "handler": "atomicMoveAndReplace",
          "kind": "inject",
          "method": "safeMoveAndReplace",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/lib/common/util/IOUtils#safeMoveAndReplace HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinLayeredRegionManager",
          "targets": [
            "xaero/map/region/LayeredRegionManager"
          ],
          "handler": "createOptimizedMapLayer",
          "kind": "redirect",
          "method": "getLayer",
          "at": "NEW",
          "at_target": "(Lxaero/map/world/MapDimension;Lxaero/map/highlight/RegionHighlightExistenceTracker;)Lxaero/map/region/MapLayer;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinLeveledRegion",
          "targets": [
            "xaero/map/region/LeveledRegion"
          ],
          "handler": "replaceSaveCacheTexturesZipOutputStream",
          "kind": "redirect",
          "method": "saveCacheTextures",
          "at": "NEW",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinLeveledRegion",
          "targets": [
            "xaero/map/region/LeveledRegion"
          ],
          "handler": "writeSaveCacheTexturesZipOutputStream",
          "kind": "inject",
          "method": "saveCacheTextures",
          "at": "INVOKE",
          "at_target": "Ljava/util/zip/ZipOutputStream;closeEntry()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/region/LeveledRegion#saveCacheTextures INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapDimension",
          "targets": [
            "xaero/map/world/MapDimension"
          ],
          "handler": "fastGetWorldSaveRegionDetection",
          "kind": "inject",
          "method": "getWorldSaveRegionDetection",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/world/MapDimension#getWorldSaveRegionDetection HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapPixel",
          "targets": [
            "xaero/map/region/MapPixel"
          ],
          "handler": "getPixelColours",
          "kind": "inject",
          "method": "getPixelColours",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/region/MapPixel#getPixelColours RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "getMainId",
          "kind": "inject",
          "method": "getMainId",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/MapProcessor#getMainId HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "getDimensionName",
          "kind": "inject",
          "method": "getDimensionName",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/MapProcessor#getDimensionName HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "resetCustomDimOnWorldUnload",
          "kind": "inject",
          "method": "onWorldUnload",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/MapProcessor#onWorldUnload HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "decreaseThreadSleepTime",
          "kind": "redirect",
          "method": "run",
          "at": "INVOKE",
          "at_target": "Ljava/lang/Thread;sleep(J)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "capturePrevStateForWorldChangeEvent",
          "kind": "inject",
          "method": "updateWorldSynced",
          "at": "INVOKE",
          "at_target": "Lxaero/map/MapProcessor;pushRenderPause(ZZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/MapProcessor#updateWorldSynced INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "fireWorldChangedEvent",
          "kind": "inject",
          "method": "updateWorldSynced",
          "at": "INVOKE",
          "at_target": "Lxaero/map/MapProcessor;popRenderPause(ZZ)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/MapProcessor#updateWorldSynced INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "getActualDimIfSignalSet",
          "kind": "inject",
          "method": "getCurrentDimension",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/MapProcessor#getCurrentDimension HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "getLeafMapRegionActualDimensionIfSignalled",
          "kind": "wrap-operation",
          "method": "getLeafMapRegion",
          "at": "INVOKE",
          "at_target": "Lxaero/map/world/MapWorld;getCurrentDimension()Lxaero/map/world/MapDimension;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "createMapRegionInActualDimensionIfSignalled",
          "kind": "redirect",
          "method": "getLeafMapRegion",
          "at": "NEW",
          "at_target": "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lxaero/map/world/MapDimension;IIIIZLnet/minecraft/core/Registry;)Lxaero/map/region/MapRegion;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "updateWorldSyncedGetActualDimension",
          "kind": "wrap-operation",
          "method": "updateWorldSynced",
          "at": "INVOKE",
          "at_target": "Lxaero/map/world/MapWorld;getCurrentDimension()Lxaero/map/world/MapDimension;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "storePrevWorldVarStates",
          "kind": "wrap-operation",
          "method": "updateWorldSynced",
          "at": "FIELD",
          "at_target": "Lxaero/map/MapProcessor;currentWorldId:Ljava/lang/String;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapProcessor",
          "targets": [
            "xaero/map/MapProcessor"
          ],
          "handler": "fixDeadlockIfSpawnPacketNeverReceived",
          "kind": "inject",
          "method": "onClientTickStart",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/MapProcessor#onClientTickStart RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapSaveLoad",
          "targets": [
            "xaero/map/file/MapSaveLoad"
          ],
          "handler": "getOldFolder",
          "kind": "inject",
          "method": "getOldFolder",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/file/MapSaveLoad#getOldFolder HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapSaveLoad",
          "targets": [
            "xaero/map/file/MapSaveLoad"
          ],
          "handler": "replaceSaveRegionZipOutputStream",
          "kind": "redirect",
          "method": "saveRegion",
          "at": "NEW",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapSaveLoad",
          "targets": [
            "xaero/map/file/MapSaveLoad"
          ],
          "handler": "saveRegionWriteZipOutputStream",
          "kind": "inject",
          "method": "saveRegion",
          "at": "INVOKE",
          "at_target": "Ljava/util/zip/ZipOutputStream;closeEntry()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/file/MapSaveLoad#saveRegion INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapSaveLoad",
          "targets": [
            "xaero/map/file/MapSaveLoad"
          ],
          "handler": "closeZipOutputStream",
          "kind": "inject",
          "method": "saveRegion",
          "at": "INVOKE",
          "at_target": "Ljava/io/DataOutputStream;close()V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/file/MapSaveLoad#saveRegion INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapTeleporter",
          "targets": [
            "xaero/map/teleport/MapTeleporter"
          ],
          "handler": "onTeleportAttemptA",
          "kind": "inject",
          "method": "teleport",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientPacketListener;sendCommand(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/teleport/MapTeleporter#teleport INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapTeleporter",
          "targets": [
            "xaero/map/teleport/MapTeleporter"
          ],
          "handler": "onTeleportAttemptB",
          "kind": "inject",
          "method": "teleport",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientPacketListener;sendChat(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/teleport/MapTeleporter#teleport INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapTileChunk",
          "targets": [
            "xaero/map/region/MapTileChunk"
          ],
          "handler": "setTile",
          "kind": "inject",
          "method": "setTile",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/region/MapTileChunk#setTile HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapTileChunk",
          "targets": [
            "xaero/map/region/MapTileChunk"
          ],
          "handler": "readCacheData",
          "kind": "inject",
          "method": "readCacheData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/region/MapTileChunk#readCacheData RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapTileChunk",
          "targets": [
            "xaero/map/region/MapTileChunk"
          ],
          "handler": "useRegionDimensionInsteadOfMapWorld",
          "kind": "wrap-operation",
          "method": "updateBuffers",
          "at": "INVOKE",
          "at_target": "Lxaero/map/world/MapWorld;getCurrentDimension()Lxaero/map/world/MapDimension;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWorld",
          "targets": [
            "xaero/map/world/MapWorld"
          ],
          "handler": "setCurrentDimensionRef",
          "kind": "wrap-operation",
          "method": "switchToFutureUnsynced",
          "at": "FIELD",
          "at_target": "Lxaero/map/world/MapWorld;currentDimensionId:Lnet/minecraft/resources/ResourceKey;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWorld",
          "targets": [
            "xaero/map/world/MapWorld"
          ],
          "handler": "getCurrentDimension",
          "kind": "overwrite",
          "method": "getCurrentDimension",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWriter",
          "targets": [
            "xaero/map/MapWriter"
          ],
          "handler": "setObsidianColumnLocalVar",
          "kind": "inject",
          "method": "loadPixel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/MapWriter#loadPixel HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWriter",
          "targets": [
            "xaero/map/MapWriter"
          ],
          "handler": "obsidianRoofHeadInject",
          "kind": "inject",
          "method": "loadPixel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;getFluidState()Lnet/minecraft/world/level/material/FluidState;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/MapWriter#loadPixel INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWriter",
          "targets": [
            "xaero/map/MapWriter"
          ],
          "handler": "checkObsidianRoofColumn",
          "kind": "wrap-operation",
          "method": "loadPixel",
          "at": "INVOKE",
          "at_target": "Lxaero/map/region/OverlayBuilder;isEmpty()Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWriter",
          "targets": [
            "xaero/map/MapWriter"
          ],
          "handler": "getOpacityForObsidianRoof",
          "kind": "wrap-operation",
          "method": "loadPixelHelp",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/level/block/state/BlockState;getLightDampening()I",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWriter",
          "targets": [
            "xaero/map/MapWriter"
          ],
          "handler": "netherCaveFixInject",
          "kind": "inject",
          "method": "loadPixel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/MapWriter#loadPixel HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWriter",
          "targets": [
            "xaero/map/MapWriter"
          ],
          "handler": "removeCustomDimSwitchWriterPrevention",
          "kind": "wrap-operation",
          "method": "onRender",
          "at": "INVOKE",
          "at_target": "Lxaero/map/world/MapWorld;getCurrentDimensionId()Lnet/minecraft/resources/ResourceKey;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWriter",
          "targets": [
            "xaero/map/MapWriter"
          ],
          "handler": "setCrossDimWriteSignals",
          "kind": "inject",
          "method": "onRender",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/MapWriter#onRender HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWriter",
          "targets": [
            "xaero/map/MapWriter"
          ],
          "handler": "resetSignals",
          "kind": "inject",
          "method": "onRender",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/MapWriter#onRender RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMapWriter",
          "targets": [
            "xaero/map/MapWriter"
          ],
          "handler": "getActualMapRegionInOnRender",
          "kind": "wrap-operation",
          "method": "onRender",
          "at": "INVOKE",
          "at_target": "Lxaero/map/MapProcessor;getLeafMapRegion(IIIZ)Lxaero/map/region/MapRegion;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimap",
          "targets": [
            "xaero/hud/minimap/Minimap"
          ],
          "handler": "checkCrashes",
          "kind": "overwrite",
          "method": "checkCrashes",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapConfigClientUtils",
          "targets": [
            "xaero/hud/minimap/config/util/MinimapConfigClientUtils"
          ],
          "handler": "modifyMinimapSize",
          "kind": "inject",
          "method": "getEffectiveMinimapSize",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/config/util/MinimapConfigClientUtils#getEffectiveMinimapSize RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapFBORenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapFBORenderer"
          ],
          "handler": "modifyViewW",
          "kind": "modify-arg",
          "method": "renderChunks",
          "at": "INVOKE",
          "at_target": "Lxaero/common/minimap/render/MinimapFBORenderer;renderChunksToFBO(Lxaero/hud/minimap/module/MinimapSession;Lcom/mojang/blaze3d/vertex/PoseStack;Lxaero/common/minimap/MinimapProcessor;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/resources/ResourceKey;DIFIZZIDDZLxaero/lib/client/graphics/XaeroBufferProvider;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapFBORenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapFBORenderer"
          ],
          "handler": "modifyScaledSize",
          "kind": "inject",
          "method": "renderChunksToFBO",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/minimap/render/MinimapFBORenderer#renderChunksToFBO HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapFBORenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapFBORenderer"
          ],
          "handler": "modifyShaderMatrixStackTranslate",
          "kind": "redirect",
          "method": "renderChunksToFBO",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Matrix4fStack;translate(FFF)Lorg/joml/Matrix4f;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapFBORenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapFBORenderer"
          ],
          "handler": "modifyChunkGridLineWidth",
          "kind": "modify-arg",
          "method": "renderChunksToFBO",
          "at": "INVOKE",
          "at_target": "Lxaero/common/minimap/render/MinimapRendererHelper;addColoredLineToExistingBuffer(Lcom/mojang/blaze3d/vertex/PoseStack$Pose;Lcom/mojang/blaze3d/vertex/VertexConsumer;FFFFFFFFF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapFBORenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapFBORenderer"
          ],
          "handler": "correctPreRotationTranslationForSizeMult",
          "kind": "redirect",
          "method": "renderChunksToFBO",
          "at": "INVOKE",
          "at_target": "Lorg/joml/Matrix4fStack;translate(FFF)Lorg/joml/Matrix4f;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapFBORenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapFBORenderer"
          ],
          "handler": "correctScaledFBO",
          "kind": "wrap-operation",
          "method": "renderChunksToFBO",
          "at": "INVOKE",
          "at_target": "Lxaero/lib/client/graphics/util/ImmediateRenderUtil;texturedRect(Lcom/mojang/blaze3d/vertex/PoseStack;FFIIFFFFLcom/mojang/renderpearl/api/pipeline/RenderPipeline;Lnet/minecraft/client/renderer/rendertype/PreparedRenderType$Texture;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapFBORenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapFBORenderer"
          ],
          "handler": "drawMinimapFeatures",
          "kind": "wrap-operation",
          "method": "renderChunksToFBO",
          "at": "INVOKE",
          "at_target": "Lxaero/common/mods/SupportXaeroWorldmap;drawMinimap(Lxaero/hud/minimap/module/MinimapSession;Lcom/mojang/blaze3d/vertex/PoseStack;Lxaero/common/minimap/render/MinimapRendererHelper;IIIIIIZDDLcom/mojang/blaze3d/vertex/VertexConsumer;Lxaero/common/graphics/renderer/multitexture/MultiTextureRenderTypeRendererProvider;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapFBORenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapFBORenderer"
          ],
          "handler": "drawMinimapFeaturesCaveMode",
          "kind": "wrap-operation",
          "method": "renderChunksToFBO",
          "at": "INVOKE",
          "at_target": "Lxaero/common/graphics/renderer/multitexture/MultiTextureRenderTypeRendererProvider;draw(Lxaero/common/graphics/renderer/multitexture/MultiTextureRenderTypeRenderer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapModuleRenderer",
          "targets": [
            "xaero/hud/minimap/module/MinimapRenderer"
          ],
          "handler": "cancelWhileInTransparentWm",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/module/MinimapRenderer#render HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapPipRenderer",
          "targets": [
            "xaero/hud/minimap/render/MinimapPipRenderer"
          ],
          "handler": "prepareTexturesCheckRenderCancel",
          "kind": "wrap-with-condition",
          "method": "prepare",
          "at": "INVOKE",
          "at_target": "Lxaero/common/core/IPictureInPictureRenderer;xaero_mm_prepareTexturesAndProjection(ZII)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapPipRenderer",
          "targets": [
            "xaero/hud/minimap/render/MinimapPipRenderer"
          ],
          "handler": "checkRenderToTextureCancel",
          "kind": "wrap-with-condition",
          "method": "prepare",
          "at": "INVOKE",
          "at_target": "Lxaero/hud/minimap/render/MinimapPipRenderer;renderToTexture(Lxaero/hud/minimap/render/MinimapPipRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapRenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapRenderer"
          ],
          "handler": "resetFBOSize",
          "kind": "inject",
          "method": "renderMinimap",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/minimap/render/MinimapRenderer#renderMinimap HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapRenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapRenderer"
          ],
          "handler": "cancelMinimapRenderWhileInTransparentWorldmap",
          "kind": "inject",
          "method": "renderMinimap",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/common/minimap/render/MinimapRenderer#renderMinimap HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapRenderer",
          "targets": [
            "xaero/common/minimap/render/MinimapRenderer"
          ],
          "handler": "setOvermapRendererZoom",
          "kind": "modify-arg",
          "method": "renderMinimap",
          "at": "INVOKE",
          "at_target": "Lxaero/hud/minimap/element/render/over/MinimapElementOverMapRendererHandler;prepareRender(DDDIIIIZF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapViewSettings",
          "targets": [
            "xaero/common/gui/GuiMinimapViewSettings"
          ],
          "handler": "init",
          "kind": "inject",
          "method": "<init>",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/gui/GuiMinimapViewSettings#<init> RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapWorldManagerIO",
          "targets": [
            "xaero/hud/minimap/world/io/MinimapWorldManagerIO"
          ],
          "handler": "reduceChanceOfFileNameCollisions",
          "kind": "wrap-operation",
          "method": "saveWorld",
          "at": "INVOKE",
          "at_target": "Ljava/nio/file/Path;resolve(Ljava/lang/String;)Ljava/nio/file/Path;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapWorldStateUpdater",
          "targets": [
            "xaero/hud/minimap/world/state/MinimapWorldStateUpdater"
          ],
          "handler": "preferOverworldWpSetCustomPathOnDimUpdate",
          "kind": "wrap-operation",
          "method": "update",
          "at": "INVOKE",
          "at_target": "Lxaero/hud/minimap/world/state/MinimapWorldState;setAutoWorldPath(Lxaero/hud/path/XaeroPath;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapWorldStateUpdater",
          "targets": [
            "xaero/hud/minimap/world/state/MinimapWorldStateUpdater"
          ],
          "handler": "customDataFolderResolve",
          "kind": "inject",
          "method": "getAutoRootContainerPath",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/world/state/MinimapWorldStateUpdater#getAutoRootContainerPath HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinMinimapWriter",
          "targets": [
            "xaero/common/minimap/write/MinimapWriter"
          ],
          "handler": "overrideLoadSideReturn",
          "kind": "inject",
          "method": "getLoadSide",
          "at": "RETURN",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/common/minimap/write/MinimapWriter#getLoadSide RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinPatreon",
          "targets": [
            "xaero/lib/patreon/Patreon"
          ],
          "handler": "disableInternetAccessCheck",
          "kind": "inject",
          "method": "checkPatreon",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/lib/patreon/Patreon#checkPatreon HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinPlayerTeleporter",
          "targets": [
            "xaero/map/radar/tracker/PlayerTeleporter"
          ],
          "handler": "onTeleportAttemptA",
          "kind": "inject",
          "method": "teleport",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientPacketListener;sendCommand(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/radar/tracker/PlayerTeleporter#teleport INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinPlayerTeleporter",
          "targets": [
            "xaero/map/radar/tracker/PlayerTeleporter"
          ],
          "handler": "onTeleportAttemptB",
          "kind": "inject",
          "method": "teleport",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientPacketListener;sendChat(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/radar/tracker/PlayerTeleporter#teleport INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinRadarRenderer",
          "targets": [
            "xaero/hud/minimap/radar/render/element/RadarRenderer"
          ],
          "handler": "forceEntityRadarRenderSettings",
          "kind": "inject",
          "method": "setupRenderForEntity",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/radar/render/element/RadarRenderer#setupRenderForEntity RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinRadarRenderer",
          "targets": [
            "xaero/hud/minimap/radar/render/element/RadarRenderer"
          ],
          "handler": "adjustElementScaleForMinimapScaling",
          "kind": "inject",
          "method": "renderElement",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/radar/render/element/RadarRenderer#renderElement HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinRootConfig",
          "targets": [
            "xaero/hud/minimap/world/container/config/RootConfig"
          ],
          "handler": "checkGloballyDisabledTeleportation",
          "kind": "inject",
          "method": "isTeleportationEnabled",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/world/container/config/RootConfig#isTeleportationEnabled HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinSupportXaeroMinimap",
          "targets": [
            "xaero/map/mods/SupportXaeroMinimap"
          ],
          "handler": "waypointEqualityRedirect",
          "kind": "redirect",
          "method": "waypointExists",
          "at": "INVOKE",
          "at_target": "Ljava/util/ArrayList;contains(Ljava/lang/Object;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (redirect)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinSupportXaeroMinimap",
          "targets": [
            "xaero/map/mods/SupportXaeroMinimap"
          ],
          "handler": "getSubworldNameToRenderInject",
          "kind": "inject",
          "method": "getSubWorldNameToRender",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/mods/SupportXaeroMinimap#getSubWorldNameToRender HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinSupportXaeroWorldmap",
          "targets": [
            "xaero/common/mods/SupportXaeroWorldmap"
          ],
          "handler": "overrideRegionRange",
          "kind": "inject",
          "method": "drawMinimap",
          "at": "INVOKE",
          "at_target": "Lxaero/hud/minimap/config/util/MinimapConfigClientUtils;getEffectiveSlimeChunks(Lxaero/hud/minimap/module/MinimapSession;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/common/mods/SupportXaeroWorldmap#drawMinimap INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinSupportXaeroWorldmap",
          "targets": [
            "xaero/common/mods/SupportXaeroWorldmap"
          ],
          "handler": "hideSlimeChunksWhileDimSwitched",
          "kind": "wrap-with-condition",
          "method": "renderChunks",
          "at": "INVOKE",
          "at_target": "Lxaero/common/mods/SupportXaeroWorldmap;renderSlimeChunks(Lxaero/map/region/MapTileChunk;Ljava/lang/Long;IILcom/mojang/blaze3d/vertex/PoseStack;Lxaero/common/minimap/render/MinimapRendererHelper;Lcom/mojang/blaze3d/vertex/VertexConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinSupportXaeroWorldmap",
          "targets": [
            "xaero/common/mods/SupportXaeroWorldmap"
          ],
          "handler": "preventPossibleNPE",
          "kind": "inject",
          "method": "tryToGetMultiworldId",
          "at": "INVOKE",
          "at_target": "Lxaero/map/WorldMapSession;getMapProcessor()Lxaero/map/MapProcessor;",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/common/mods/SupportXaeroWorldmap#tryToGetMultiworldId INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWMBuiltInCustomUniforms",
          "targets": [
            "xaero/lib/client/graphics/shader/BuiltInCustomUniforms"
          ],
          "handler": "registerCustomMapUniform",
          "kind": "inject",
          "method": "registerAll",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/lib/client/graphics/shader/BuiltInCustomUniforms#registerAll RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointMapRenderer",
          "targets": [
            "xaero/hud/minimap/waypoint/render/WaypointMapRenderer"
          ],
          "handler": "limitDeathpointsRenderDistance",
          "kind": "inject",
          "method": "renderElement",
          "at": "INVOKE",
          "at_target": "Lxaero/common/minimap/waypoints/Waypoint;isDestination()Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/waypoint/render/WaypointMapRenderer#renderElement INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointMapRenderer",
          "targets": [
            "xaero/hud/minimap/waypoint/render/WaypointMapRenderer"
          ],
          "handler": "cancelWaypointSetChangeTooltip",
          "kind": "inject",
          "method": "drawSetChange",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/waypoint/render/WaypointMapRenderer#drawSetChange HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointReader",
          "targets": [
            "xaero/map/mods/gui/WaypointReader"
          ],
          "handler": "getRightClickOptionsReturn",
          "kind": "inject",
          "method": "getRightClickOptions",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/mods/gui/WaypointReader#getRightClickOptions RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointRenderer",
          "targets": [
            "xaero/map/mods/gui/WaypointRenderer"
          ],
          "handler": "disableAlphaAnimForLongWp",
          "kind": "wrap-operation",
          "method": "renderElement",
          "at": "INVOKE",
          "at_target": "Lxaero/map/mods/gui/Waypoint;getAlpha()F",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointRenderer",
          "targets": [
            "xaero/map/mods/gui/WaypointRenderer"
          ],
          "handler": "wrapSymbolIconGen",
          "kind": "wrap-operation",
          "method": "renderElement",
          "at": "INVOKE",
          "at_target": "Lxaero/map/mods/gui/WaypointSymbolCreator;getSymbolTexture(Lxaero/map/element/MapElementGraphics;Ljava/lang/String;)Lxaero/map/icon/XaeroIcon;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointRenderer",
          "targets": [
            "xaero/map/mods/gui/WaypointRenderer"
          ],
          "handler": "longWpRenderSymbolTextNonHovered",
          "kind": "wrap-operation",
          "method": "renderElement",
          "at": "INVOKE",
          "at_target": "Lxaero/map/mods/gui/Waypoint;getName()Ljava/lang/String;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointSharingHandler",
          "targets": [
            "xaero/hud/minimap/waypoint/WaypointSharingHandler"
          ],
          "handler": "shareWaypoint",
          "kind": "inject",
          "method": "shareWaypoint",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/waypoint/WaypointSharingHandler#shareWaypoint HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointSharingHandler",
          "targets": [
            "xaero/hud/minimap/waypoint/WaypointSharingHandler"
          ],
          "handler": "mutateWaypointSharingText",
          "kind": "inject",
          "method": "onShareConfirmationResult",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addRecentChat(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/waypoint/WaypointSharingHandler#onShareConfirmationResult INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointTeleport",
          "targets": [
            "xaero/hud/minimap/waypoint/WaypointTeleport"
          ],
          "handler": "onTeleportAttemptA",
          "kind": "inject",
          "method": "teleportToWaypoint",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientPacketListener;sendCommand(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/waypoint/WaypointTeleport#teleportToWaypoint INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointTeleport",
          "targets": [
            "xaero/hud/minimap/waypoint/WaypointTeleport"
          ],
          "handler": "onTeleportAttemptB",
          "kind": "inject",
          "method": "teleportToWaypoint",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientPacketListener;sendChat(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/waypoint/WaypointTeleport#teleportToWaypoint INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointTeleport",
          "targets": [
            "xaero/hud/minimap/waypoint/WaypointTeleport"
          ],
          "handler": "crossDimensionWpTeleportCommand",
          "kind": "wrap-operation",
          "method": "teleportToWaypoint",
          "at": "INVOKE",
          "at_target": "Ljava/lang/String;startsWith(Ljava/lang/String;)Z",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointWorldRenderer",
          "targets": [
            "xaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer"
          ],
          "handler": "limitDeathpointsRenderDistance",
          "kind": "inject",
          "method": "renderElement",
          "at": "INVOKE",
          "at_target": "Lxaero/common/minimap/waypoints/Waypoint;isDestination()Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer#renderElement INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointWorldRenderer",
          "targets": [
            "xaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer"
          ],
          "handler": "preferOwWaypointsRemoveSubworldText",
          "kind": "modify-arg",
          "method": "renderElement",
          "at": "INVOKE",
          "at_target": "Lxaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer;renderIconWithLabels(Lxaero/common/minimap/waypoints/Waypoint;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;FIILnet/minecraft/client/gui/Font;ILcom/mojang/blaze3d/vertex/PoseStack;Lxaero/lib/client/graphics/XaeroBufferProvider;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWaypointWorldRenderer",
          "targets": [
            "xaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer"
          ],
          "handler": "modifyDistanceText",
          "kind": "modify-arg",
          "method": "renderElement",
          "at": "INVOKE",
          "at_target": "Lxaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer;renderIconWithLabels(Lxaero/common/minimap/waypoints/Waypoint;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;FIILnet/minecraft/client/gui/Font;ILcom/mojang/blaze3d/vertex/PoseStack;Lxaero/lib/client/graphics/XaeroBufferProvider;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWidgetLoadingHandler",
          "targets": [
            "xaero/lib/client/gui/widget/online/WidgetLoadingHandler"
          ],
          "handler": "loadWidget",
          "kind": "overwrite",
          "method": "loadWidget",
          "at": "OVERWRITE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "an overwrite of the whole method: a hook changes one moment, not a method"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWorldDataReader",
          "targets": [
            "xaero/map/file/worldsave/WorldDataReader"
          ],
          "handler": "applyNetherCaveFix",
          "kind": "inject",
          "method": "buildTile",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at xaero/map/file/worldsave/WorldDataReader#buildTile HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/MixinWorldMapInternet",
          "targets": [
            "xaero/map/misc/Internet"
          ],
          "handler": "disableInternetAccessCheck",
          "kind": "inject",
          "method": "checkModVersion",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at xaero/map/misc/Internet#checkModVersion HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinAbstractBedBlock",
          "targets": [
            "net/minecraft/world/level/block/AbstractBedBlock"
          ],
          "handler": "checkBedSpawnPointSet",
          "kind": "inject",
          "method": "useWithoutItem",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/AbstractBedBlock#useWithoutItem HEAD"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onChunkDataPacket",
          "kind": "inject",
          "method": "handleLevelChunkWithLight",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientChunkCache;replaceWithPacketData(IILnet/minecraft/network/protocol/game/ClientboundLevelChunkPacketData;)Lnet/minecraft/world/level/chunk/LevelChunk;",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onChunkData",
          "kind": "inject",
          "method": "handleLevelChunkWithLight",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onChunkBlocksUpdate",
          "kind": "wrap-operation",
          "method": "handleChunkBlocksUpdate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket;runUpdates(Ljava/util/function/BiConsumer;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onBlockUpdate",
          "kind": "wrap-operation",
          "method": "handleBlockUpdate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/multiplayer/ClientLevel;setServerVerifiedBlockState(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-operation)"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onBlockEntityData",
          "kind": "inject",
          "method": "handleBlockEntityData",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onClientSessionClose",
          "kind": "inject",
          "method": "close",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onTeleport",
          "kind": "inject",
          "method": "handleMovePlayer",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onGameEvent",
          "kind": "inject",
          "method": "handleGameEvent",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "renderTickHead",
          "kind": "inject",
          "method": "runTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "frame",
          "why": "RenderFrameEvent.Pre: once a frame, before it draws"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "tickHead",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "tickReturn",
          "kind": "inject",
          "method": "tick",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onLevelChangePre",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_level_load",
          "why": "LevelEvent.Load: a level is set on the client"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onLevelChangePost",
          "kind": "inject",
          "method": "setLevel",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#setLevel RETURN"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinMinecraft",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onDestroy",
          "kind": "inject",
          "method": "exitWorldAndClose",
          "at": "INVOKE",
          "at_target": "Lorg/slf4j/Logger;info(Ljava/lang/String;)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/Minecraft#exitWorldAndClose INVOKE"
        },
        {
          "mixin": "xaeroplus/mixin/client/mc/MixinRespawnAnchor",
          "targets": [
            "net/minecraft/world/level/block/RespawnAnchorBlock"
          ],
          "handler": "checkRespawnAnchorRespawnPointSet",
          "kind": "inject",
          "method": "useWithoutItem",
          "at": "FIELD",
          "at_target": "Lnet/minecraft/world/InteractionResult;CONSUME:Lnet/minecraft/world/InteractionResult$Success;",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/block/RespawnAnchorBlock#useWithoutItem FIELD"
        }
      ],
      "listening": 73,
      "accessors": 9,
      "hooks": {
        "client_level_load": 1,
        "frame": 1,
        "net_from_server": 6,
        "screen_opening": 1,
        "tick": 2
      },
      "wanted": {
        "net/minecraft/client/Minecraft#setLevel @RETURN": 1,
        "net/minecraft/client/renderer/LevelRenderer#submitBlockEntities @HEAD": 1,
        "net/minecraft/world/level/block/AbstractBedBlock#useWithoutItem @HEAD": 1,
        "xaero/common/HudMod#loadCommon @HEAD": 1,
        "xaero/common/HudMod#loadLater @RETURN": 1,
        "xaero/common/events/ClientEvents#handleClientPlayerChatReceivedEvent @HEAD": 1,
        "xaero/common/events/ClientEvents#handleClientSystemChatReceivedEvent @HEAD": 1,
        "xaero/common/gui/GuiEntityRadarSettings#<init> @RETURN": 1,
        "xaero/common/gui/GuiMinimapMain#<init> @RETURN": 1,
        "xaero/common/gui/GuiMinimapViewSettings#<init> @RETURN": 1,
        "xaero/common/gui/GuiWaypointSettings#<init> @RETURN": 1,
        "xaero/common/gui/GuiWaypoints#init @HEAD": 1,
        "xaero/common/minimap/render/MinimapFBORenderer#renderChunksToFBO @HEAD": 1,
        "xaero/common/minimap/render/MinimapRenderer#renderMinimap @HEAD": 2,
        "xaero/common/minimap/write/MinimapWriter#getLoadSide @RETURN": 1,
        "xaero/common/misc/Internet#checkModVersion @HEAD": 1,
        "xaero/hud/minimap/config/util/MinimapConfigClientUtils#getEffectiveMinimapSize @RETURN": 1,
        "xaero/hud/minimap/module/MinimapRenderer#render @HEAD": 1,
        "xaero/hud/minimap/radar/render/element/RadarRenderer#renderElement @HEAD": 1,
        "xaero/hud/minimap/radar/render/element/RadarRenderer#setupRenderForEntity @RETURN": 1,
        "xaero/hud/minimap/waypoint/WaypointSharingHandler#shareWaypoint @HEAD": 1,
        "xaero/hud/minimap/waypoint/render/WaypointMapRenderer#drawSetChange @HEAD": 1,
        "xaero/hud/minimap/world/container/config/RootConfig#isTeleportationEnabled @HEAD": 1,
        "xaero/hud/minimap/world/state/MinimapWorldStateUpdater#getAutoRootContainerPath @HEAD": 1,
        "xaero/lib/client/graphics/shader/BuiltInCustomUniforms#registerAll @RETURN": 1,
        "xaero/lib/client/gui/GuiSettings#init @HEAD": 1,
        "xaero/lib/client/gui/GuiSettings#init @RETURN": 1,
        "xaero/lib/common/util/IOUtils#safeMoveAndReplace @HEAD": 1,
        "xaero/lib/patreon/Patreon#checkPatreon @HEAD": 1,
        "xaero/map/MapProcessor#getCurrentDimension @HEAD": 1,
        "xaero/map/MapProcessor#getDimensionName @HEAD": 1,
        "xaero/map/MapProcessor#getMainId @HEAD": 1,
        "xaero/map/MapProcessor#onClientTickStart @RETURN": 1,
        "xaero/map/MapProcessor#onWorldUnload @HEAD": 1,
        "xaero/map/MapWriter#loadPixel @HEAD": 2,
        "xaero/map/MapWriter#onRender @HEAD": 1,
        "xaero/map/MapWriter#onRender @RETURN": 1,
        "xaero/map/WorldMap#loadCommon @HEAD": 1,
        "xaero/map/file/MapSaveLoad#getOldFolder @HEAD": 1,
        "xaero/map/file/worldsave/WorldDataReader#buildTile @HEAD": 1,
        "xaero/map/gui/GuiMap#extractRenderState @HEAD": 1,
        "xaero/map/gui/GuiMap#extractRenderState @RETURN": 1,
        "xaero/map/gui/GuiMap#getRightClickOptions @RETURN": 1,
        "xaero/map/gui/GuiMap#init @RETURN": 1,
        "xaero/map/gui/GuiMap#keyPressed @HEAD": 1,
        "xaero/map/gui/GuiMap#keyPressed @RETURN": 1,
        "xaero/map/gui/GuiMap#mouseClicked @HEAD": 1,
        "xaero/map/gui/GuiMap#mouseReleased @HEAD": 1,
        "xaero/map/gui/GuiMap#onDimensionToggleButton @RETURN": 1,
        "xaero/map/gui/GuiMap#onInputPress @HEAD": 1,
        "xaero/map/gui/GuiMap#onInputRelease @HEAD": 1,
        "xaero/map/gui/GuiMap#shouldSkipWorldRender @HEAD": 1,
        "xaero/map/gui/GuiMap#tick @RETURN": 1,
        "xaero/map/gui/GuiWorldMapSettings#<init> @RETURN": 1,
        "xaero/map/misc/Internet#checkModVersion @HEAD": 1,
        "xaero/map/mods/SupportXaeroMinimap#getSubWorldNameToRender @HEAD": 1,
        "xaero/map/mods/gui/WaypointReader#getRightClickOptions @RETURN": 1,
        "xaero/map/region/MapPixel#getPixelColours @RETURN": 1,
        "xaero/map/region/MapTileChunk#readCacheData @RETURN": 1,
        "xaero/map/region/MapTileChunk#setTile @HEAD": 1,
        "xaero/map/world/MapDimension#getWorldSaveRegionDetection @HEAD": 1
      },
      "wanted_calls": {
        "java/lang/String#startsWith @INVOKE (wrap-operation)": 1,
        "java/lang/Thread#sleep @INVOKE (redirect)": 1,
        "java/nio/file/Path#resolve @INVOKE (wrap-operation)": 1,
        "java/nio/file/Path#resolveSibling @INVOKE (wrap-operation)": 1,
        "java/util/ArrayList#add @INVOKE (redirect)": 1,
        "java/util/ArrayList#contains @INVOKE (redirect)": 1,
        "net/minecraft/client/Minecraft#exitWorldAndClose @INVOKE": 1,
        "net/minecraft/client/multiplayer/ClientLevel#setServerVerifiedBlockState @INVOKE (wrap-operation)": 1,
        "net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket#runUpdates @INVOKE (wrap-operation)": 1,
        "net/minecraft/world/level/block/RespawnAnchorBlock#useWithoutItem @FIELD": 1,
        "net/minecraft/world/level/block/state/BlockState#getLightDampening @INVOKE (wrap-operation)": 1,
        "org/joml/Matrix4fStack#translate @INVOKE (redirect)": 2,
        "xaero/common/core/IPictureInPictureRenderer#xaero_mm_prepareTexturesAndProjection @INVOKE (wrap-with-condition)": 1,
        "xaero/common/graphics/renderer/multitexture/MultiTextureRenderTypeRendererProvider#draw @INVOKE (wrap-operation)": 1,
        "xaero/common/gui/GuiWaypoints#isOneSelected @INVOKE (redirect)": 1,
        "xaero/common/minimap/render/MinimapFBORenderer#renderChunksToFBO @INVOKE (modify-arg)": 1,
        "xaero/common/minimap/render/MinimapRendererHelper#addColoredLineToExistingBuffer @INVOKE (modify-arg)": 1,
        "xaero/common/minimap/waypoints/Waypoint#isThirdParty @INVOKE (wrap-operation)": 1,
        "xaero/common/mods/SupportXaeroWorldmap#drawMinimap @INVOKE": 1,
        "xaero/common/mods/SupportXaeroWorldmap#drawMinimap @INVOKE (wrap-operation)": 1,
        "xaero/common/mods/SupportXaeroWorldmap#renderSlimeChunks @INVOKE (wrap-with-condition)": 1,
        "xaero/common/mods/SupportXaeroWorldmap#tryToGetMultiworldId @INVOKE": 1,
        "xaero/hud/minimap/Minimap#checkCrashes @OVERWRITE": 1,
        "xaero/hud/minimap/element/render/over/MinimapElementOverMapRendererHandler#prepareRender @INVOKE (modify-arg)": 1,
        "xaero/hud/minimap/info/render/compile/InfoDisplayCompiler#addWords @INVOKE (wrap-operation)": 1,
        "xaero/hud/minimap/module/MinimapSession#getHideMinimapUnderScreen @INVOKE (redirect)": 1,
        "xaero/hud/minimap/render/MinimapPipRenderer#renderToTexture @INVOKE (wrap-with-condition)": 1,
        "xaero/hud/minimap/waypoint/WaypointSharingHandler#onShareConfirmationResult @INVOKE": 1,
        "xaero/hud/minimap/waypoint/WaypointTeleport#teleportToWaypoint @INVOKE": 2,
        "xaero/hud/minimap/waypoint/render/WaypointMapRenderer#renderElement @INVOKE": 1,
        "xaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer#renderElement @INVOKE": 1,
        "xaero/hud/minimap/waypoint/render/world/WaypointWorldRenderer#renderIconWithLabels @INVOKE (modify-arg)": 2,
        "xaero/hud/minimap/world/state/MinimapWorldState#setAutoWorldPath @INVOKE (wrap-operation)": 1,
        "xaero/lib/client/graphics/XaeroBufferProvider#endBatch @INVOKE (wrap-operation)": 1,
        "xaero/lib/client/graphics/util/ImmediateRenderUtil#texturedRect @INVOKE (wrap-operation)": 1,
        "xaero/lib/client/graphics/util/TextureUtils#clearRenderTarget @INVOKE (wrap-operation)": 1,
        "xaero/lib/client/gui/ISettingEntry#createWidget @INVOKE (wrap-operation)": 1,
        "xaero/lib/client/gui/widget/online/WidgetLoadingHandler#loadWidget @OVERWRITE": 1,
        "xaero/map/CrashHandler#checkForCrashes @OVERWRITE": 1,
        "xaero/map/MapProcessor#currentWorldId:Ljava/lang/String; @FIELD (wrap-operation)": 1,
        "xaero/map/MapProcessor#getLeafMapRegion @INVOKE (wrap-operation)": 1,
        "xaero/map/MapProcessor#getLeafMapRegion @NEW (redirect)": 1,
        "xaero/map/MapProcessor#updateWorldSynced @INVOKE": 2,
        "xaero/map/MapWriter#loadPixel @INVOKE": 1,
        "xaero/map/cache/BlockStateShortShapeCache#ioThreadWaitingForSupplier:Ljava/util/function/Supplier; @FIELD (wrap-operation)": 1,
        "xaero/map/file/MapSaveLoad#saveRegion @INVOKE": 2,
        "xaero/map/file/MapSaveLoad#saveRegion @NEW (redirect)": 1,
        "xaero/map/graphics/CustomRenderTypes#MAP:Lnet/minecraft/client/renderer/rendertype/RenderType; @FIELD (wrap-operation)": 1,
        "xaero/map/graphics/CustomRenderTypes#MAP_FRAME:Lnet/minecraft/client/renderer/rendertype/RenderType; @FIELD (wrap-operation)": 1,
        "xaero/map/graphics/CustomRenderTypes#applyFixedOrder @INVOKE": 1,
        "xaero/map/graphics/MapRenderHelper#drawCenteredStringWithBackground @INVOKE (modify-arg)": 2,
        "xaero/map/graphics/MapRenderHelper#fillIntoExistingBuffer @INVOKE (wrap-with-condition)": 2,
        "xaero/map/graphics/renderer/multitexture/MultiTextureRenderTypeRendererProvider#draw @INVOKE (wrap-operation)": 2,
        "xaero/map/gui/GuiMap#applyZoomLimits @INVOKE (wrap-operation)": 2,
        "xaero/map/gui/GuiMap#cameraX:D @FIELD (redirect)": 1,
        "xaero/map/gui/GuiMap#cameraZ:D @FIELD (redirect)": 1,
        "xaero/map/gui/GuiMap#extractRenderState @FIELD": 2,
        "xaero/map/gui/GuiMap#extractRenderState @INVOKE": 5,
        "xaero/map/mods/gui/Waypoint#getAlpha @INVOKE (wrap-operation)": 1,
        "xaero/map/mods/gui/Waypoint#getName @INVOKE (wrap-operation)": 1,
        "xaero/map/mods/gui/WaypointSymbolCreator#getSymbolTexture @INVOKE (wrap-operation)": 1,
        "xaero/map/radar/tracker/PlayerTeleporter#teleport @INVOKE": 2,
        "xaero/map/region/LayeredRegionManager#getLayer @NEW (redirect)": 1,
        "xaero/map/region/LeveledRegion#saveCacheTextures @INVOKE": 1,
        "xaero/map/region/LeveledRegion#saveCacheTextures @NEW (redirect)": 1,
        "xaero/map/region/OverlayBuilder#isEmpty @INVOKE (wrap-operation)": 1,
        "xaero/map/teleport/MapTeleporter#teleport @INVOKE": 2,
        "xaero/map/world/MapWorld#currentDimensionId:Lnet/minecraft/resources/ResourceKey; @FIELD (wrap-operation)": 1,
        "xaero/map/world/MapWorld#getCurrentDimension @INVOKE (wrap-operation)": 3,
        "xaero/map/world/MapWorld#getCurrentDimension @OVERWRITE": 1,
        "xaero/map/world/MapWorld#getCurrentDimensionId @INVOKE (wrap-operation)": 1
      },
      "api": [
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 4
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 3
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientLifecycleEvents$ClientStarted",
          "horizon": "hook:world_lifecycle",
          "note": "the client starts and stops",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "CustomValue",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricClientCommandSource",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "SemanticVersion",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "VersionParsingException",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 1298,
        "features": {
          "screen": 6,
          "command": 1,
          "events": 1,
          "mixin": 71
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 1298,
        "methods": 7850,
        "tried": 600,
        "completed": 316,
        "handlers_tried": 11,
        "handlers_completed": 2,
        "missing": {
          "[Lorg/rfresh/sqlite/SQLiteConfig$DateClass;#clone()Ljava/lang/Object;": 1,
          "[Lxaeroplus/event/Phase;#clone()Ljava/lang/Object;": 1,
          "[Lxaeroplus/feature/drawing/ColorPickerWidget$ColorChannel;#clone()Ljava/lang/Object;": 1,
          "[Lxaeroplus/settings/SettingLocation;#clone()Ljava/lang/Object;": 1,
          "[Lxaeroplus/settings/Settings$PaletteNewChunksRescanAge;#clone()Ljava/lang/Object;": 1,
          "[Lxaeroplus/util/DrawingMode;#clone()Ljava/lang/Object;": 1,
          "com/github/benmanes/caffeine/cache/PSAWR#ACCESS_TIME": 2,
          "com/github/benmanes/caffeine/cache/References$WeakKeyEqualsReference#objectEquals(Ljava/lang/Object;)Z": 1,
          "com/github/benmanes/caffeine/cache/References$WeakKeyReference#referenceEquals(Ljava/lang/Object;)Z": 1,
          "com/mojang/brigadier/builder/LiteralArgumentBuilder#literal(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;": 1,
          "com/mojang/brigadier/builder/RequiredArgumentBuilder#argument(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder;": 1,
          "it/unimi/dsi/fastutil/longs/Long2ObjectMaps#emptyMap()Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;": 1,
          "java/lang/Class#cast(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/lang/Class#getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;": 1,
          "java/lang/Class#isInstance(Ljava/lang/Object;)Z": 1,
          "java/lang/Integer#numberOfLeadingZeros(I)I": 1,
          "java/lang/invoke/MethodHandles$Lookup#lookupClass()Ljava/lang/Class;": 1,
          "java/lang/invoke/VarHandle#compareAndSet(Lcom/github/benmanes/caffeine/cache/FSR;JJ)Z": 1,
          "java/lang/invoke/VarHandle#compareAndSet(Lcom/github/benmanes/caffeine/cache/PDAR;JJ)Z": 1,
          "java/lang/invoke/VarHandle#compareAndSet(Lcom/github/benmanes/caffeine/cache/PWA;JJ)Z": 1,
          "java/lang/invoke/VarHandle#get(Lcom/github/benmanes/caffeine/cache/SISMS;)J": 2,
          "java/lang/invoke/VarHandle#get(Lcom/github/benmanes/caffeine/cache/SISMW;)J": 2,
          "java/lang/invoke/VarHandle#get(Lcom/github/benmanes/caffeine/cache/SSLMS;)J": 2,
          "java/lang/invoke/VarHandle#get(Lcom/github/benmanes/caffeine/cache/SSSMW;)J": 2,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/PW;)Lcom/github/benmanes/caffeine/cache/References$WeakValueReference;": 6,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/PW;)Ljava/lang/Object;": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/PW;)Ljava/lang/ref/Reference;": 3,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SILAW;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SILAWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SILMWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SILSMSAW;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SILSMSAWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SILSMWAW;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SIMWAW;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SISMS;)J": 2,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SISMSA;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SISMSAR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SISMW;)J": 2,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSAR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSLMS;)J": 2,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSLMSR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSLMSWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSLSMSA;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSLSMSAWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSMSAWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSMWW;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSSMSA;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSSMSAWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/SSSMW;)J": 2,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WIA;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WILMWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WILMWWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WILSMSAWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WILSMSW;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WILSMWAW;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WISMSAR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WISMSW;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WSLA;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WSLMSA;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WSLMSWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WSLMWAWR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WSLSAR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WSLSMSR;)J": 1,
          "java/lang/invoke/VarHandle#getAcquire(Lcom/github/benmanes/caffeine/cache/WSMSR;)J": 1,
          "java/lang/invoke/VarHandle#getOpaque(Lcom/github/benmanes/caffeine/cache/FSR;)J": 1,
          "java/lang/invoke/VarHandle#getOpaque(Lcom/github/benmanes/caffeine/cache/PDAR;)J": 1,
          "java/lang/invoke/VarHandle#getOpaque(Lcom/github/benmanes/caffeine/cache/PW;)Lcom/github/benmanes/caffeine/cache/References$WeakValueReference;": 2,
          "java/lang/invoke/VarHandle#getOpaque(Lcom/github/benmanes/caffeine/cache/PWA;)J": 2,
          "java/lang/invoke/VarHandle#set(Lcom/github/benmanes/caffeine/cache/FSR;J)V": 1,
          "java/lang/invoke/VarHandle#set(Lcom/github/benmanes/caffeine/cache/PDAR;J)V": 1,
          "java/lang/invoke/VarHandle#set([Ljava/lang/Object;ILjava/lang/Object;)V": 1,
          "java/lang/invoke/VarHandle#setOpaque(Lcom/github/benmanes/caffeine/cache/PWA;J)V": 2,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SILAW;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SILAWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SILMWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SILSMSAW;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SILSMSAWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SILSMWAW;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SIMWAW;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SISMS;J)V": 2,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SISMSA;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SISMSAR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SISMW;J)V": 2,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSAR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSLMS;J)V": 2,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSLMSR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSLMSWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSLSMSA;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSLSMSAWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSMSAWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSMWW;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSSMSA;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSSMSAWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/SSSMW;J)V": 2,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WIA;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WILMWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WILMWWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WILSMSAWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WILSMSW;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WILSMWAW;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WISMSAR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WISMSW;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WSLA;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WSLMSA;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WSLMSWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WSLMWAWR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WSLSAR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WSLSMSR;J)V": 1,
          "java/lang/invoke/VarHandle#setRelease(Lcom/github/benmanes/caffeine/cache/WSMSR;J)V": 1,
          "java/lang/reflect/Method#getParameterCount()I": 1,
          "java/lang/reflect/Method#setAccessible(Z)V": 1,
          "java/sql/Connection#createStatement()Ljava/sql/Statement;": 1,
          "java/util/Calendar#get(I)I": 2,
          "java/util/Collections#emptyMap()Ljava/util/Map;": 1,
          "java/util/Iterator#remove()V": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/concurrent/CompletableFuture#isDone()Z": 1,
          "java/util/concurrent/ThreadLocalRandom#current()Ljava/util/concurrent/ThreadLocalRandom;": 1,
          "java/util/concurrent/TimeUnit#NANOSECONDS": 1,
          "kaptainwutax/mcutils/version/MCVersion#compareTo(Ljava/lang/Enum;)I": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/components/EditBox#getValue()Ljava/lang/String;": 1,
          "net/minecraft/client/gui/screens/Screen#extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "net/minecraft/client/gui/screens/Screen#mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z": 1,
          "net/minecraft/client/resources/language/I18n#get(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 1,
          "net/minecraft/network/protocol/game/ClientboundGameEventPacket#getEvent()Lnet/minecraft/network/protocol/game/ClientboundGameEventPacket$Type;": 1,
          "net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket#x()I": 2,
          "new net/minecraft/client/gui/components/EditBox": 1,
          "new xaero/map/gui/ScreenSwitchSettingEntry": 1,
          "org/apache/commons/lang3/ArrayUtils#indexOf([Ljava/lang/Object;Ljava/lang/Object;)I": 3,
          "org/rfresh/sqlite/SQLiteConfig$DateClass#name()Ljava/lang/String;": 1,
          "xaeroplus/feature/extensions/DrawOrderScreen#getFocused()Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "xaeroplus/feature/extensions/DrawOrderScreen$DrawFeatureList#children()Ljava/util/List;": 2,
          "xaeroplus/feature/extensions/DrawOrderScreen$DrawFeatureList#extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1
        },
        "runs": [
          {
            "class": "com/github/benmanes/caffeine/cache/WISMSW",
            "method": "expiresAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SILMWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "evicts",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "windowMaximum",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "windowWeightedSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "mainProtectedMaximum",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "mainProtectedWeightedSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "stepSize",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "adjustment",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "hitsInSample",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "missesInSample",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "previousSampleHitRate",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMW",
            "method": "fastpath",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WIA",
            "method": "expiresVariable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WIA",
            "method": "expiresAfterAccess",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaeroplus/feature/extensions/DrawOrderScreen$DrawFeatureList",
            "method": "getRowWidth",
            "desc": "()I",
            "value": "300"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SnapshotEntry$CompleteEntry",
            "method": "refreshableAt",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/PW",
            "method": "weakValues",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SILSMSAW",
            "method": "expiresAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/LocalAsyncCache$AsMapView$KeyIterator",
            "method": "hasNext",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/PWAWRMW",
            "method": "getQueueType",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/PWAWRMW",
            "method": "getWeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/PWAWRMW",
            "method": "getPolicyWeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMSAWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "evicts",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "windowMaximum",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "windowWeightedSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "mainProtectedMaximum",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "mainProtectedWeightedSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "stepSize",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "adjustment",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "hitsInSample",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "missesInSample",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMW",
            "method": "previousSampleHitRate",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WISMSAR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WSLMSWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "kaptainwutax/biomeutils/source/MultiNoiseBiomeSource",
            "method": "is3D",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/RemovalCause$5",
            "method": "wasEvicted",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaeroplus/feature/db/DatabaseMigration",
            "method": "isCorruptDatabase",
            "desc": "(Ljava/lang/Throwable;)Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SILAWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaeroplus/settings/EnumSetting",
            "method": "builder",
            "desc": "()Lxaeroplus/settings/EnumSetting$Builder;",
            "value": "obj#201"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WILSMSAWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMSAR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "evicts",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "windowMaximum",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "windowWeightedSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "mainProtectedMaximum",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "mainProtectedWeightedSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "stepSize",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "adjustment",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "hitsInSample",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "missesInSample",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMS",
            "method": "previousSampleHitRate",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLSMSAWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "kaptainwutax/biomeutils/layer/BiomeLayer",
            "method": "getScale",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "kaptainwutax/biomeutils/layer/BiomeLayer",
            "method": "getLayerId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "kaptainwutax/biomeutils/layer/BiomeLayer",
            "method": "getHintSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "kaptainwutax/biomeutils/layer/BiomeLayer",
            "method": "getMidSalt",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "kaptainwutax/biomeutils/layer/BiomeLayer",
            "method": "getLayerSeed",
            "desc": "(JJ)J",
            "value": "0"
          },
          {
            "class": "kaptainwutax/biomeutils/layer/BiomeLayer",
            "method": "getLocalSeed",
            "desc": "(JII)J",
            "value": "0"
          },
          {
            "class": "kaptainwutax/biomeutils/layer/BiomeLayer",
            "method": "getLocalSeed",
            "desc": "(JJII)J",
            "value": "0"
          },
          {
            "class": "kaptainwutax/biomeutils/layer/BiomeLayer",
            "method": "choose",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "kaptainwutax/biomeutils/layer/BiomeLayer",
            "method": "choose",
            "desc": "(IIII)I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WSLSMSR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SIMWAW",
            "method": "expiresAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WILSMSW",
            "method": "expiresAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/rfresh/sqlite/date/FastDateParser$3",
            "method": "modify",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "org/rfresh/sqlite/date/FastDatePrinter$PaddedNumberField",
            "method": "estimateLength",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLSMSA",
            "method": "fastpath",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLSMSA",
            "method": "expiresVariable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLSMSA",
            "method": "expiresAfterAccess",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/References$WeakKeyEqualsReference",
            "method": "getKeyReference",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#329"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/References$WeakKeyEqualsReference",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/Pacer",
            "method": "isScheduled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/Pacer",
            "method": "maySkip",
            "desc": "(J)Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "evicts",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "windowMaximum",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "windowWeightedSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "mainProtectedMaximum",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "mainProtectedWeightedSize",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "stepSize",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "adjustment",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "hitsInSample",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "missesInSample",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "previousSampleHitRate",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMS",
            "method": "fastpath",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WSLA",
            "method": "expiresVariable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WSLA",
            "method": "expiresAfterAccess",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WILMWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSMSAWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaeroplus/feature/render/highlight/AbstractHighlightVertexBuffer",
            "method": "needsRefresh",
            "desc": "(Lxaeroplus/feature/render/DrawContext;)Z",
            "value": "1"
          },
          {
            "class": "net/lenni0451/lambdaevents/utils/EventUtils$1",
            "method": "priority",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "net/lenni0451/lambdaevents/utils/EventUtils$1",
            "method": "events",
            "desc": "()[Ljava/lang/Class;",
            "value": "obj#405"
          },
          {
            "class": "net/lenni0451/lambdaevents/utils/EventUtils$1",
            "method": "handleCancelled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/LocalAsyncCache$AsMapView$EntrySet",
            "method": "contains",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/LocalAsyncCache$AsMapView$EntrySet",
            "method": "remove",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SILSMSAWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMSA",
            "method": "expiresVariable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SISMSA",
            "method": "expiresAfterAccess",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SnapshotEntry",
            "method": "weight",
            "desc": "()I",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SnapshotEntry",
            "method": "expiresAt",
            "desc": "()J",
            "value": "-1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SnapshotEntry",
            "method": "refreshableAt",
            "desc": "()J",
            "value": "-1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SnapshotEntry",
            "method": "snapshotAt",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SnapshotEntry",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SnapshotEntry",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/FDAWMS",
            "method": "getQueueType",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SILSMWAW",
            "method": "expiresAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/FrequencySketch",
            "method": "isNotInitialized",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/FrequencySketch",
            "method": "frequency",
            "desc": "(Ljava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/FrequencySketch",
            "method": "spread",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/FrequencySketch",
            "method": "rehash",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SIS",
            "method": "isRecordingStats",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SIS",
            "method": "statsTicker",
            "desc": "()Lcom/github/benmanes/caffeine/cache/Ticker;",
            "value": "obj#478"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSMWW",
            "method": "expiresAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMSA",
            "method": "fastpath",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMSA",
            "method": "expiresVariable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSSMSA",
            "method": "expiresAfterAccess",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "org/rfresh/sqlite/date/FastDatePrinter$TwoDigitNumberField",
            "method": "estimateLength",
            "desc": "()I",
            "value": "2"
          },
          {
            "class": "xaeroplus/util/compat/GuiMapAsmWorkaroundMixinPlugin",
            "method": "shouldApplyMixin",
            "desc": "(Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "kaptainwutax/biomeutils/source/LayeredBiomeSource",
            "method": "getLayerCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/References$WeakKeyReference",
            "method": "getKeyReference",
            "desc": "()Ljava/lang/Object;",
            "value": "obj#559"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/References$WeakKeyReference",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WILSMWAW",
            "method": "expiresAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaeroplus/module/impl/RegionGrid",
            "method": "getLines",
            "desc": "(IIILnet/minecraft/resources/ResourceKey;)Ljava/util/List;",
            "value": "obj#578"
          },
          {
            "class": "xaeroplus/module/impl/RegionGrid",
            "method": "getColor",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaeroplus/module/impl/RegionGrid",
            "method": "getLineWidth",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WSLSAR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMSWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSLMSR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SnapshotEntry$RefreshableExpirableEntry",
            "method": "refreshableAt",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SILAW",
            "method": "expiresAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WSLMSA",
            "method": "expiresVariable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WSLMSA",
            "method": "expiresAfterAccess",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WILMWWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/PWWMS",
            "method": "getQueueType",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSAR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WSMSR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/SSR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "net/lenni0451/lambdaevents/utils/EventUtils",
            "method": "newEventHandler",
            "desc": "(I)Lnet/lenni0451/lambdaevents/EventHandler;",
            "value": "obj#716"
          },
          {
            "class": "com/github/benmanes/caffeine/cache/WSLMWAWR",
            "method": "refreshAfterWrite",
            "desc": "()Z",
            "value": "1"
          }
        ],
        "insns": 8497
      },
      "verdict": "no",
      "summary": "only 11 of 73 listening patch sites have a hook (15%): its patches are call-site or whole-method rewrites of internals (a renderer, a scheduler, a data structure), which Horizon has its own of — there is no moment to hook"
    },
    {
      "mod_id": "xaerominimap",
      "name": "Xaero's Minimap",
      "version": "26.6.2",
      "license": "All Rights Reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "xaero/minimap/XaeroMinimapFabric"
        },
        {
          "kind": "modmenu",
          "value": "xaero/common/XaeroHudModMenu"
        },
        {
          "kind": "server",
          "value": "xaero/minimap/XaeroMinimapFabric"
        }
      ],
      "mixin_configs": [
        "xaerohud.mixins.json",
        "xaerohud.fabric.mixins.json",
        "xaerominimap.mixins.json",
        "xaerominimap.fabric.mixins.json"
      ],
      "depends": [
        "xaerolib"
      ],
      "classes": 678,
      "methods": 4481,
      "sites": [
        {
          "mixin": "xaero/common/mixin/MixinChatListener",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "onHandleDisguisedChatMessag",
          "kind": "inject",
          "method": "handleDisguisedChatMessage",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/ChatListener#handleDisguisedChatMessage HEAD"
        },
        {
          "mixin": "xaero/common/mixin/MixinChatListener",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "onHandleSystemChat",
          "kind": "inject",
          "method": "handleSystemMessage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addServerSystemMessage(Lnet/minecraft/network/chat/Component;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/ChatListener#handleSystemMessage INVOKE"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onOnChunkDeltaUpdate",
          "kind": "inject",
          "method": "handleChunkBlocksUpdate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onHandleLevelChunkWithLight",
          "kind": "inject",
          "method": "handleLevelChunkWithLight",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onHandleLightUpdatePacket",
          "kind": "inject",
          "method": "handleLightUpdatePacket",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onQueueLightRemoval",
          "kind": "inject",
          "method": "queueLightRemoval",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onOnBlockUpdate",
          "kind": "inject",
          "method": "handleBlockUpdate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onOnPlayerSpawnPosition",
          "kind": "inject",
          "method": "handleSetSpawn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onOnGameJoin",
          "kind": "inject",
          "method": "handleLogin",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onClose",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onSendCommand",
          "kind": "inject",
          "method": "sendCommand",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onSendUnattendedCommand",
          "kind": "inject",
          "method": "sendUnattendedCommand",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinClientPlayerEntity",
          "targets": [
            "net/minecraft/client/player/LocalPlayer"
          ],
          "handler": "onTickStart",
          "kind": "inject",
          "method": "respawn",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/player/LocalPlayer#respawn HEAD"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricBossBarHud",
          "targets": [
            "net/minecraft/client/gui/components/BossHealthOverlay"
          ],
          "handler": "onRenderBossBar",
          "kind": "inject",
          "method": "extractBar",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/components/BossHealthOverlay#extractBar HEAD"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricChatListener",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "onShowMessageToPlayer",
          "kind": "inject",
          "method": "showMessageToPlayer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addPlayerMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/ChatListener#showMessageToPlayer INVOKE"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onSendChat",
          "kind": "inject",
          "method": "sendChat",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "onRenderStart",
          "kind": "inject",
          "method": "extract",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#extract HEAD"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricGui",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "onRenderGuiEnd",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "gui_render_post",
          "why": "RenderGuiEvent.Post: the whole GUI has drawn"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricGui",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "onOpenScreen",
          "kind": "inject",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "screen_opening",
          "why": "ScreenEvent.Opening: a screen opens"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onTickStart",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onDisconnect",
          "kind": "inject",
          "method": "disconnect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_disconnecting",
          "why": "ClientPlayerNetworkEvent.LoggingOut: the connection ends"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onJoinWorld",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_level_load",
          "why": "LevelEvent.Load: a level is set on the client"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricMinecraftServer",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tickServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "server_tick",
          "why": "ServerTickEvent.Pre/Post"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricPlayerEntity",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "onTickStart",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "player_tick",
          "why": "PlayerTickEvent: a player ticks"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricPlayerList",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "onPlaceNewPlayer",
          "kind": "inject",
          "method": "placeNewPlayer",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "player_logged_in",
          "why": "PlayerEvent.PlayerLoggedInEvent"
        },
        {
          "mixin": "xaero/common/mixin/MixinFabricSpriteAtlasTexture",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "onUpload",
          "kind": "inject",
          "method": "upload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureAtlas#upload RETURN"
        },
        {
          "mixin": "xaero/common/mixin/MixinGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "renderLevel",
          "kind": "modify-arg",
          "method": "renderLevel",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/renderer/ProjectionMatrixBuffer;getBuffer(Lorg/joml/Matrix4f;)Lcom/mojang/renderpearl/api/buffers/GpuBufferSlice;",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "xaero/common/mixin/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "onRenderPre",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#render HEAD"
        },
        {
          "mixin": "xaero/common/mixin/MixinGuiRenderer",
          "targets": [
            "net/minecraft/client/gui/render/GuiRenderer"
          ],
          "handler": "onRenderPost",
          "kind": "inject",
          "method": "render",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/gui/render/GuiRenderer#render RETURN"
        },
        {
          "mixin": "xaero/common/mixin/MixinLevelStorageAccess",
          "targets": [
            "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess"
          ],
          "handler": "onDeleteLevel",
          "kind": "inject",
          "method": "deleteLevel",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#deleteLevel RETURN"
        },
        {
          "mixin": "xaero/common/mixin/MixinModel",
          "targets": [
            "net/minecraft/client/model/Model"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "renderToBuffer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/Model#renderToBuffer HEAD"
        },
        {
          "mixin": "xaero/common/mixin/MixinModelFeatureRenderer",
          "targets": [
            "net/minecraft/client/renderer/feature/ModelFeatureRenderer"
          ],
          "handler": "onPrepareModel",
          "kind": "modify-variable",
          "method": "prepareModel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "xaero/common/mixin/MixinModelPart",
          "targets": [
            "net/minecraft/client/model/geom/ModelPart"
          ],
          "handler": "onRender",
          "kind": "inject",
          "method": "compile",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/model/geom/ModelPart#compile HEAD"
        },
        {
          "mixin": "xaero/common/mixin/MixinOptionalInGameHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "onRenderCrosshair",
          "kind": "inject",
          "method": "extractCrosshair",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "xaero/common/mixin/MixinOptionalInGameHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "postRenderStatusEffectOverlay",
          "kind": "inject",
          "method": "extractEffects",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "xaero/common/mixin/MixinOptionalInGameHud",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "onRenderStatusEffectOverlay",
          "kind": "inject",
          "method": "extractEffects",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD method runs while the HUD is drawn"
        },
        {
          "mixin": "xaero/common/mixin/MixinOptionalLevelRenderer",
          "targets": [
            "net/minecraft/client/renderer/LevelRenderer"
          ],
          "handler": "onRenderLevel",
          "kind": "inject",
          "method": "render",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "render_needs",
          "why": "the level's drawing starts: what it needs drawn is decided here"
        },
        {
          "mixin": "xaero/common/mixin/MixinPlayerList",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "onSendWorldInfo",
          "kind": "inject",
          "method": "sendLevelInfo",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#sendLevelInfo HEAD"
        },
        {
          "mixin": "xaero/common/mixin/waystones/MixinPlayerWaystoneManager",
          "targets": [
            "net/blay09/mods/waystones/core/PlayerWaystoneManager"
          ],
          "handler": "onDeactivation",
          "kind": "modify-variable",
          "method": "deactivateWaystone",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        }
      ],
      "listening": 28,
      "accessors": 1,
      "hooks": {
        "client_disconnecting": 1,
        "client_level_load": 1,
        "gui_render_post": 1,
        "hud": 3,
        "net_from_server": 11,
        "player_logged_in": 1,
        "player_tick": 1,
        "render_needs": 1,
        "screen_opening": 1,
        "server_tick": 1,
        "tick": 1
      },
      "wanted": {
        "net/minecraft/client/gui/components/BossHealthOverlay#extractBar @HEAD": 1,
        "net/minecraft/client/gui/render/GuiRenderer#render @HEAD": 1,
        "net/minecraft/client/gui/render/GuiRenderer#render @RETURN": 1,
        "net/minecraft/client/model/Model#renderToBuffer @HEAD": 1,
        "net/minecraft/client/model/geom/ModelPart#compile @HEAD": 1,
        "net/minecraft/client/multiplayer/chat/ChatListener#handleDisguisedChatMessage @HEAD": 1,
        "net/minecraft/client/player/LocalPlayer#respawn @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#extract @HEAD": 1,
        "net/minecraft/client/renderer/texture/TextureAtlas#upload @RETURN": 1,
        "net/minecraft/server/players/PlayerList#sendLevelInfo @HEAD": 1,
        "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#deleteLevel @RETURN": 1
      },
      "wanted_calls": {
        "net/blay09/mods/waystones/core/PlayerWaystoneManager#deactivateWaystone @HEAD (modify-variable)": 1,
        "net/minecraft/client/multiplayer/chat/ChatListener#handleSystemMessage @INVOKE": 1,
        "net/minecraft/client/multiplayer/chat/ChatListener#showMessageToPlayer @INVOKE": 1,
        "net/minecraft/client/renderer/ProjectionMatrixBuffer#getBuffer @INVOKE (modify-arg)": 1,
        "net/minecraft/client/renderer/feature/ModelFeatureRenderer#prepareModel @HEAD (modify-variable)": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DedicatedServerModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "HudElementRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModOrigin",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModOrigin$Kind",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PictureInPictureRendererRegistry",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PictureInPictureRendererRegistry$Context",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "PictureInPictureRendererRegistry$Factory",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarted",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopped",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents$CopyFrom",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "VanillaHudElements",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 678,
        "features": {
          "screen": 22,
          "renderer": 1,
          "effect": 5,
          "events": 2,
          "mixin": 36
        },
        "events": [
          "Event",
          "ServerPlayerEvents"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 678,
        "methods": 2971,
        "tried": 600,
        "completed": 307,
        "handlers_tried": 23,
        "handlers_completed": 15,
        "missing": {
          "[Lxaero/hud/minimap/waypoint/WaypointColor;#clone()Ljava/lang/Object;": 1,
          "[Lxaero/hud/minimap/waypoint/WaypointPurpose;#clone()Ljava/lang/Object;": 1,
          "[Lxaero/hud/minimap/waypoint/WaypointVisibilityType;#clone()Ljava/lang/Object;": 1,
          "com/mojang/blaze3d/vertex/PoseStack#last()Lcom/mojang/blaze3d/vertex/PoseStack$Pose;": 1,
          "java/nio/file/Path#getFileName()Ljava/nio/file/Path;": 1,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 1,
          "java/util/Collections#unmodifiableList(Ljava/util/List;)Ljava/util/List;": 1,
          "java/util/List#addAll(Ljava/util/Collection;)Z": 3,
          "java/util/List#removeAll(Ljava/util/Collection;)Z": 1,
          "net/minecraft/client/Camera#forwardVector()Lorg/joml/Vector3fc;": 1,
          "net/minecraft/client/Camera#position()Lnet/minecraft/world/phys/Vec3;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 39,
          "net/minecraft/client/resources/language/I18n#get(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;": 1,
          "net/minecraft/network/chat/Component#literal(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;": 1,
          "net/minecraft/network/chat/MutableComponent#getSiblings()Ljava/util/List;": 2,
          "net/minecraft/network/protocol/game/ClientboundBlockUpdatePacket#getPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/network/protocol/game/ClientboundForgetLevelChunkPacket#pos()Lnet/minecraft/world/level/ChunkPos;": 1,
          "net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket#x()I": 1,
          "net/minecraft/network/protocol/game/ClientboundLightUpdatePacket#x()I": 1,
          "net/minecraft/world/entity/player/Player#getX()D": 2,
          "new com/mojang/blaze3d/vertex/PoseStack": 1,
          "new xaero/map/gui/GuiWorldMapSettings": 2,
          "xaero/common/graphics/ImprovedFramebuffer#destroyBuffers()V": 1,
          "xaero/hud/minimap/waypoint/WaypointColor#ordinal()I": 1,
          "xaero/hud/minimap/waypoint/WaypointPurpose#ordinal()I": 1,
          "xaero/hud/minimap/waypoint/WaypointVisibilityType#ordinal()I": 1,
          "xaero/lib/XaeroLib#INSTANCE": 1,
          "xaero/lib/client/config/ClientConfigManager#getCurrentProfile()Lxaero/lib/common/config/profile/ConfigProfile;": 1,
          "xaero/lib/client/config/ClientConfigManager#getEffective(Lxaero/lib/common/config/option/ConfigOption;)Ljava/lang/Object;": 1,
          "xaero/lib/client/gui/ScreenBase#mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z": 1,
          "xaero/lib/client/gui/ScreenBase#tryToGetEscape(Lnet/minecraft/client/gui/screens/Screen;)Lnet/minecraft/client/gui/screens/Screen;": 1,
          "xaero/lib/common/config/Config#get(Lxaero/lib/common/config/option/ConfigOption;)Ljava/lang/Object;": 1,
          "xaero/lib/common/config/option/IndexedConfigOption#getValidValues()Ljava/util/List;": 3,
          "xaero/map/MapProcessor#isMapWorldUsable()Z": 1,
          "xaero/map/MapProcessor#isUploadingPaused()Z": 1,
          "xaero/map/WorldMap#INSTANCE": 17,
          "xaero/map/WorldMap#trackedPlayerRenderer": 1,
          "xaero/map/WorldMapSession#getCurrentSession()Lxaero/map/WorldMapSession;": 10,
          "xaero/map/common/config/option/WorldMapProfiledConfigOptions#OPAC_CLAIMS": 1,
          "xaero/map/config/util/WorldMapClientConfigUtils#getEffectiveCaveModeAllowed()Z": 3,
          "xaero/map/mods/SupportMods#xaeroMinimap": 2
        },
        "runs": [
          {
            "class": "xaero/hud/minimap/waypoint/set/WaypointSet",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/hud/minimap/waypoint/set/WaypointSet",
            "method": "size",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/radar/state/RadarList$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/minimap/radar/state/RadarList$Builder;",
            "value": "obj#17"
          },
          {
            "class": "xaero/hud/minimap/radar/state/RadarList$Builder",
            "method": "build",
            "desc": "()Lxaero/hud/minimap/radar/state/RadarList;",
            "value": "obj#19"
          },
          {
            "class": "xaero/hud/minimap/radar/state/RadarList$Builder",
            "method": "getDefault",
            "desc": "()Lxaero/hud/minimap/radar/state/RadarList$Builder;",
            "value": "obj#22"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getInteractionBoxLeft",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderContext;F)I",
            "value": "-10"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getInteractionBoxRight",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderContext;F)I",
            "value": "10"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getInteractionBoxTop",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderContext;F)I",
            "value": "-10"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getInteractionBoxBottom",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderContext;F)I",
            "value": "10"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRenderBoxLeft",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderContext;F)I",
            "value": "-20"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRenderBoxRight",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderContext;F)I",
            "value": "20"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRenderBoxTop",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderContext;F)I",
            "value": "-20"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRenderBoxBottom",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderContext;F)I",
            "value": "20"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getMenuTextFillLeftPadding",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;)I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRightClickTitleBackgroundColor",
            "desc": "(Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;)I",
            "value": "-11184641"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "shouldScaleBoxWithOptionalScale",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "isInteractable",
            "desc": "(Lxaero/hud/minimap/element/render/MinimapElementRenderLocation;Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElement;)Z",
            "value": "1"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "isInteractable",
            "desc": "(Lxaero/hud/minimap/element/render/MinimapElementRenderLocation;Ljava/lang/Object;)Z",
            "value": "1"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRightClickTitleBackgroundColor",
            "desc": "(Ljava/lang/Object;)I",
            "value": "-11184641"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getMenuTextFillLeftPadding",
            "desc": "(Ljava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRenderBoxBottom",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;F)I",
            "value": "20"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRenderBoxTop",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;F)I",
            "value": "-20"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRenderBoxRight",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;F)I",
            "value": "20"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getRenderBoxLeft",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;F)I",
            "value": "-20"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getInteractionBoxBottom",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;F)I",
            "value": "10"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getInteractionBoxTop",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;F)I",
            "value": "-10"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getInteractionBoxRight",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;F)I",
            "value": "10"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementReader",
            "method": "getInteractionBoxLeft",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;F)I",
            "value": "-10"
          },
          {
            "class": "xaero/common/settings/ModSettings",
            "method": "isKeyRepeat",
            "desc": "(Lnet/minecraft/client/KeyMapping;)Z",
            "value": "1"
          },
          {
            "class": "xaero/common/settings/ModSettings",
            "method": "getMaxWaypointsDistance",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "xaero/common/settings/ModSettings",
            "method": "minimapDisabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/common/settings/ModSettings",
            "method": "showWaypointsDisabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/common/settings/ModSettings",
            "method": "deathpointsDisabled",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/common/settings/ModSettings",
            "method": "foundOldRadarSettings",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "getWidth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "getHeight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "getScale",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "getMinimapScale",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "getSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "getBoxSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "getPartial",
            "desc": "()F",
            "value": "0f"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "getScaledHorizontalPadding",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "getScaledVerticalPadding",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "x0",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "y0",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "x1",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "y1",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/render/MinimapPipRenderState",
            "method": "scale",
            "desc": "()F",
            "value": "1f"
          },
          {
            "class": "xaero/common/server/mods/SupportServerMods",
            "method": "hasFtbTeams",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/server/mods/SupportServerMods",
            "method": "hasArgonauts",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/server/mods/SupportServerMods",
            "method": "hasOpac",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/server/mods/SupportServerMods",
            "method": "hasWorldmap",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/render/MinimapFBORenderer",
            "method": "isLoadedFBO",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/render/MinimapFBORenderer",
            "method": "isTriedFBO",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/server/player/ServerPlayerData",
            "method": "ensureLastSyncedData",
            "desc": "()Lxaero/common/server/radar/tracker/SyncedTrackedPlayer;",
            "value": "obj#150"
          },
          {
            "class": "xaero/common/server/player/ServerPlayerData",
            "method": "ensureCurrentlySyncedPlayers",
            "desc": "()Ljava/util/Set;",
            "value": "obj#153"
          },
          {
            "class": "xaero/common/server/player/ServerPlayerData",
            "method": "getLastTrackedPlayerSync",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "xaero/common/server/player/ServerPlayerData",
            "method": "hasMod",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/server/player/ServerPlayerData",
            "method": "getClientModNetworkVersion",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/category/ui/node/EditorNode$Builder",
            "method": "setMovable",
            "desc": "(Z)Lxaero/hud/category/ui/node/EditorNode$Builder;",
            "value": "obj#163"
          },
          {
            "class": "xaero/hud/category/ui/node/EditorNode$Builder",
            "method": "setListEntryFactory",
            "desc": "(Lxaero/hud/category/ui/entry/EditorListRootEntryFactory;)Lxaero/hud/category/ui/node/EditorNode$Builder;",
            "value": "obj#164"
          },
          {
            "class": "xaero/hud/category/ui/node/EditorNode$Builder",
            "method": "setTooltipSupplier",
            "desc": "(Lxaero/hud/category/ui/node/tooltip/IEditorDataTooltipSupplier;)Lxaero/hud/category/ui/node/EditorNode$Builder;",
            "value": "obj#165"
          },
          {
            "class": "xaero/common/minimap/highlight/HighlighterRegistry",
            "method": "getHighlighters",
            "desc": "()Ljava/util/List;",
            "value": "obj#174"
          },
          {
            "class": "xaero/hud/minimap/radar/icon/cache/id/armor/RadarIconArmor",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/radar/icon/cache/id/armor/RadarIconArmor",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/common/server/mods/ftbteams/SupportFTBTeamsServer",
            "method": "getSyncedPlayerTrackerSystem",
            "desc": "()Lxaero/common/server/radar/tracker/ISyncedPlayerTrackerSystem;",
            "value": "obj#186"
          },
          {
            "class": "xaero/hud/minimap/world/connection/MinimapWorldConnectionManager",
            "method": "isConnected",
            "desc": "(Lxaero/hud/minimap/world/MinimapWorld;Lxaero/hud/minimap/world/MinimapWorld;)Z",
            "value": "1"
          },
          {
            "class": "xaero/hud/minimap/world/connection/MinimapWorldConnectionManager",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/hud/minimap/element/render/world/MinimapElementWorldRendererHandler$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/minimap/element/render/world/MinimapElementWorldRendererHandler$Builder;",
            "value": "obj#217"
          },
          {
            "class": "xaero/hud/minimap/element/render/world/MinimapElementWorldRendererHandler$Builder",
            "method": "begin",
            "desc": "()Lxaero/hud/minimap/element/render/world/MinimapElementWorldRendererHandler$Builder;",
            "value": "obj#218"
          },
          {
            "class": "xaero/hud/minimap/element/render/world/MinimapElementWorldRendererHandler$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/minimap/element/render/MinimapElementRendererHandler$Builder;",
            "value": "obj#221"
          },
          {
            "class": "xaero/hud/category/ui/node/options/text/EditorTextFieldOptionsNode",
            "method": "getCursorPos",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/category/ui/node/options/text/EditorTextFieldOptionsNode",
            "method": "getHighlightPos",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/category/ui/node/options/text/EditorTextFieldOptionsNode",
            "method": "getMaxLength",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/io/HudIO$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/io/HudIO$Builder;",
            "value": "obj#293"
          },
          {
            "class": "xaero/hud/io/HudIO$Builder",
            "method": "setHud",
            "desc": "(Lxaero/hud/Hud;)Lxaero/hud/io/HudIO$Builder;",
            "value": "obj#294"
          },
          {
            "class": "xaero/hud/io/HudIO$Builder",
            "method": "begin",
            "desc": "()Lxaero/hud/io/HudIO$Builder;",
            "value": "obj#297"
          },
          {
            "class": "xaero/common/config/LegacyCommonConfigIO",
            "method": "shouldEnableEveryoneTracksEveryone",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/category/serialization/data/FilterObjectCategoryDataNbtSerializer$FinalBuilder",
            "method": "begin",
            "desc": "()Lxaero/hud/category/serialization/data/FilterObjectCategoryDataNbtSerializer$FinalBuilder;",
            "value": "obj#301"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "getANewTile",
            "desc": "(Lxaero/common/settings/ModSettings;IILjava/lang/Long;)Lxaero/common/minimap/region/MinimapTile;",
            "value": "obj#306"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "isSlimeChunk",
            "desc": "(Lxaero/common/settings/ModSettings;IILjava/lang/Long;)Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "isWasTransfered",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "isChunkGrid",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "isSlimeChunk",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "isSuccess",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "getX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "getZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "isHasSomething",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "hasTerrain",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/region/MinimapTile",
            "method": "getHighlightVersion",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/synced/ClientSyncedTrackedPlayerManager$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/minimap/player/tracker/synced/ClientSyncedTrackedPlayerManager$Builder;",
            "value": "obj#340"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/synced/ClientSyncedTrackedPlayerManager$Builder",
            "method": "build",
            "desc": "()Lxaero/hud/minimap/player/tracker/synced/ClientSyncedTrackedPlayerManager;",
            "value": "obj#342"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/synced/ClientSyncedTrackedPlayerManager$Builder",
            "method": "begin",
            "desc": "()Lxaero/hud/minimap/player/tracker/synced/ClientSyncedTrackedPlayerManager$Builder;",
            "value": "obj#345"
          },
          {
            "class": "xaero/hud/minimap/world/MinimapWorld",
            "method": "hasSomethingToRemoveOnSave",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/world/MinimapWorld",
            "method": "getSetCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderProvider",
            "method": "hasNext",
            "desc": "(Lxaero/hud/minimap/element/render/MinimapElementRenderLocation;Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/category/ui/node/options/text/TextFieldSuggestionsResolver$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/category/ui/node/options/text/TextFieldSuggestionsResolver$Builder;",
            "value": "obj#377"
          },
          {
            "class": "xaero/hud/category/ui/node/options/text/TextFieldSuggestionsResolver$Builder",
            "method": "begin",
            "desc": "(Lxaero/common/misc/ListFactory;)Lxaero/hud/category/ui/node/options/text/TextFieldSuggestionsResolver$Builder;",
            "value": "obj#378"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "getX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "getX",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "getY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "getZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "getZ",
            "desc": "(D)I",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "isRotation",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "getYaw",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "isTemporary",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "isYIncluded",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "getCreatedAt",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "getDistanceSq",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "isServerWaypoint",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "isThirdParty",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "isEffectivelyDeleted",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "isThirdPartyDeleted",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/common/minimap/waypoints/Waypoint",
            "method": "getRenderInfoEditDest",
            "desc": "()Lxaero/hud/minimap/waypoint/WaypointRenderInfo;",
            "value": "obj#445"
          },
          {
            "class": "xaero/common/server/radar/tracker/SyncedPlayerTrackerSystemManager",
            "method": "getSystems",
            "desc": "()Ljava/lang/Iterable;",
            "value": "obj#453"
          },
          {
            "class": "xaero/hud/minimap/world/container/MinimapWorldContainer$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/minimap/world/container/MinimapWorldContainer$Builder;",
            "value": "obj#454"
          },
          {
            "class": "xaero/hud/minimap/world/container/MinimapWorldContainer$Builder",
            "method": "setModMain",
            "desc": "(Lxaero/common/HudMod;)Lxaero/hud/minimap/world/container/MinimapWorldContainer$Builder;",
            "value": "obj#455"
          },
          {
            "class": "xaero/hud/minimap/world/container/MinimapWorldContainer$Builder",
            "method": "setSession",
            "desc": "(Lxaero/hud/minimap/module/MinimapSession;)Lxaero/hud/minimap/world/container/MinimapWorldContainer$Builder;",
            "value": "obj#456"
          },
          {
            "class": "xaero/hud/minimap/world/container/MinimapWorldContainer$Builder",
            "method": "setPath",
            "desc": "(Lxaero/hud/path/XaeroPath;)Lxaero/hud/minimap/world/container/MinimapWorldContainer$Builder;",
            "value": "obj#457"
          },
          {
            "class": "xaero/hud/minimap/world/container/MinimapWorldContainer$Builder",
            "method": "setRootContainer",
            "desc": "(Lxaero/hud/minimap/world/container/MinimapWorldRootContainer;)Lxaero/hud/minimap/world/container/MinimapWorldContainer$Builder;",
            "value": "obj#458"
          },
          {
            "class": "xaero/hud/category/serialization/data/ObjectCategoryData",
            "method": "getProtection",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/category/rule/ObjectCategoryListRule",
            "method": "inList",
            "desc": "(Ljava/lang/Object;Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderer$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderer$Builder;",
            "value": "obj#499"
          },
          {
            "class": "xaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderer$Builder",
            "method": "begin",
            "desc": "(Lxaero/common/IXaeroMinimap;)Lxaero/hud/minimap/player/tracker/PlayerTrackerMinimapElementRenderer$Builder;",
            "value": "obj#502"
          },
          {
            "class": "xaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder;",
            "value": "obj#507"
          },
          {
            "class": "xaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder",
            "method": "setBounds",
            "desc": "(IIII)Lxaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder;",
            "value": "obj#508"
          },
          {
            "class": "xaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder",
            "method": "setValues",
            "desc": "(Ljava/util/List;Ljava/util/List;)Lxaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder;",
            "value": "obj#509"
          },
          {
            "class": "xaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder",
            "method": "setEntry",
            "desc": "(Lxaero/common/gui/GuiInfoDisplayEdit$MoveableEntry;)Lxaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder;",
            "value": "obj#510"
          },
          {
            "class": "xaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder",
            "method": "setOnChange",
            "desc": "(Ljava/lang/Runnable;)Lxaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder;",
            "value": "obj#511"
          },
          {
            "class": "xaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder",
            "method": "setIncludeNull",
            "desc": "(Z)Lxaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder;",
            "value": "obj#512"
          },
          {
            "class": "xaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder",
            "method": "begin",
            "desc": "()Lxaero/hud/minimap/info/widget/InfoDisplayCycleButton$Builder;",
            "value": "obj#515"
          },
          {
            "class": "xaero/common/gui/MyBigButton",
            "method": "getId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/category/ui/node/options/range/setting/EditorExpandingSettingNode",
            "method": "isRootSettings",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/waypoint/render/WaypointMapRenderer$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/hud/minimap/waypoint/render/WaypointMapRenderer$Builder;",
            "value": "obj#541"
          },
          {
            "class": "xaero/hud/minimap/waypoint/render/WaypointMapRenderer$Builder",
            "method": "setWaypointDeleter",
            "desc": "(Lxaero/hud/minimap/waypoint/render/WaypointDeleter;)Lxaero/hud/minimap/waypoint/render/WaypointMapRenderer$Builder;",
            "value": "obj#542"
          },
          {
            "class": "xaero/hud/minimap/waypoint/render/WaypointMapRenderer$Builder",
            "method": "begin",
            "desc": "(Lxaero/common/IXaeroMinimap;)Lxaero/hud/minimap/waypoint/render/WaypointMapRenderer$Builder;",
            "value": "obj#545"
          },
          {
            "class": "xaero/hud/pushbox/effect/PotionEffectsPushBox",
            "method": "getX",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/info/config/InfoDisplayConfigClientUtils",
            "method": "createDefaultConfig",
            "desc": "(Lxaero/hud/minimap/info/InfoDisplay;Lxaero/common/settings/ModSettings;Z)Lxaero/hud/minimap/common/config/info/config/InfoDisplayConfigData;",
            "value": "obj#553"
          },
          {
            "class": "xaero/common/minimap/highlight/ChunkHighlighter",
            "method": "getSideBlend",
            "desc": "(III)I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/radar/icon/creator/render/form/model/part/ResolvedFieldModelPartRenderer",
            "method": "shouldStop",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/radar/icon/cache/id/variant/TropicalFishVariant",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/radar/icon/cache/id/variant/TropicalFishVariant",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/hud/minimap/world/container/MinimapWorldContainer",
            "method": "isEmpty",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/hud/minimap/world/container/MinimapWorldContainer",
            "method": "getWorldsCopy",
            "desc": "()Ljava/util/List;",
            "value": "obj#603"
          },
          {
            "class": "xaero/hud/pushbox/effect/PotionEffectsShiftPushBox",
            "method": "getX",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "xaero/hud/pushbox/effect/PotionEffectsShiftPushBox",
            "method": "getShift",
            "desc": "()I",
            "value": "27"
          },
          {
            "class": "xaero/common/server/radar/tracker/SyncedTrackedPlayer",
            "method": "setPos",
            "desc": "(DDD)Lxaero/common/server/radar/tracker/SyncedTrackedPlayer;",
            "value": "obj#625"
          },
          {
            "class": "xaero/common/server/radar/tracker/SyncedTrackedPlayer",
            "method": "setDimension",
            "desc": "(Lnet/minecraft/resources/ResourceKey;)Lxaero/common/server/radar/tracker/SyncedTrackedPlayer;",
            "value": "obj#626"
          },
          {
            "class": "xaero/common/server/radar/tracker/SyncedTrackedPlayer",
            "method": "getX",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "xaero/common/server/radar/tracker/SyncedTrackedPlayer",
            "method": "getY",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "xaero/common/server/radar/tracker/SyncedTrackedPlayer",
            "method": "getZ",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "xaero/common/gui/GuiWaypointsOptions",
            "method": "isDifferentSubWorld",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "xaero/common/gui/GuiWaypointsOptions",
            "method": "isInGameUi",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/hud/module/ModuleManager",
            "method": "getModules",
            "desc": "()Ljava/lang/Iterable;",
            "value": "obj#657"
          }
        ],
        "insns": 5821
      },
      "verdict": "partly",
      "summary": "23 of 28 listening patch sites land on a Horizon hook (82%); of 39 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "xaeroworldmap",
      "name": "Xaero's World Map",
      "version": "1.47.2",
      "license": "All Rights Reserved",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "xaero/map/WorldMapFabric"
        },
        {
          "kind": "modmenu",
          "value": "xaero/map/mods/XaeroWorldMapModMenu"
        },
        {
          "kind": "server",
          "value": "xaero/map/WorldMapFabric"
        }
      ],
      "mixin_configs": [
        "xaeroworldmap.mixins.json",
        "xaeroworldmap.fabric.mixins.json"
      ],
      "depends": [
        "xaerolib"
      ],
      "classes": 389,
      "methods": 3073,
      "sites": [
        {
          "mixin": "xaero/map/mixin/MixinChatListener",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "onHandleDisguisedChatMessag",
          "kind": "inject",
          "method": "handleDisguisedChatMessage",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/ChatListener#handleDisguisedChatMessage HEAD"
        },
        {
          "mixin": "xaero/map/mixin/MixinChatListener",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "onHandleSystemChat",
          "kind": "inject",
          "method": "handleSystemMessage",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addServerSystemMessage(Lnet/minecraft/network/chat/Component;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/ChatListener#handleSystemMessage INVOKE"
        },
        {
          "mixin": "xaero/map/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onOnChunkDeltaUpdate",
          "kind": "inject",
          "method": "handleChunkBlocksUpdate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/map/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onHandleLevelChunkWithLight",
          "kind": "inject",
          "method": "handleLevelChunkWithLight",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/map/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onHandleLightUpdatePacket",
          "kind": "inject",
          "method": "handleLightUpdatePacket",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/map/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onQueueLightRemoval",
          "kind": "inject",
          "method": "queueLightRemoval",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/map/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onOnBlockUpdate",
          "kind": "inject",
          "method": "handleBlockUpdate",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/map/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onOnPlayerSpawnPosition",
          "kind": "inject",
          "method": "handleSetSpawn",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/map/mixin/MixinClientPlayNetworkHandler",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onCleanup",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricChatListener",
          "targets": [
            "net/minecraft/client/multiplayer/chat/ChatListener"
          ],
          "handler": "onShowMessageToPlayer",
          "kind": "inject",
          "method": "showMessageToPlayer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/gui/components/ChatComponent;addPlayerMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/multiplayer/chat/ChatListener#showMessageToPlayer INVOKE"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricClientPacketListener",
          "targets": [
            "net/minecraft/client/multiplayer/ClientPacketListener"
          ],
          "handler": "onOnGameJoin",
          "kind": "inject",
          "method": "handleLogin",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V",
          "cancellable": false,
          "hook": "net_from_server",
          "why": "a play packet arrives from the server"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricGameRenderer",
          "targets": [
            "net/minecraft/client/renderer/GameRenderer"
          ],
          "handler": "onRenderEnd",
          "kind": "inject",
          "method": "extract",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/GameRenderer#extract RETURN"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricGui",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "onRenderGuiEnd",
          "kind": "inject",
          "method": "extractRenderState",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": "gui_render_post",
          "why": "RenderGuiEvent.Post: the whole GUI has drawn"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricGui",
          "targets": [
            "net/minecraft/client/gui/Gui"
          ],
          "handler": "onOpenScreen",
          "kind": "inject",
          "method": "setScreen",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "screen_opening",
          "why": "ScreenEvent.Opening: a screen opens"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onTickStart",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "tick",
          "why": "the client's own tick"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onRunTickStart",
          "kind": "inject",
          "method": "runTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "frame",
          "why": "RenderFrameEvent.Pre: once a frame, before it draws"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onDisconnect",
          "kind": "inject",
          "method": "disconnect",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_disconnecting",
          "why": "ClientPlayerNetworkEvent.LoggingOut: the connection ends"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onJoinWorld",
          "kind": "inject",
          "method": "setLevel",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "client_level_load",
          "why": "LevelEvent.Load: a level is set on the client"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onRenderCall",
          "kind": "modify-arg",
          "method": "runTick",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/Minecraft;renderFrame(Z)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricMinecraftServer",
          "targets": [
            "net/minecraft/server/MinecraftServer"
          ],
          "handler": "onTick",
          "kind": "inject",
          "method": "tickServer",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "server_tick",
          "why": "ServerTickEvent.Pre/Post"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricPlayerEntity",
          "targets": [
            "net/minecraft/world/entity/player/Player"
          ],
          "handler": "onTickStart",
          "kind": "inject",
          "method": "tick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": "player_tick",
          "why": "PlayerTickEvent: a player ticks"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricPlayerList",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "onPlaceNewPlayer",
          "kind": "inject",
          "method": "placeNewPlayer",
          "at": "TAIL",
          "at_target": "",
          "cancellable": false,
          "hook": "player_logged_in",
          "why": "PlayerEvent.PlayerLoggedInEvent"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricSpriteAtlasTexture",
          "targets": [
            "net/minecraft/client/renderer/texture/TextureAtlas"
          ],
          "handler": "onUpload",
          "kind": "inject",
          "method": "upload",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/renderer/texture/TextureAtlas#upload RETURN"
        },
        {
          "mixin": "xaero/map/mixin/MixinFabricWorld",
          "targets": [
            "net/minecraft/world/level/Level"
          ],
          "handler": "onClose",
          "kind": "inject",
          "method": "close",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/Level#close HEAD"
        },
        {
          "mixin": "xaero/map/mixin/MixinLevelStorageAccess",
          "targets": [
            "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess"
          ],
          "handler": "onDeleteLevel",
          "kind": "inject",
          "method": "deleteLevel",
          "at": "RETURN",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#deleteLevel RETURN"
        },
        {
          "mixin": "xaero/map/mixin/MixinMinecraftClient",
          "targets": [
            "net/minecraft/client/Minecraft"
          ],
          "handler": "onRunTick",
          "kind": "modify-variable",
          "method": "runTick",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "xaero/map/mixin/MixinOptionalGui",
          "targets": [
            "net/minecraft/client/gui/Hud"
          ],
          "handler": "onRenderCrosshair",
          "kind": "inject",
          "method": "extractCrosshair",
          "at": "HEAD",
          "at_target": "",
          "cancellable": true,
          "hook": "hud",
          "why": "a HUD element is built"
        },
        {
          "mixin": "xaero/map/mixin/MixinPlayerList",
          "targets": [
            "net/minecraft/server/players/PlayerList"
          ],
          "handler": "onSendWorldInfo",
          "kind": "inject",
          "method": "sendLevelInfo",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook runs at net/minecraft/server/players/PlayerList#sendLevelInfo HEAD"
        }
      ],
      "listening": 18,
      "accessors": 0,
      "hooks": {
        "client_disconnecting": 1,
        "client_level_load": 1,
        "frame": 1,
        "gui_render_post": 1,
        "hud": 1,
        "net_from_server": 8,
        "player_logged_in": 1,
        "player_tick": 1,
        "screen_opening": 1,
        "server_tick": 1,
        "tick": 1
      },
      "wanted": {
        "net/minecraft/client/multiplayer/chat/ChatListener#handleDisguisedChatMessage @HEAD": 1,
        "net/minecraft/client/renderer/GameRenderer#extract @RETURN": 1,
        "net/minecraft/client/renderer/texture/TextureAtlas#upload @RETURN": 1,
        "net/minecraft/server/players/PlayerList#sendLevelInfo @HEAD": 1,
        "net/minecraft/world/level/Level#close @HEAD": 1,
        "net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess#deleteLevel @RETURN": 1
      },
      "wanted_calls": {
        "net/minecraft/client/Minecraft#renderFrame @INVOKE (modify-arg)": 1,
        "net/minecraft/client/Minecraft#runTick @HEAD (modify-variable)": 1,
        "net/minecraft/client/multiplayer/chat/ChatListener#handleSystemMessage @INVOKE": 1,
        "net/minecraft/client/multiplayer/chat/ChatListener#showMessageToPlayer @INVOKE": 1
      },
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 2
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "DedicatedServerModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "EnvType",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModContainer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModMetadata",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModOrigin",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ModOrigin$Kind",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStarted",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerLifecycleEvents$ServerStopped",
          "horizon": "hook:world_lifecycle",
          "note": "ServerStarting/Started/Stopped",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ServerPlayerEvents$CopyFrom",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "Version",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 389,
        "features": {
          "block-behaviour": 1,
          "screen": 5,
          "effect": 3,
          "command": 1,
          "events": 2,
          "mixin": 28
        },
        "events": [
          "Event",
          "ServerPlayerEvents"
        ],
        "examples": {
          "UnknownBlockState": [
            "toString",
            "write"
          ]
        }
      },
      "interp": {
        "classes": 389,
        "methods": 2144,
        "tried": 600,
        "completed": 310,
        "handlers_tried": 18,
        "handlers_completed": 12,
        "missing": {
          "[Lxaero/map/file/export/PNGExportResultType;#clone()Ljava/lang/Object;": 1,
          "com/mojang/blaze3d/platform/InputConstants$Type#KEYBOARD": 1,
          "com/mojang/blaze3d/platform/InputConstants$Type#MOUSE": 1,
          "com/mojang/blaze3d/systems/RenderSystem#getDevice()Lcom/mojang/renderpearl/api/device/GpuDevice;": 1,
          "earth/terrarium/argonauts/api/guild/GuildApi#API": 1,
          "earth/terrarium/argonauts/api/party/PartyApi#API": 2,
          "it/unimi/dsi/fastutil/objects/Object2LongMap#clear()V": 1,
          "it/unimi/dsi/fastutil/objects/Object2LongMap#getOrDefault(Ljava/lang/Object;J)J": 1,
          "java/lang/Runnable#run()V": 1,
          "java/lang/System#arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V": 1,
          "java/lang/Thread#start()V": 1,
          "java/nio/ByteBuffer#clear()Ljava/nio/ByteBuffer;": 1,
          "java/nio/file/Path#getFileName()Ljava/nio/file/Path;": 2,
          "java/nio/file/Path#getParent()Ljava/nio/file/Path;": 1,
          "java/nio/file/StandardCopyOption#REPLACE_EXISTING": 1,
          "java/util/Hashtable#get(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "java/util/Hashtable#values()Ljava/util/Collection;": 5,
          "java/util/Random#nextInt()I": 1,
          "java/util/Set#add(Ljava/lang/Object;)Z": 1,
          "java/util/Set#contains(Ljava/lang/Object;)Z": 1,
          "java/util/UUID#getMostSignificantBits()J": 1,
          "java/util/function/Supplier#get()Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/entity/event/v1/ServerPlayerEvents#COPY_FROM": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 20,
          "net/minecraft/client/Minecraft#getWindow()Lcom/mojang/blaze3d/platform/Window;": 1,
          "net/minecraft/client/input/KeyEvent#key()I": 2,
          "net/minecraft/client/multiplayer/ClientLevel#dimension()Lnet/minecraft/resources/ResourceKey;": 1,
          "net/minecraft/commands/Commands#LEVEL_GAMEMASTERS": 1,
          "net/minecraft/core/BlockPos#equals(Ljava/lang/Object;)Z": 2,
          "net/minecraft/core/BlockPos#getY()I": 1,
          "net/minecraft/core/Holder#direct(Ljava/lang/Object;)Lnet/minecraft/core/Holder;": 2,
          "net/minecraft/core/NonNullList#size()I": 1,
          "net/minecraft/core/UUIDUtil#uuidToIntArray(Ljava/util/UUID;)[I": 1,
          "net/minecraft/nbt/CompoundTag#getIntArray(Ljava/lang/String;)Ljava/util/Optional;": 1,
          "net/minecraft/network/FriendlyByteBuf#readInt()I": 1,
          "net/minecraft/network/FriendlyByteBuf#writeInt(I)Lnet/minecraft/network/FriendlyByteBuf;": 2,
          "net/minecraft/network/protocol/game/ClientboundBlockUpdatePacket#getPos()Lnet/minecraft/core/BlockPos;": 1,
          "net/minecraft/network/protocol/game/ClientboundForgetLevelChunkPacket#pos()Lnet/minecraft/world/level/ChunkPos;": 1,
          "net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket#x()I": 1,
          "net/minecraft/network/protocol/game/ClientboundLightUpdatePacket#x()I": 1,
          "net/minecraft/world/entity/Entity#getTeam()Lnet/minecraft/world/scores/PlayerTeam;": 1,
          "net/minecraft/world/entity/player/Player#getInventory()Lnet/minecraft/world/entity/player/Inventory;": 1,
          "net/minecraft/world/entity/player/Player#getUUID()Ljava/util/UUID;": 1,
          "net/minecraft/world/level/Level#registryAccess()Lnet/minecraft/core/RegistryAccess;": 1,
          "net/minecraft/world/level/biome/Biomes#THE_VOID": 1,
          "net/minecraft/world/level/block/Block#stateById(I)Lnet/minecraft/world/level/block/state/BlockState;": 2,
          "new it/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap": 1,
          "new net/minecraft/nbt/IntArrayTag": 1,
          "new xaero/hud/minimap/element/render/MinimapElementRenderInfo": 1,
          "org/lwjgl/BufferUtils#createByteBuffer(I)Ljava/nio/ByteBuffer;": 2,
          "xaero/hud/minimap/BuiltInHudModules#MINIMAP": 2,
          "xaero/hud/minimap/controls/key/MinimapKeyMappings#RENDER_ALL_SETS": 1,
          "xaero/hud/minimap/element/render/MinimapElementRenderLocation#IN_MINIMAP": 1,
          "xaero/lib/XaeroLib#INSTANCE": 2,
          "xaero/lib/client/controls/util/KeyMappingUtils#inputMatches(Lcom/mojang/blaze3d/platform/InputConstants$Type;ILnet/minecraft/client/KeyMapping;I)Z": 2,
          "xaero/lib/client/gui/ScreenBase#addRenderableWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;": 2,
          "xaero/lib/client/gui/ScreenBase#addWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;": 1,
          "xaero/lib/client/gui/ScreenBase#charTyped(Lnet/minecraft/client/input/CharacterEvent;)Z": 1,
          "xaero/lib/client/gui/ScreenBase#onDropdownClosed(Lxaero/lib/client/gui/widget/dropdown/DropDownWidget;)V": 1,
          "xaero/lib/client/gui/ScreenBase#onDropdownOpen(Lxaero/lib/client/gui/widget/dropdown/DropDownWidget;)V": 1,
          "xaero/lib/client/gui/ScreenBase#removeWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)V": 1,
          "xaero/lib/client/gui/ScreenBase#removed()V": 1,
          "xaero/lib/client/gui/ScreenBase#renderPreDropdown(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V": 1,
          "xaero/lib/client/gui/ScreenBase#tick()V": 1,
          "xaero/map/gui/GuiMap#getFocused()Lnet/minecraft/client/gui/components/events/GuiEventListener;": 4,
          "xaero/map/gui/dropdown/rightclick/GuiRightClickMenu#isClosed()Z": 1,
          "xaero/pac/common/claims/result/api/AreaClaimResult#getLeft()I": 1
        },
        "runs": [
          {
            "class": "xaero/map/graphics/TextureUpload",
            "method": "getUploadType",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getMaxLoadedRegionsConfig",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isReloadViewedConfig",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getReloadViewedVersionConfig",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isFlowersConfig",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isAdjustHeightForCarpetLikeBlocksConfig",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "confirmMultiworld",
            "desc": "(Lxaero/map/world/MapDimension;)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "canQuickConfirmUnsynced",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isUIPaused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isWritingPaused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isRenderingPaused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isUploadingPaused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isProcessingPaused",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getGlobalVersion",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getRenderStartTime",
            "desc": "()J",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isWaitingForWorldUpdate",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getBrightness",
            "desc": "(Z)F",
            "value": "1f"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getBrightness",
            "desc": "(ILnet/minecraft/client/multiplayer/ClientLevel;Z)F",
            "value": "1f"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getAmbientBrightness",
            "desc": "(Lnet/minecraft/world/level/dimension/DimensionType;)F",
            "value": "0.375f"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isCurrentMultiworldWritable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isFinalizing",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isMapWorldUsable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isEqual",
            "desc": "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z",
            "value": "1"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isFinished",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isCurrentMapLocked",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getCaveLayer",
            "desc": "(I)I",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getCurrentCaveLayer",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isConsideringNetherFairPlay",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "fairplayMessageWasReceived",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isDebugConfig",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isFootstepsConfig",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getCaveModeDepthConfig",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isIgnoreMapFileLocksConfig",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "isForceFastWritingConfig",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapProcessor",
            "method": "getSaveTime",
            "desc": "()I",
            "value": "60000"
          },
          {
            "class": "xaero/map/mods/minimap/element/MinimapElementRendererWrapper",
            "method": "getOrder",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/file/export/PNGExportResultType",
            "method": "isSuccess",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/OverlayManager",
            "method": "getNumberOfUniqueOverlays",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/server/mods/ftbteams/SupportFTBTeamsServer",
            "method": "getSyncedPlayerTrackerSystem",
            "desc": "()Lxaero/map/server/radar/tracker/ISyncedPlayerTrackerSystem;",
            "value": "obj#152"
          },
          {
            "class": "xaero/map/controls/KeyEvent",
            "method": "isTickEnd",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/controls/KeyEvent",
            "method": "isRepeat",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/controls/KeyEvent",
            "method": "isKeyDown",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/MapFullReloader",
            "method": "isResave",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/mods/SupportModsFabric",
            "method": "amecs",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/MapTile",
            "method": "isLoaded",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/MapTile",
            "method": "getChunkX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/region/MapTile",
            "method": "getChunkZ",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/region/MapTile",
            "method": "wasWrittenOnce",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/MapTile",
            "method": "getWorldInterpretationVersion",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/region/MapTile",
            "method": "getWrittenCaveStart",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/region/MapTile",
            "method": "getWrittenCaveDepth",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/element/MenuScrollReader",
            "method": "getMenuTextFillLeftPadding",
            "desc": "(Lxaero/map/element/MapElementMenuScroll;)I",
            "value": "0"
          },
          {
            "class": "xaero/map/element/MenuScrollReader",
            "method": "getRightClickTitleBackgroundColor",
            "desc": "(Lxaero/map/element/MapElementMenuScroll;)I",
            "value": "0"
          },
          {
            "class": "xaero/map/element/MenuScrollReader",
            "method": "shouldScaleBoxWithOptionalScale",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/element/MenuScrollReader",
            "method": "getRightClickTitleBackgroundColor",
            "desc": "(Ljava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "xaero/map/element/MenuScrollReader",
            "method": "getMenuTextFillLeftPadding",
            "desc": "(Ljava/lang/Object;)I",
            "value": "0"
          },
          {
            "class": "xaero/map/region/texture/ExportLeafRegionTexture",
            "method": "getMipMapLevels",
            "desc": "()I",
            "value": "7"
          },
          {
            "class": "xaero/map/world/MapWorld",
            "method": "getCurrentMultiworldType",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/world/MapWorld",
            "method": "isMultiplayer",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/world/MapWorld",
            "method": "isCurrentMultiworldTypeConfirmed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/world/MapWorld",
            "method": "isIgnoreServerLevelId",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/world/MapWorld",
            "method": "isIgnoreHeightmaps",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/world/MapWorld",
            "method": "isUsingDefaultMapTeleport",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/world/MapWorld",
            "method": "isUsingDefaultPlayerTeleport",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/gui/GuiMap",
            "method": "getScaleMultiplier",
            "desc": "(I)D",
            "value": "1"
          },
          {
            "class": "xaero/map/gui/GuiMap",
            "method": "bytesToMb",
            "desc": "(J)J",
            "value": "0"
          },
          {
            "class": "xaero/map/gui/GuiMap",
            "method": "isRightClickValid",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/map/gui/GuiMap",
            "method": "getRightClickTitleBackgroundColor",
            "desc": "()I",
            "value": "-10461088"
          },
          {
            "class": "xaero/map/gui/GuiMap",
            "method": "shouldSkipWorldRender",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/map/gui/GuiMap",
            "method": "getUserScale",
            "desc": "()D",
            "value": "0"
          },
          {
            "class": "xaero/map/WorldMapSession",
            "method": "isUsable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/server/mods/argonauts/ArgonautsSyncedPlayerTrackerSystem",
            "method": "isPartySystem",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/map/radar/tracker/PlayerTrackerMenuRenderer$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/map/radar/tracker/PlayerTrackerMenuRenderer$Builder;",
            "value": "obj#330"
          },
          {
            "class": "xaero/map/radar/tracker/PlayerTrackerMenuRenderer$Builder",
            "method": "setRenderer",
            "desc": "(Lxaero/map/radar/tracker/PlayerTrackerMapElementRenderer;)Lxaero/map/radar/tracker/PlayerTrackerMenuRenderer$Builder;",
            "value": "obj#331"
          },
          {
            "class": "xaero/map/radar/tracker/PlayerTrackerMenuRenderer$Builder",
            "method": "begin",
            "desc": "()Lxaero/map/radar/tracker/PlayerTrackerMenuRenderer$Builder;",
            "value": "obj#334"
          },
          {
            "class": "xaero/map/server/radar/tracker/SyncedPlayerTrackerSystemManager",
            "method": "getSystems",
            "desc": "()Ljava/lang/Iterable;",
            "value": "obj#341"
          },
          {
            "class": "xaero/map/mods/pac/gui/claim/ClaimResultElement$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/map/mods/pac/gui/claim/ClaimResultElement$Builder;",
            "value": "obj#346"
          },
          {
            "class": "xaero/map/mods/pac/gui/claim/ClaimResultElement$Builder",
            "method": "setKey",
            "desc": "(Lxaero/map/misc/Area;)Lxaero/map/mods/pac/gui/claim/ClaimResultElement$Builder;",
            "value": "obj#347"
          },
          {
            "class": "xaero/map/mods/pac/gui/claim/ClaimResultElement$Builder",
            "method": "setResult",
            "desc": "(Lxaero/pac/common/claims/result/api/AreaClaimResult;)Lxaero/map/mods/pac/gui/claim/ClaimResultElement$Builder;",
            "value": "obj#348"
          },
          {
            "class": "xaero/map/mods/pac/gui/claim/ClaimResultElement$Builder",
            "method": "begin",
            "desc": "()Lxaero/map/mods/pac/gui/claim/ClaimResultElement$Builder;",
            "value": "obj#349"
          },
          {
            "class": "xaero/map/mods/pac/gui/claim/ClaimResultElementManager",
            "method": "getLongCoordinatesFor",
            "desc": "(II)J",
            "value": "0"
          },
          {
            "class": "xaero/map/mods/pac/gui/claim/ClaimResultElementManager",
            "method": "getXFromLongCoordinates",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "xaero/map/mods/pac/gui/claim/ClaimResultElementManager",
            "method": "getZFromLongCoordinates",
            "desc": "(J)I",
            "value": "0"
          },
          {
            "class": "xaero/map/gui/GuiCaveModeOptions",
            "method": "isEnabled",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/gui/dropdown/rightclick/GuiRightClickMenu",
            "method": "shouldOpenLeft",
            "desc": "(IIII)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/gui/dropdown/rightclick/GuiRightClickMenu",
            "method": "shouldOpenUp",
            "desc": "(III)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/radar/tracker/PlayerTrackerMapElementCollector",
            "method": "playerExists",
            "desc": "(Ljava/util/UUID;)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/mods/gui/WaypointMenuRenderer",
            "method": "menuStartPos",
            "desc": "(I)I",
            "value": "-59"
          },
          {
            "class": "xaero/map/mods/gui/WaypointMenuRenderer",
            "method": "menuSearchPadding",
            "desc": "()I",
            "value": "14"
          },
          {
            "class": "xaero/map/file/MapSaveLoad",
            "method": "beingSaved",
            "desc": "(Lxaero/map/world/MapDimension;II)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/file/MapSaveLoad",
            "method": "getSizeOfToLoad",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/file/MapSaveLoad",
            "method": "removeTempCacheRequest",
            "desc": "(Ljava/io/File;)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/file/MapSaveLoad",
            "method": "isRegionDetectionComplete",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/file/MapSaveLoad",
            "method": "getSizeOfToLoadBranchCache",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/gui/GuiMapSwitching",
            "method": "getDropdownSelectionIdFromValue",
            "desc": "(Ljava/util/List;Ljava/lang/Object;)I",
            "value": "-1"
          },
          {
            "class": "xaero/map/misc/Misc",
            "method": "timerResult",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/misc/Misc",
            "method": "hasEffect",
            "desc": "(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/core/Holder;)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/icon/XaeroIcon",
            "method": "getOffsetX",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/icon/XaeroIcon",
            "method": "getOffsetY",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/gui/message/MessageBox$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/map/gui/message/MessageBox$Builder;",
            "value": "obj#458"
          },
          {
            "class": "xaero/map/gui/message/MessageBox$Builder",
            "method": "setWidth",
            "desc": "(I)Lxaero/map/gui/message/MessageBox$Builder;",
            "value": "obj#459"
          },
          {
            "class": "xaero/map/gui/message/MessageBox$Builder",
            "method": "setCapacity",
            "desc": "(I)Lxaero/map/gui/message/MessageBox$Builder;",
            "value": "obj#460"
          },
          {
            "class": "xaero/map/gui/message/MessageBox$Builder",
            "method": "build",
            "desc": "()Lxaero/map/gui/message/MessageBox;",
            "value": "obj#462"
          },
          {
            "class": "xaero/map/gui/message/MessageBox$Builder",
            "method": "begin",
            "desc": "()Lxaero/map/gui/message/MessageBox$Builder;",
            "value": "obj#465"
          },
          {
            "class": "xaero/map/server/level/LevelMapProperties",
            "method": "isUsable",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/server/level/LevelMapProperties",
            "method": "getId",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/mods/SupportFramedBlocks",
            "method": "isFrameBlock",
            "desc": "(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/Registry;Lnet/minecraft/world/level/block/state/BlockState;)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/misc/Area",
            "method": "getLeft",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/misc/Area",
            "method": "getTop",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/misc/Area",
            "method": "getRight",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/misc/Area",
            "method": "getBottom",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/misc/Area",
            "method": "hashCode",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/misc/Area",
            "method": "equals",
            "desc": "(Ljava/lang/Object;)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/radar/tracker/PlayerTrackerMapElementRenderer$Builder",
            "method": "setDefault",
            "desc": "()Lxaero/map/radar/tracker/PlayerTrackerMapElementRenderer$Builder;",
            "value": "obj#490"
          },
          {
            "class": "xaero/map/radar/tracker/PlayerTrackerMapElementRenderer$Builder",
            "method": "begin",
            "desc": "()Lxaero/map/radar/tracker/PlayerTrackerMapElementRenderer$Builder;",
            "value": "obj#493"
          },
          {
            "class": "xaero/map/region/ExportMapTileChunk",
            "method": "createLeafTexture",
            "desc": "()Lxaero/map/region/texture/LeafRegionTexture;",
            "value": "obj#495"
          },
          {
            "class": "xaero/map/palette/Paletted2DFastBitArrayIntStorage",
            "method": "getIndex",
            "desc": "(II)I",
            "value": "0"
          },
          {
            "class": "xaero/map/palette/Paletted2DFastBitArrayIntStorage",
            "method": "getDefaultValueCount",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/file/worldsave/biome/WorldDataBiomeManager",
            "method": "getChunkBiomeData",
            "desc": "(II)Lxaero/map/file/worldsave/biome/WorldDataReaderChunkBiomeData;",
            "value": "obj#2888"
          },
          {
            "class": "xaero/map/cache/BrokenBlockTintCache",
            "method": "getSize",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "xaero/map/radar/tracker/PlayerTrackerMapElement",
            "method": "wasRenderedOnRadar",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/radar/tracker/PlayerTrackerMapElementRenderer",
            "method": "getOrder",
            "desc": "()I",
            "value": "200"
          },
          {
            "class": "xaero/map/block/SingleBlockAndTintGetter",
            "method": "getBlockTint",
            "desc": "(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/ColorResolver;)I",
            "value": "-1"
          },
          {
            "class": "xaero/map/block/SingleBlockAndTintGetter",
            "method": "getHeight",
            "desc": "()I",
            "value": "64"
          },
          {
            "class": "xaero/map/region/BranchLeveledRegion",
            "method": "hasTextures",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/BranchLeveledRegion",
            "method": "loadingAnimation",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "xaero/map/region/BranchLeveledRegion",
            "method": "shouldEndProcessingAfterUpload",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/BranchLeveledRegion",
            "method": "isLoaded",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/BranchLeveledRegion",
            "method": "cleanAndCacheRequestsBlocked",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/BranchLeveledRegion",
            "method": "shouldBeProcessed",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/BranchLeveledRegion",
            "method": "skipCaching",
            "desc": "(I)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/BranchLeveledRegion",
            "method": "eligibleForSaving",
            "desc": "(J)Z",
            "value": "0"
          },
          {
            "class": "xaero/map/region/MapPixel",
            "method": "getVanillaTransparency",
            "desc": "(Lnet/minecraft/world/level/block/Block;)I",
            "value": "127"
          },
          {
            "class": "xaero/map/region/MapPixel",
            "method": "getBlockBrightness",
            "desc": "(FII)F",
            "value": "0f"
          },
          {
            "class": "xaero/map/region/MapPixel",
            "method": "getPixelLight",
            "desc": "(FI)F",
            "value": "0f"
          }
        ],
        "insns": 141239
      },
      "verdict": "partly",
      "summary": "18 of 18 listening patch sites land on a Horizon hook (100%); of 28 sites in all, the rest need hook points Horizon doesn't have"
    },
    {
      "mod_id": "yeetusexperimentus",
      "name": "Yeetus Experimentus",
      "version": "26.3.0.1",
      "license": "All Rights Reserved unless stated otherwise. Distribution permission is given to FeedTheBeast and CurseForge for use in modpacks",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [],
      "mixin_configs": [
        "yeetusexperimentus-common.mixins.json"
      ],
      "depends": [],
      "classes": 3,
      "methods": 7,
      "sites": [
        {
          "mixin": "com/sunekaer/yeetusexperimentus/mixin/CreateWorldScreenMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/CreateWorldScreen"
          ],
          "handler": "dontShowWarning",
          "kind": "modify-variable",
          "method": "tryApplyNewDataPacks",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/sunekaer/yeetusexperimentus/mixin/WorldOpenFlowsMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows"
          ],
          "handler": "alwaysStable",
          "kind": "modify-variable",
          "method": "confirmWorldCreation",
          "at": "HEAD",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        },
        {
          "mixin": "com/sunekaer/yeetusexperimentus/mixin/WorldOpenFlowsMixin",
          "targets": [
            "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows"
          ],
          "handler": "no",
          "kind": "modify-variable",
          "method": "openWorldCheckWorldStemCompatibility",
          "at": "STORE",
          "at_target": "",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-variable)"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/gui/screens/worldselection/CreateWorldScreen#tryApplyNewDataPacks @HEAD (modify-variable)": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#confirmWorldCreation @HEAD (modify-variable)": 1,
        "net/minecraft/client/gui/screens/worldselection/WorldOpenFlows#openWorldCheckWorldStemCompatibility @STORE (modify-variable)": 1
      },
      "api": [],
      "code": {
        "classes": 3,
        "features": {
          "mixin": 2
        },
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 3,
        "methods": 4,
        "tried": 4,
        "completed": 3,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/mojang/serialization/Lifecycle#stable()Lcom/mojang/serialization/Lifecycle;": 1
        },
        "runs": [
          {
            "class": "com/sunekaer/yeetusexperimentus/mixin/WorldOpenFlowsMixin",
            "method": "no",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "com/sunekaer/yeetusexperimentus/mixin/CreateWorldScreenMixin",
            "method": "dontShowWarning",
            "desc": "(Z)Z",
            "value": "0"
          }
        ],
        "insns": 12
      },
      "verdict": "no",
      "summary": "none of its 3 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    },
    {
      "mod_id": "yosbr",
      "name": "YOSBR",
      "version": "0.1.2",
      "license": "LGPL-3.0-only",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [],
      "mixin_configs": [],
      "depends": [],
      "classes": 1,
      "methods": 4,
      "sites": [],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {},
      "api": [
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LanguageAdapter",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "LanguageAdapterException",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 1,
        "features": {},
        "events": [],
        "examples": {}
      },
      "interp": {
        "classes": 1,
        "methods": 2,
        "tried": 2,
        "completed": 0,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "java/io/File#getParentFile()Ljava/io/File;": 1
        },
        "runs": [],
        "insns": 18
      },
      "verdict": "no",
      "summary": "no patch sites and no content: nothing to convert"
    },
    {
      "mod_id": "zoomify",
      "name": "Zoomify",
      "version": "2.17.0+mc26.3",
      "license": "LGPL-3.0-or-later",
      "loader": "fabric",
      "environment": "*",
      "entrypoints": [
        {
          "kind": "client",
          "value": "dev/isxander/zoomify/fabric/ZoomifyBootstrap"
        },
        {
          "kind": "modmenu",
          "value": "dev/isxander/zoomify/fabric/integrations/ModMenuIntegration"
        }
      ],
      "mixin_configs": [
        "zoomify.mixins.json"
      ],
      "depends": [
        "yet_another_config_lib_v3"
      ],
      "classes": 96,
      "methods": 544,
      "sites": [
        {
          "mixin": "dev/isxander/zoomify/mixins/spyglass/SpyglassItemMixin",
          "targets": [
            "net/minecraft/world/item/SpyglassItem"
          ],
          "handler": "shouldPlaySpyglassSound",
          "kind": "wrap-with-condition",
          "method": "use",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;playSound(Lnet/minecraft/sounds/SoundEvent;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/zoomify/mixins/spyglass/SpyglassItemMixin",
          "targets": [
            "net/minecraft/world/item/SpyglassItem"
          ],
          "handler": "shouldPlaySpyglassSound",
          "kind": "wrap-with-condition",
          "method": "stopUsing",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/world/entity/player/Player;playSound(Lnet/minecraft/sounds/SoundEvent;FF)V",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (wrap-with-condition)"
        },
        {
          "mixin": "dev/isxander/zoomify/mixins/zoom/MouseMixin",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "scrollStepCounter",
          "kind": "inject",
          "method": "onScroll",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/client/player/LocalPlayer;isSpectator()Z",
          "cancellable": true,
          "hook": null,
          "why": "no hook runs at net/minecraft/client/MouseHandler#onScroll INVOKE"
        },
        {
          "mixin": "dev/isxander/zoomify/mixins/zoom/MouseMixin",
          "targets": [
            "net/minecraft/client/MouseHandler"
          ],
          "handler": "modifyCinematicSmoothness",
          "kind": "modify-arg",
          "method": "turnPlayer",
          "at": "INVOKE",
          "at_target": "Lnet/minecraft/util/SmoothDouble;getNewDeltaValue(DD)D",
          "cancellable": false,
          "hook": null,
          "why": "no hook replaces or changes a call there (modify-arg)"
        }
      ],
      "listening": 0,
      "accessors": 0,
      "hooks": {},
      "wanted": {},
      "wanted_calls": {
        "net/minecraft/client/MouseHandler#onScroll @INVOKE": 1,
        "net/minecraft/util/SmoothDouble#getNewDeltaValue @INVOKE (modify-arg)": 1,
        "net/minecraft/world/entity/player/Player#playSound @INVOKE (wrap-with-condition)": 2
      },
      "api": [
        {
          "class": "ClientCommandRegistrationCallback",
          "horizon": "hook:register_commands",
          "note": "commands are registered",
          "classes": 1
        },
        {
          "class": "ClientModInitializer",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "ClientTickEvents",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "ClientTickEvents$EndTick",
          "horizon": "hook:tick",
          "note": "the client's tick",
          "classes": 1
        },
        {
          "class": "Event",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "FabricLoader",
          "horizon": "",
          "note": "",
          "classes": 1
        },
        {
          "class": "KeyMappingHelper",
          "horizon": "",
          "note": "",
          "classes": 1
        }
      ],
      "code": {
        "classes": 96,
        "features": {
          "command": 1,
          "events": 1,
          "mixin": 6
        },
        "events": [
          "Event"
        ],
        "examples": {}
      },
      "interp": {
        "classes": 96,
        "methods": 257,
        "tried": 257,
        "completed": 105,
        "handlers_tried": 0,
        "handlers_completed": 0,
        "missing": {
          "com/llamalad7/mixinextras/injector/wrapoperation/Operation#call([Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "dev/isxander/controlify/api/event/ControlifyEvents#LOOK_INPUT_MODIFIER": 1,
          "dev/isxander/yacl3/config/v3/KotlinExtsKt#getDefault(Ldev/isxander/yacl3/config/v3/ConfigEntry;)Ljava/lang/Object;": 1,
          "dev/isxander/zoomify/config/OverlayVisibility#name()Ljava/lang/String;": 1,
          "dev/isxander/zoomify/config/SoundBehaviour#name()Ljava/lang/String;": 1,
          "dev/isxander/zoomify/config/SpyglassBehaviour#name()Ljava/lang/String;": 1,
          "dev/isxander/zoomify/config/ZoomKeyBehaviour#name()Ljava/lang/String;": 1,
          "dev/isxander/zoomify/utils/TransitionType#apply(D)D": 1,
          "dev/isxander/zoomify/utils/TransitionType#name()Ljava/lang/String;": 1,
          "dev/isxander/zoomify/utils/TransitionType#ordinal()I": 1,
          "dev/nyon/klf/KlfLoadingContextKt#getMOD_BUS()Lnet/neoforged/bus/api/IEventBus;": 1,
          "java/lang/Object#clone()Ljava/lang/Object;": 6,
          "java/util/concurrent/CompletableFuture#getNow(Ljava/lang/Object;)Ljava/lang/Object;": 2,
          "kotlin/jvm/functions/Function0#invoke()Ljava/lang/Object;": 8,
          "kotlin/jvm/functions/Function1#invoke(Ljava/lang/Object;)Ljava/lang/Object;": 1,
          "net/fabricmc/fabric/api/client/command/v2/ClientCommandRegistrationCallback#EVENT": 1,
          "net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientTickEvents#END_CLIENT_TICK": 1,
          "net/fabricmc/fabric/api/client/keymapping/v1/KeyMappingHelper#registerKeyMapping(Lnet/minecraft/client/KeyMapping;)Lnet/minecraft/client/KeyMapping;": 2,
          "net/fabricmc/loader/api/FabricLoader#getInstance()Lnet/fabricmc/loader/api/FabricLoader;": 2,
          "net/minecraft/client/Minecraft#getCameraEntity()Lnet/minecraft/world/entity/Entity;": 1,
          "net/minecraft/client/Minecraft#getInstance()Lnet/minecraft/client/Minecraft;": 1,
          "net/minecraft/client/gui/components/toasts/SystemToast$SystemToastId#PERIODIC_NOTIFICATION": 1,
          "net/minecraft/resources/Identifier#fromNamespaceAndPath(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/resources/Identifier;": 1,
          "net/neoforged/fml/loading/FMLPaths#CONFIGDIR": 1,
          "net/neoforged/neoforge/common/NeoForge#EVENT_BUS": 2
        },
        "runs": [
          {
            "class": "dev/isxander/zoomify/config/ZoomifySettings",
            "method": "getKeybindScrolling",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/config/ZoomifySettings",
            "method": "getFirstLaunch",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_QUAD",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_QUAD",
            "method": "inverse",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_OUT_CUBIC",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/InstantInterpolator",
            "method": "tickInterpolation",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/InstantInterpolator",
            "method": "modifyInterpolation",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/InstantInterpolator",
            "method": "modifyPrevInterpolation",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_EXP",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_EXP",
            "method": "inverse",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_CUBIC",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_CUBIC",
            "method": "inverse",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_OUT_SINE",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_OUT_SINE",
            "method": "inverse",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/config/demo/ThirdPersonDemo",
            "method": "getRenderHud",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/TransitionInterpolator",
            "method": "tickInterpolation",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/TransitionInterpolator",
            "method": "modifyPrevInterpolation",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$INSTANT",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_OUT_CUBIC",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_OUT_CUBIC",
            "method": "inverse",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_OUT_QUAD",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$LINEAR",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/config/demo/ZoomDemoImageRenderer",
            "method": "getKeyDown",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/config/demo/ZoomDemoImageRenderer",
            "method": "getScrollTiers",
            "desc": "()I",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/mixins/zoom/MouseMixin",
            "method": "smoothCameraIfZoom",
            "desc": "(Z)Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/mixins/zoom/MouseMixin",
            "method": "modifyCinematicSmoothness",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/config/demo/FirstPersonDemo",
            "method": "getKeepHandFov",
            "desc": "()Z",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/LinearInterpolator",
            "method": "getGoingIn",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/zoomify/zoom/LinearInterpolator",
            "method": "tickInterpolation",
            "desc": "(DDD)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/LinearInterpolator",
            "method": "isSmooth",
            "desc": "()Z",
            "value": "1"
          },
          {
            "class": "dev/isxander/zoomify/zoom/LinearInterpolator",
            "method": "modifyInterpolation",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/LinearInterpolator",
            "method": "modifyPrevInterpolation",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/Interpolator",
            "method": "modifyInterpolation",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/Interpolator",
            "method": "modifyPrevInterpolation",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_OUT_EXP",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_OUT_SINE",
            "method": "apply",
            "desc": "(D)D",
            "value": "-0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_OUT_EXP",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_OUT_EXP",
            "method": "inverse",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_SINE",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_IN_SINE",
            "method": "inverse",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/Interpolator$DefaultImpls",
            "method": "modifyInterpolation",
            "desc": "(Ldev/isxander/zoomify/zoom/Interpolator;D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/zoom/Interpolator$DefaultImpls",
            "method": "modifyPrevInterpolation",
            "desc": "(Ldev/isxander/zoomify/zoom/Interpolator;D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_OUT_QUAD",
            "method": "apply",
            "desc": "(D)D",
            "value": "0"
          },
          {
            "class": "dev/isxander/zoomify/utils/TransitionType$EASE_OUT_QUAD",
            "method": "inverse",
            "desc": "(D)D",
            "value": "-0"
          }
        ],
        "insns": 2518
      },
      "verdict": "no",
      "summary": "none of its 4 patch sites has a Horizon hook: it changes code Horizon has none of, or draws the game itself"
    }
  ],
  "errors": [
    "bettergrassify.jar: fabric.mod.json: control character (\\u0000-\\u001F) found while parsing a string at line 7 column 0",
    "entity-model-features.jar: fabric.mod.json: control character (\\u0000-\\u001F) found while parsing a string at line 7 column 0",
    "entitytexturefeatures.jar: fabric.mod.json: control character (\\u0000-\\u001F) found while parsing a string at line 7 column 0",
    "euphoria-patches.jar: fabric.mod.json: control character (\\u0000-\\u001F) found while parsing a string at line 7 column 0"
  ]
}