Showing preview only (486K chars total). Download the full file or copy to clipboard to get everything.
Repository: isXander/Debugify
Branch: main
Commit: e6d218185202
Files: 255
Total size: 398.5 KB
Directory structure:
gitextract_dituu3lz/
├── .bugs
├── .editorconfig
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug-report.yml
│ │ ├── config.yml
│ │ └── patch-request.yml
│ └── workflows/
│ ├── check-bug-fixes.yml
│ ├── gradle.yml
│ └── publish.yml
├── .gitignore
├── GUIDELINES.md
├── LICENSE
├── PATCHED.md
├── README.md
├── build.gradle.kts
├── changelogs/
│ ├── 1.18.2/
│ │ ├── 1.0.0.md
│ │ ├── 1.1.0.md
│ │ ├── 1.10.0.md
│ │ ├── 1.11.0.md
│ │ ├── 1.2.0.md
│ │ ├── 1.2.1.md
│ │ ├── 1.2.2.md
│ │ ├── 1.3.0.md
│ │ ├── 1.4.0.md
│ │ ├── 1.4.1.md
│ │ ├── 1.5.0.md
│ │ ├── 1.6.0.md
│ │ ├── 1.7.0.md
│ │ ├── 1.7.1.md
│ │ ├── 1.7.2.md
│ │ ├── 1.8.0.md
│ │ ├── 1.8.1.md
│ │ └── 1.9.0.md
│ ├── 1.19/
│ │ ├── 2.0.0.md
│ │ ├── 2.1.0.md
│ │ ├── 2.2.0.md
│ │ ├── 2.3.0.md
│ │ ├── 2.3.1.md
│ │ └── 2.3.2.md
│ ├── 1.19.1/
│ │ ├── 2.3.3.md
│ │ ├── 2.3.4.md
│ │ └── 2.4.0.md
│ ├── 1.19.2/
│ │ ├── 2.4.1.md
│ │ ├── 2.5.0.md
│ │ ├── 2.6.0.md
│ │ ├── 2.6.1.md
│ │ ├── 2.6.2.md
│ │ ├── 2.7.0.md
│ │ ├── 2.7.1.md
│ │ └── 2.8.0.md
│ ├── 1.19.3/
│ │ ├── 1.19.3+1.0.md
│ │ ├── 1.19.3+1.1.md
│ │ └── 1.19.3+1.2.md
│ ├── 1.19.4/
│ │ ├── 1.19.4+1.0.md
│ │ ├── 1.19.4+1.1.md
│ │ ├── 1.19.4+2.0.md
│ │ ├── 1.19.4+2.1.md
│ │ └── 1.19.4+2.2.md
│ ├── 1.20/
│ │ ├── 1.20+1.0.md
│ │ └── 1.20+1.1.md
│ ├── 1.20.1/
│ │ ├── 1.20.1+1.0.md
│ │ ├── 1.20.1+1.1.md
│ │ └── 1.20.1+2.0.md
│ ├── 1.20.2/
│ │ └── 1.20.2+1.0.md
│ ├── 1.20.3/
│ │ ├── 1.20.3+1.0.md
│ │ └── 1.20.3+1.1.md
│ ├── 1.20.4/
│ │ ├── 1.20.4+1.0.md
│ │ └── 1.20.4+1.1.md
│ ├── 1.21/
│ │ └── 1.21+1.0.md
│ ├── 1.21.1/
│ │ └── 1.21.1+1.0.md
│ ├── 1.21.10/
│ │ ├── 1.21.10+1.0.md
│ │ └── 1.21.10+1.1.md
│ ├── 1.21.11/
│ │ └── 1.21.11+1.0.md
│ ├── 1.21.3/
│ │ └── 1.21.3+1.0.md
│ ├── 1.21.4/
│ │ ├── 1.21.4+1.0.md
│ │ └── 1.21.4+1.1.md
│ ├── 1.21.5/
│ │ └── 1.21.5+1.0.md
│ ├── 1.21.7/
│ │ └── 1.21.7+1.0.md
│ ├── 1.21.8/
│ │ └── 1.21.8+1.0.md
│ ├── 26.1.2/
│ │ ├── 26.1.2+1.0.md
│ │ └── 26.1.2.2.md
│ └── header.md
├── crowdin.yml
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── modstitch.ct
├── scripts/
│ └── check_bug_fixes.py
├── settings.gradle.kts
└── src/
├── client/
│ ├── java/
│ │ └── dev/
│ │ └── isxander/
│ │ └── debugify/
│ │ └── client/
│ │ ├── DebugifyClient.java
│ │ ├── gui/
│ │ │ ├── BugFixController.java
│ │ │ ├── ConfigGuiHelper.java
│ │ │ └── NoYACLScreen.java
│ │ ├── helpers/
│ │ │ ├── mc118740/
│ │ │ │ └── LocalPlayerDuck.java
│ │ │ ├── mc122477/
│ │ │ │ └── KeyboardPollCounter.java
│ │ │ ├── mc147605/
│ │ │ │ └── TextFieldHolder.java
│ │ │ ├── mc197260/
│ │ │ │ └── DebugifyLightProvider.java
│ │ │ ├── mc237493/
│ │ │ │ ├── DebugifyTelemetry.java
│ │ │ │ └── DebugifyTelemetryAccessor.java
│ │ │ └── mc26757/
│ │ │ └── TooltipWrapper.java
│ │ ├── integrations/
│ │ │ └── ModMenuIntegration.java
│ │ ├── mixins/
│ │ │ ├── basic/
│ │ │ │ ├── mc105068/
│ │ │ │ │ └── LivingEntityMixin.java
│ │ │ │ ├── mc115092/
│ │ │ │ │ └── SquidRendererMixin.java
│ │ │ │ ├── mc116379/
│ │ │ │ │ └── FishingHookRendererMixin.java
│ │ │ │ ├── mc118740/
│ │ │ │ │ ├── GuiMixin.java
│ │ │ │ │ ├── LocalPlayerMixin.java
│ │ │ │ │ └── PlayerMixin.java
│ │ │ │ ├── mc122477/
│ │ │ │ │ ├── EditBoxMixin.java
│ │ │ │ │ └── MinecraftMixin.java
│ │ │ │ ├── mc122627/
│ │ │ │ │ └── CommandSuggestionsMixin.java
│ │ │ │ ├── mc127970/
│ │ │ │ │ └── ItemInHandRendererMixin.java
│ │ │ │ ├── mc143474/
│ │ │ │ │ └── ClientPacketListenerMixin.java
│ │ │ │ ├── mc165305/
│ │ │ │ │ └── RenderPipelinesMixin.java
│ │ │ │ ├── mc165381/
│ │ │ │ │ └── LocalPlayerMixin.java
│ │ │ │ ├── mc176559/
│ │ │ │ │ ├── ItemStackAccessor.java
│ │ │ │ │ └── MultiPlayerGameModeMixin.java
│ │ │ │ ├── mc188359/
│ │ │ │ │ ├── CakeBlockMixin.java
│ │ │ │ │ └── ConsumableMixin.java
│ │ │ │ ├── mc197260/
│ │ │ │ │ ├── ArmorStandRendererMixin.java
│ │ │ │ │ └── LivingEntityRendererMixin.java
│ │ │ │ ├── mc206540/
│ │ │ │ │ └── EntityMixin.java
│ │ │ │ ├── mc210318/
│ │ │ │ │ └── BookSignScreenMixin.java
│ │ │ │ ├── mc211561/
│ │ │ │ │ └── FishingHookRendererMixin.java
│ │ │ │ ├── mc215531/
│ │ │ │ │ └── GuiMixin.java
│ │ │ │ ├── mc217716/
│ │ │ │ │ └── GameRendererMixin.java
│ │ │ │ ├── mc237493/
│ │ │ │ │ ├── OptionsMixin.java
│ │ │ │ │ ├── TelemetryEventInstanceMixin.java
│ │ │ │ │ ├── TelemetryEventWidgetMixin.java
│ │ │ │ │ └── TelemetryInfoScreenMixin.java
│ │ │ │ ├── mc242809/
│ │ │ │ │ ├── DirectJoinServerScreenMixin.java
│ │ │ │ │ └── ManageServerScreenMixin.java
│ │ │ │ ├── mc251068/
│ │ │ │ │ └── WorldSelectionListMixin.java
│ │ │ │ ├── mc259512/
│ │ │ │ │ └── LivingEntityMixin.java
│ │ │ │ ├── mc267376/
│ │ │ │ │ └── CameraMixin.java
│ │ │ │ ├── mc268420/
│ │ │ │ │ └── GuiMixin.java
│ │ │ │ ├── mc280220/
│ │ │ │ │ └── DolphinCarryingItemLayerMixin.java
│ │ │ │ ├── mc298225/
│ │ │ │ │ └── CameraMixin.java
│ │ │ │ ├── mc298558/
│ │ │ │ │ └── AtmosphericFogEnvironmentMixin.java
│ │ │ │ ├── mc35361/
│ │ │ │ │ └── MinecraftMixin.java
│ │ │ │ ├── mc4490/
│ │ │ │ │ └── FishingHookRendererMixin.java
│ │ │ │ ├── mc46737/
│ │ │ │ │ └── GameRendererMixin.java
│ │ │ │ ├── mc46766/
│ │ │ │ │ └── MinecraftMixin.java
│ │ │ │ ├── mc57057/
│ │ │ │ │ └── GuardianAttackSoundInstanceMixin.java
│ │ │ │ ├── mc577/
│ │ │ │ │ └── AbstractContainerScreenMixin.java
│ │ │ │ ├── mc59810/
│ │ │ │ │ └── MouseHandlerMixin.java
│ │ │ │ ├── mc61489/
│ │ │ │ │ ├── BookEditScreenMixin.java
│ │ │ │ │ └── BookViewScreenMixin.java
│ │ │ │ ├── mc79545/
│ │ │ │ │ └── ExperienceBarRendererMixin.java
│ │ │ │ ├── mc80859/
│ │ │ │ │ └── AbstractContainerScreenMixin.java
│ │ │ │ ├── mc90683/
│ │ │ │ │ └── ClientPacketListenerMixin.java
│ │ │ │ └── mc93384/
│ │ │ │ └── LivingEntityMixin.java
│ │ │ └── gameplay/
│ │ │ ├── mc159163/
│ │ │ │ └── ClientPacketListenerMixin.java
│ │ │ └── mc231097/
│ │ │ └── LocalPlayerMixin.java
│ │ └── utils/
│ │ └── ClientUtils.java
│ └── resources/
│ └── debugify.client.mixins.json
├── gametest/
│ ├── java/
│ │ └── dev/
│ │ └── isxander/
│ │ └── debugify/
│ │ └── test/
│ │ ├── DebugifyApiTest.java
│ │ ├── DebugifyTestUtils.java
│ │ └── suites/
│ │ ├── MC100991.java
│ │ ├── MC30391.java
│ │ ├── MC72151.java
│ │ ├── MC8187.java
│ │ └── MC93018.java
│ └── resources/
│ ├── data/
│ │ └── debugify/
│ │ └── gametest/
│ │ └── structures/
│ │ └── mc-8187.snbt
│ └── fabric.mod.json
└── main/
├── java/
│ └── dev/
│ └── isxander/
│ └── debugify/
│ ├── Debugify.java
│ ├── api/
│ │ └── DebugifyApi.java
│ ├── config/
│ │ └── DebugifyConfig.java
│ ├── error/
│ │ ├── CrashReportInjector.java
│ │ ├── DebugifyErrorHandler.java
│ │ ├── ErrorStage.java
│ │ └── MixinErrorEntry.java
│ ├── fixes/
│ │ ├── BugFix.java
│ │ ├── BugFixData.java
│ │ ├── FixCategory.java
│ │ └── OS.java
│ ├── mixinplugin/
│ │ ├── BugFixDataCache.java
│ │ ├── DebugifyDebugFlags.java
│ │ └── MixinPlugin.java
│ └── mixins/
│ ├── basic/
│ │ ├── mc100991/
│ │ │ └── FishingHookMixin.java
│ │ ├── mc119754/
│ │ │ └── FireworkRocketEntityMixin.java
│ │ ├── mc121706/
│ │ │ └── RangedBowAttackGoalMixin.java
│ │ ├── mc121903/
│ │ │ └── MinecraftCommandBlockMixin.java
│ │ ├── mc123450/
│ │ │ └── ItemFrameMixin.java
│ │ ├── mc129909/
│ │ │ └── ServerPlayerMixin.java
│ │ ├── mc131562/
│ │ │ └── ServerGamePacketListenerImplMixin.java
│ │ ├── mc132878/
│ │ │ └── ArmorStandMixin.java
│ │ ├── mc133218/
│ │ │ └── ServerPlayerMixin.java
│ │ ├── mc134110/
│ │ │ └── ChestBlockMixin.java
│ │ ├── mc139041/
│ │ │ └── FishingRodItemMixin.java
│ │ ├── mc147659/
│ │ │ └── CatSpawnerMixin.java
│ │ ├── mc153010/
│ │ │ └── FoxMixin.java
│ │ ├── mc155509/
│ │ │ └── PufferfishMixin.java
│ │ ├── mc158900/
│ │ │ └── PlayerListMixin.java
│ │ ├── mc159283/
│ │ │ └── DensityFunctionsMixin.java
│ │ ├── mc160095/
│ │ │ └── CactusBlockMixin.java
│ │ ├── mc168573/
│ │ │ └── BlocksAttacksMixin.java
│ │ ├── mc170462/
│ │ │ └── MobEffectsMixin.java
│ │ ├── mc176806/
│ │ │ └── RespawnAnchorBlockMixin.java
│ │ ├── mc177381/
│ │ │ └── LocateCommandMixin.java
│ │ ├── mc179072/
│ │ │ └── SwellGoalMixin.java
│ │ ├── mc183990/
│ │ │ └── MobMixin.java
│ │ ├── mc187100/
│ │ │ └── EnderDragonMixin.java
│ │ ├── mc200418/
│ │ │ └── ZombieVillagerMixin.java
│ │ ├── mc201374/
│ │ │ └── CampfireBlockMixin.java
│ │ ├── mc202637/
│ │ │ └── FoodPropertiesMixin.java
│ │ ├── mc206922/
│ │ │ ├── EntityMixin.java
│ │ │ └── ItemEntityMixin.java
│ │ ├── mc215530/
│ │ │ └── ServerPlayerMixin.java
│ │ ├── mc221257/
│ │ │ └── ShulkerBulletMixin.java
│ │ ├── mc223153/
│ │ │ └── BlocksMixin.java
│ │ ├── mc224729/
│ │ │ └── ChunkMapMixin.java
│ │ ├── mc226961/
│ │ │ └── ExperienceOrbMixin.java
│ │ ├── mc227008/
│ │ │ └── EnderManMixin.java
│ │ ├── mc227337/
│ │ │ └── ShulkerBulletMixin.java
│ │ ├── mc231743/
│ │ │ └── FlowerPotBlockMixin.java
│ │ ├── mc232869/
│ │ │ └── StriderMixin.java
│ │ ├── mc245394/
│ │ │ └── RaidMixin.java
│ │ ├── mc263999/
│ │ │ └── BreakDoorGoalMixin.java
│ │ ├── mc264285/
│ │ │ └── CreeperMixin.java
│ │ ├── mc264979/
│ │ │ └── SettingsMixin.java
│ │ ├── mc267125/
│ │ │ └── PlayerListMixin.java
│ │ ├── mc268617/
│ │ │ └── FileUtilMixin.java
│ │ ├── mc271899/
│ │ │ └── StructureTemplateMixin.java
│ │ ├── mc272431/
│ │ │ └── EnderDragonMixin.java
│ │ ├── mc297837/
│ │ │ └── WaypointTransmitterMixin.java
│ │ ├── mc298066/
│ │ │ └── LivingEntityMixin.java
│ │ ├── mc30391/
│ │ │ └── LivingEntityMixin.java
│ │ ├── mc44654/
│ │ │ └── EntityMixin.java
│ │ ├── mc7569/
│ │ │ └── RconConsoleSourceMixin.java
│ │ ├── mc82263/
│ │ │ └── EnderDragonMixin.java
│ │ ├── mc84661/
│ │ │ └── MobEffectsMixin.java
│ │ ├── mc88371/
│ │ │ └── DragonLandingPhaseMixin.java
│ │ ├── mc89146/
│ │ │ └── ChunkAccessMixin.java
│ │ ├── mc93018/
│ │ │ └── AnimalMixin.java
│ │ └── mc94054/
│ │ └── WallClimberNavigationMixin.java
│ ├── errorhandler/
│ │ └── CrashReportMixin.java
│ └── gameplay/
│ ├── mc136249/
│ │ └── LivingEntityMixin.java
│ └── mc8187/
│ └── TreeFeatureMixin.java
├── resources/
│ ├── assets/
│ │ └── debugify/
│ │ └── lang/
│ │ ├── el_gr.json
│ │ ├── en_us.json
│ │ ├── es_ar.json
│ │ ├── es_mx.json
│ │ ├── fr_fr.json
│ │ ├── it_it.json
│ │ ├── pt_br.json
│ │ ├── ru_ru.json
│ │ ├── tr_tr.json
│ │ ├── uk_ua.json
│ │ ├── vi_vn.json
│ │ ├── zh_cn.json
│ │ └── zh_tw.json
│ └── debugify.mixins.json
└── templates/
└── fabric.mod.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .bugs
================================================
# This file is used to generate PATCHED.md
# Please run `./gradlew generatePatchedTable` to update PATCHED.md based on this file
# Try not to re-order this file (it sorts itself!), put additions at the end of each section - this helps with git conflicts
patched 577 client basic
patched 4490 client basic
patched 12062 client basic
patched 35361 client basic
patched 46737 client basic
patched 46766 client basic
patched 57057 client basic
patched 59810 client basic
patched 61489 client basic
patched 79545 client basic
patched 80859 client basic
patched 90683 client basic
patched 93384 client basic
patched 105068 client basic
patched 115092 client basic
patched 116379 client basic
patched 116510 client basic
patched 118740 client basic
patched 122627 client basic
patched 122477 client basic
patched 127970 client basic
patched 143474 client basic
patched 159163 client gameplay
patched 165306 client basic
patched 165381 client basic
patched 168573 client basic
patched 176559 client basic
patched 188359 client basic
patched 197260 client basic
patched 206540 client basic
patched 210318 client basic
patched 211561 client basic
patched 215531 client basic
patched 217716 client basic
patched 231097 client gameplay
patched 237493 client basic
patched 242809 client basic
patched 259512 client basic
patched 267376 client basic
patched 268420 client basic
patched 280220 client basic
patched 298225 client basic
patched 298558 client basic
patched 7569 server basic
patched 8187 server gameplay
patched 30391 server basic
patched 81773 server basic
patched 82263 server basic
patched 84661 server basic
patched 88371 server basic
patched 89146 server basic
patched 93018 server basic
patched 94054 server basic
patched 100991 server basic
patched 119754 server basic
patched 121706 server basic
patched 121903 server basic
patched 123450 server basic
patched 129909 server basic
patched 132878 server basic
patched 134110 server basic
patched 136249 server gameplay
patched 139041 server basic
patched 147659 server basic
patched 155509 server basic
patched 159283 server basic
patched 160095 server basic
patched 170462 server basic
patched 176806 server basic
patched 177381 server basic
patched 179072 server basic
patched 183990 server basic
patched 187100 server basic
patched 200418 server basic
patched 201374 server basic
patched 202637 server basic
patched 206705 server basic
patched 206922 server basic
patched 214147 server basic
patched 215530 server basic
patched 221257 server basic
patched 223153 server basic
patched 224729 server basic
patched 226961 server basic
patched 227008 server basic
patched 227337 server basic
patched 231743 server basic
patched 232869 server basic
patched 245394 server basic
patched 251068 server basic
patched 267125 server basic
patched 268617 server basic
patched 271899 server basic
patched 272431 server basic
patched 298066 server basic
patched 263999 server basic
patched 153010 server basic
patched 44654 server basic
patched 264979 server basic
patched 264285 server basic
patched 131562 server basic
patched 133218 server basic
patched 158900 server basic
previous 2025 17w47a
previous 53312 22w17a
previous 72687 22w24a
previous 148149 1.19.1-pre6
previous 235035 22w15a
previous 26757 22w42a
previous 135973 22w42a
previous 145748 22w42a
previous 84873 22w43a
previous 147605 22w46a
previous 151412 22w46a
previous 233042 22w46a
previous 249059 22w46a
previous 228976 1.19.3-pre3
previous 165595 23w03a
previous 162253 23w16a
previous 121772 23w31a
previous 140646 23w31a
previous 90084 23w31a
previous 72151 24w06a
previous 193343 24w18a
previous 14923 24w19a
previous 124177 24w20a
previous 31819 24w21a
previous 227169 24w33a
previous 135971 24w33a
previous 12829 24w44a
previous 55347 24w44a
previous 111516 24w44a
previous 263865 25w04a
previous 112730 25w21a
previous 183776 25w31a
previous 46503 25w33a
previous 69216 25w33a
previous 119417 25w33a
previous 147784 25w34a
previous 299115 25w34a
previous 267469 1.21.9
previous 201723 1.21.9
previous 22882 25w41a
previous 199467 25w45a
previous 219981 26.1-snapshot-1
previous 123605 26.1-snapshot-6
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
trim_trailing_whitespace = true
================================================
FILE: .github/FUNDING.yml
================================================
ko_fi: isxander
================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.yml
================================================
name: Bug Report
description: Let us know of an incompatibility with a mod or crashes etc.
title: "[Bug] Summary of bug"
labels: [bug]
body:
- type: textarea
id: bug
attributes:
label: Bug Description
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: how-to-reproduce
attributes:
label: How to Reproduce?
description: Steps to reproduce the behavior
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: false
- type: textarea
id: expected-behavior
attributes:
label: Expected Behavior
description: A clear and concise description of what you expected to happen.
validations:
required: false
- type: input
id: version
attributes:
label: Version
description: What version of the mod are you on?
placeholder: 1.0.0
validations:
required: true
- type: input
id: loader-version
attributes:
label: Fabric/Quilt Loader Version
description: What version of the mod loader are you on?
placeholder: 0.14.8 for 1.19.1
validations:
required: true
- type: textarea
id: logs-extra-context
attributes:
label: Logs or additional context
description: Please copy and paste any relevant log output into a paste website such as [Hastebin](https://hst.sh) and then link them here. You may also give any additional information here too.
- type: checkboxes
id: has-not-been-reported
attributes:
label: Has not been reported.
description: You made sure this bug hasn't already been reported.
options:
- label: I made sure this bug hasn't already been reported.
required: true
- type: checkboxes
id: is-up-to-date
attributes:
label: Is on most update to date version.
description: You made sure that you are on the most recent version of the fabric/quilt loader and the mod.
options:
- label: I made sure I am using the most up to date fabric/quilt loader and mod version.
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: true
================================================
FILE: .github/ISSUE_TEMPLATE/patch-request.yml
================================================
name: Patch Request
description: Propose adding a patch for a Minecraft bug.
title: "[Patch Request] MC-123456"
labels: [patch request]
body:
- type: input
id: mc-id
attributes:
label: Mojang Bug Report ID
description: What bug report would you like to be patched?
placeholder: MC-123456
validations:
required: true
- type: checkboxes
id: adheres-to-guidelines
attributes:
label: Bug adhere to the guidelines.
description: You made sure that the bug adheres to the [guidelines](https://github.com/isXander/Debugify/blob/1.19/GUIDELINES.md).
options:
- label: I made sure that this bug adheres to the guidelines.
required: true
- type: checkboxes
id: not-already-requested
attributes:
label: Has not already been requested.
description: You made sure that the patch has not already been requested.
options:
- label: I am certain this patch has not already been requested.
required: true
- type: checkboxes
id: not-already-implemented
attributes:
label: Has not already been implemented.
description: You made sure that the patch has not already been implemented.
options:
- label: I know that this patch isn't already in the latest version of the mod.
required: true
- type: input
id: existing-implementation
attributes:
label: Existing implementation
description: Link here if a mod for this fix already exists.
validations:
required: false
================================================
FILE: .github/workflows/check-bug-fixes.yml
================================================
name: Bug Status Check
on:
push:
branches:
- '*'
paths:
- 'PATCHED.md'
schedule:
- cron: 0 0 * * *
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
name: Check bug status
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install pip requirements
run: pip install requests packaging
- name: Run script
run: python scripts/check_bug_fixes.py
================================================
FILE: .github/workflows/gradle.yml
================================================
name: Gradle CI
on:
push:
branches:
- '*'
paths-ignore:
- 'README.md'
- 'PATCHED.md'
- 'GUIDELINES.md'
- 'LICENSE'
- '.gitignore'
- '.editorconfig'
- 'changelogs/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'README.md'
- 'LICENSE'
- '.gitignore'
- '.editorconfig'
- 'changelogs/**'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
name: Build with gradle
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 21
distribution: temurin
- uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
./.gradle/loom-cache
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build --no-daemon
- uses: actions/upload-artifact@v4
with:
name: debugify-artifacts
path: build/libs/*.jar
================================================
FILE: .github/workflows/publish.yml
================================================
name: Publish Debugify
on: workflow_dispatch
jobs:
publish:
if: contains('["isXander"]', github.actor)
runs-on: ubuntu-latest
name: Publish to all platforms
steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v2.3.1
with:
java-version: 17
distribution: temurin
- uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
./.gradle/loom-cache
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Publish to All Platforms
run: ./gradlew publishDebugify --no-daemon
env:
xander-api.username: wyvest
xander-api.password: ${{ secrets.XANDER_API_PASS }}
modrinth.token: ${{ secrets.MODRINTH_XANDER_TOKEN }}
curseforge.token: ${{ secrets.CURSEFORGE_CI_TOKEN }}
github.token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
/.idea
.gradle/
build/
run/
!*/.gitkeep
/venv
================================================
FILE: GUIDELINES.md
================================================
# MC Bug Checklist
* Must be a bug in a stable release (not in a snapshot, future release, etc)
* Must have a meaningful impact to a player or admin. (even a niche one)
* Before trying to fix a bug, make sure you can reproduce it.
* Must be a bug that has been confirmed by mojang or community consensus and open in the bug tracker.
================================================
FILE: LICENSE
================================================
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
================================================
FILE: PATCHED.md
================================================
<!--
!!!! DO NOT UPDATE THIS FILE MANUALLY !!!!
Generated by `./gradlew generatePatchedTable`
Sourced from `.bugs`
Generated 2026-04-09T20:45:54.857035433
-->
# List of Patched Bugs
## Unpatched in vanilla
### Client side
| Type | Bug ID | Name |
|------|--------|------|
| Basic | [MC-577](https://mojira.dev/MC-577) | Mouse buttons block all inventory controls that are not default |
| Basic | [MC-4490](https://mojira.dev/MC-4490) | Fishing line not attached to fishing rod in third person while crouching |
| Basic | [MC-12062](https://mojira.dev/MC-12062) | Hotbar selection resets to the far left when exiting the end |
| Basic | [MC-35361](https://mojira.dev/MC-35361) | Inventory opening is detected while in Nether Portal |
| Basic | [MC-46737](https://mojira.dev/MC-46737) | Entities' shaders are applied when beginning to spectate them in third person |
| Basic | [MC-46766](https://mojira.dev/MC-46766) | Breaking particles, sounds, and block cracks can be created in spectator mode |
| Basic | [MC-57057](https://mojira.dev/MC-57057) | Guardian laser attack sound ignores distance |
| Basic | [MC-59810](https://mojira.dev/MC-59810) | |
| Basic | [MC-61489](https://mojira.dev/MC-61489) | |
| Basic | [MC-79545](https://mojira.dev/MC-79545) | The experience bar disappears when too many levels are given to the player |
| Basic | [MC-80859](https://mojira.dev/MC-80859) | Starting to drag item stacks over other compatible stacks makes the latter invisible until appearance change (stack size increases) |
| Basic | [MC-90683](https://mojira.dev/MC-90683) | "Received unknown passenger" - Entities with differing render distances as passengers outputs error |
| Basic | [MC-93384](https://mojira.dev/MC-93384) | Bubbles appear at the feet of drowning mobs |
| Basic | [MC-105068](https://mojira.dev/MC-105068) | Attacking a shield-blocking player always plays the player hurts sound |
| Basic | [MC-115092](https://mojira.dev/MC-115092) | Squid/glow squid named "Dinnerbone" or "Grumm" is not upside-down |
| Basic | [MC-116379](https://mojira.dev/MC-116379) | Punching with a cast fishing rod in the off-hand detaches fishing line from rod |
| Basic | [MC-116510](https://mojira.dev/MC-116510) | Attack indicator doesn't indicate (most of the time) that breaking instantly-mineable blocks resets your attack |
| Basic | [MC-118740](https://mojira.dev/MC-118740) | Performing any right-click action silently resets the attack cooldown |
| Basic | [MC-122477](https://mojira.dev/MC-122477) | Linux/GNU: Opening chat sometimes writes 't' |
| Basic | [MC-122627](https://mojira.dev/MC-122627) | Tab suggestion box has missing padding on right side |
| Basic | [MC-127970](https://mojira.dev/MC-127970) | Using Riptide on a trident with an item in your off-hand causes visual glitch with said item |
| Basic | [MC-143474](https://mojira.dev/MC-143474) | Respawning causes your hotbar to reset to the first space |
| Gameplay | [MC-159163](https://mojira.dev/MC-159163) | Quickly pressing the sneak key causes the sneak animation to play twice |
| Basic | [MC-165306](https://mojira.dev/MC-165306) | |
| Basic | [MC-165381](https://mojira.dev/MC-165381) | Block breaking can be delayed by dropping/throwing the tool while breaking a block |
| Basic | [MC-168573](https://mojira.dev/MC-168573) | After breaking a shield, the player's off-hand can't finish using some items |
| Basic | [MC-176559](https://mojira.dev/MC-176559) | Breaking process resets when a pickaxe enchanted with Mending mends by XP / Mending slows down breaking blocks again |
| Basic | [MC-188359](https://mojira.dev/MC-188359) | Burp sound does not play after drinking or after eating cake |
| Basic | [MC-197260](https://mojira.dev/MC-197260) | Armor Stand renders itself and armor dark if its head is in a solid block |
| Basic | [MC-206540](https://mojira.dev/MC-206540) | Increased input delay when riding an entity |
| Basic | [MC-210318](https://mojira.dev/MC-210318) | Maximum length of book title changed from 16 to 15 characters |
| Basic | [MC-211561](https://mojira.dev/MC-211561) | Fishing line appears in opposite hand when switching slots |
| Basic | [MC-215531](https://mojira.dev/MC-215531) | The carved pumpkin overlay is rendered in spectator mode |
| Basic | [MC-217716](https://mojira.dev/MC-217716) | The green nausea overlay isn't removed when switching into spectator mode |
| Basic | [MC-231097](https://mojira.dev/MC-231097) | Holding the "Use" button continues to slow down the player even after the used item has been dropped |
| Basic | [MC-237493](https://mojira.dev/MC-237493) | Telemetry cannot be disabled |
| Basic | [MC-242809](https://mojira.dev/MC-242809) | |
| Basic | [MC-259512](https://mojira.dev/MC-259512) | Horizontal camera rotation lags when riding |
| Basic | [MC-267376](https://mojira.dev/MC-267376) | You can view through blocks on small scales (near plane clipping) |
| Basic | [MC-268420](https://mojira.dev/MC-268420) | Cooldown indicator flashes when switching items with high attack speed attribute |
| Basic | [MC-280220](https://mojira.dev/MC-280220) | When a Dolphin holds an item, it is rendered upside-down |
| Basic | [MC-298225](https://mojira.dev/MC-298225) | Shapes appear in the end sky with certain distance settings |
| Basic | [MC-298558](https://mojira.dev/MC-298558) | Rain fog calculation can overshoot while game is unresponsive |
### Server side (both)
| Type | Bug ID | Name |
|------|--------|------|
| Basic | [MC-7569](https://mojira.dev/MC-7569) | RCON output has newlines removed |
| Gameplay | [MC-8187](https://mojira.dev/MC-8187) | Two-by-two arrangements of jungle or spruce saplings cannot grow when there are adjacent blocks located north or west of the sapling formation |
| Basic | [MC-30391](https://mojira.dev/MC-30391) | Chickens, blazes and the wither emit particles when landing from a height, despite falling slowly |
| Basic | [MC-44654](https://mojira.dev/MC-44654) | Some entities don't update position to the client when teleported |
| Basic | [MC-81773](https://mojira.dev/MC-81773) | Bows, crossbows, and tridents drawn in survival/creative/adventure mode can be released in spectator mode |
| Basic | [MC-82263](https://mojira.dev/MC-82263) | Ender dragon produces regular hurt sound on final hit |
| Basic | [MC-84661](https://mojira.dev/MC-84661) | Glowing is considered a positive effect in potion item tooltips |
| Basic | [MC-88371](https://mojira.dev/MC-88371) | Ender Dragon flies down in the void when the exit portal is destroyed |
| Basic | [MC-89146](https://mojira.dev/MC-89146) | Pistons forget update when being reloaded |
| Basic | [MC-93018](https://mojira.dev/MC-93018) | Wild wolves show breeding hearts but do not breed |
| Basic | [MC-94054](https://mojira.dev/MC-94054) | Cave spiders and spiders with small scale attribute spin around when walking |
| Basic | [MC-100991](https://mojira.dev/MC-100991) | Killing entities with a fishing rod doesn't count as a kill |
| Basic | [MC-119754](https://mojira.dev/MC-119754) | Firework boosting on elytra continues in spectator mode |
| Basic | [MC-121706](https://mojira.dev/MC-121706) | Skeletons and illusioners aren't looking up / down at their target while strafing |
| Basic | [MC-121903](https://mojira.dev/MC-121903) | Command block minecarts do not save execution cooldown to NBT |
| Basic | [MC-123450](https://mojira.dev/MC-123450) | Item frames play sounds when the item within them is read from NBT |
| Basic | [MC-129909](https://mojira.dev/MC-129909) | Players in spectator mode continue to consume foods and liquids shortly after switching game modes |
| Basic | [MC-131562](https://mojira.dev/MC-131562) | Pressing the "Done" button in empty command block minecarts prints the message "Command set:" in chat |
| Basic | [MC-132878](https://mojira.dev/MC-132878) | Armor stands destroyed by explosions/lava/fire don't produce particles |
| Basic | [MC-133218](https://mojira.dev/MC-133218) | Usable items continue to be used on the death screen after dying when the "keepInventory" gamerule is set to "true" |
| Basic | [MC-134110](https://mojira.dev/MC-134110) | Structure mirroring breaking apart double chests |
| Basic | [MC-136249](https://mojira.dev/MC-136249) | Wearing boots enchanted with depth strider decreases the strength of the riptide enchantment |
| Basic | [MC-139041](https://mojira.dev/MC-139041) | The sounds of fishing bobbers aren't controlled by the "Players" sound slider |
| Basic | [MC-147659](https://mojira.dev/MC-147659) | Some witch huts spawn the incorrect cat |
| Basic | [MC-153010](https://mojira.dev/MC-153010) | doMobLoot gamerule doesn't prevent foxes from dropping their items |
| Basic | [MC-155509](https://mojira.dev/MC-155509) | Dying puffed pufferfish can still sting players |
| Basic | [MC-158900](https://mojira.dev/MC-158900) | "bad packet id 26" upon connecting after tempban expire |
| Basic | [MC-159283](https://mojira.dev/MC-159283) | The End terrain does not generate in multiple rings centered around the world center |
| Basic | [MC-160095](https://mojira.dev/MC-160095) | Partial blocks break cactus when moved by pistons |
| Basic | [MC-170462](https://mojira.dev/MC-170462) | Bad Omen is considered a positive effect in potion item tooltips |
| Basic | [MC-176806](https://mojira.dev/MC-176806) | Scoreboard criteria for using glowstone doesn't increase score when charging a respawn anchor |
| Basic | [MC-177381](https://mojira.dev/MC-177381) | The game does not calculate the distance correctly when a structure more than 46340 blocks away is located |
| Basic | [MC-179072](https://mojira.dev/MC-179072) | Creepers do not defuse when switching from Survival to Creative/Spectator |
| Basic | [MC-183990](https://mojira.dev/MC-183990) | Group AI of some mobs breaks when their target dies |
| Basic | [MC-187100](https://mojira.dev/MC-187100) | End crystals try to heal dying Ender dragons |
| Basic | [MC-200418](https://mojira.dev/MC-200418) | Cured baby zombie villagers stay as jockey variant |
| Basic | [MC-201374](https://mojira.dev/MC-201374) | Wrong position passed to getCollisionShape from CampfireBlock#isSmokingBlockAt |
| Basic | [MC-202637](https://mojira.dev/MC-202637) | Last sound clip of eating will still play when Players volume is set to 0% |
| Basic | [MC-206705](https://mojira.dev/MC-206705) | Spyglasses stay in use in spectator mode |
| Basic | [MC-206922](https://mojira.dev/MC-206922) | Items dropped by entities that are killed by lightning instantly disappear |
| Basic | [MC-214147](https://mojira.dev/MC-214147) | Skeletons wearing leather armor still convert to strays in powder snow |
| Basic | [MC-215530](https://mojira.dev/MC-215530) | |
| Basic | [MC-221257](https://mojira.dev/MC-221257) | Shulker bullets don't produce bubble particles when moving through water |
| Basic | [MC-223153](https://mojira.dev/MC-223153) | Block of Raw Copper uses stone sounds instead of copper sounds |
| Basic | [MC-224729](https://mojira.dev/MC-224729) | Partially generated chunks are not saved in some situations |
| Basic | [MC-226961](https://mojira.dev/MC-226961) | Experience orbs treat flowing lava as a full block |
| Basic | [MC-227008](https://mojira.dev/MC-227008) | Endermen constantly try to teleport when in a boat or a minecart under daylight |
| Basic | [MC-227337](https://mojira.dev/MC-227337) | When a shulker bullet hits an entity, the explosion sound is not played and particles are not produced |
| Basic | [MC-231743](https://mojira.dev/MC-231743) | "minecraft.used:minecraft.<POTTABLE_PLANT>" doesn't increase when placing plants into flower pots |
| Basic | [MC-232869](https://mojira.dev/MC-232869) | Adult striders can spawn with saddles in peaceful mode |
| Basic | [MC-245394](https://mojira.dev/MC-245394) | The sounds of raid horns blaring aren't controlled by the correct sound slider |
| Basic | [MC-251068](https://mojira.dev/MC-251068) | If you delete your only world, then you are no longer automatically thrown into the menu of creating a new world |
| Basic | [MC-263999](https://mojira.dev/MC-263999) | Zombies breaking doors do not show break particles |
| Basic | [MC-264285](https://mojira.dev/MC-264285) | |
| Basic | [MC-264979](https://mojira.dev/MC-264979) | Fresh installations print NoSuchFileException for server.properties |
| Basic | [MC-267125](https://mojira.dev/MC-267125) | Command suggestions for reloadable content are not affected by /reload. |
| Basic | [MC-268617](https://mojira.dev/MC-268617) | Structures can't be saved if the game directory is named in a certain way |
| Basic | [MC-271899](https://mojira.dev/MC-271899) | StructureTemplate Palette's caches are not thread safe |
| Basic | [MC-272431](https://mojira.dev/MC-272431) | Ender Dragon incorrect vertical velocity causes erratic behavior |
| Basic | [MC-298066](https://mojira.dev/MC-298066) | Directly entering a bed from a mount places the player in the wrong place |
## Previously patched
Bugs that this mod has patched in the past, but has since been fixed by a vanilla update.
| Bug ID | Name | Fixed Version |
|--------|------|---------------|
| [MC-2025](https://mojira.dev/MC-2025) | Mobs going out of fenced areas/suffocate in blocks when loading chunks | 17w47a |
| [MC-12829](https://mojira.dev/MC-12829) | Flying through climbable blocks in creative mode slows you down | 24w44a |
| [MC-14923](https://mojira.dev/MC-14923) | Players can be kicked for spamming in a singleplayer world with cheats disabled | 24w19a |
| [MC-22882](https://mojira.dev/MC-22882) | Ctrl + Q doesn't work on Mac | 25w41a |
| [MC-26757](https://mojira.dev/MC-26757) | Large item tooltips can get cut off at the edges of the screen | 22w42a |
| [MC-31819](https://mojira.dev/MC-31819) | Hunger saturation depletes on peaceful difficulty | 24w21a |
| [MC-46503](https://mojira.dev/MC-46503) | You can retain entities' shaders by running the "/kill" command while in spectator mode | 25w33a |
| [MC-53312](https://mojira.dev/MC-53312) | Illager/(zombie) villager/witch robes don't render the last two rows of pixels | 22w17a |
| [MC-55347](https://mojira.dev/MC-55347) | Title with long duration shows in other world | 24w44a |
| [MC-69216](https://mojira.dev/MC-69216) | Switching to spectator mode while fishing keeps rod cast | 25w33a |
| [MC-72151](https://mojira.dev/MC-72151) | Snow Golem's snowballs damage wolves instead of pushing them | 24w06a |
| [MC-72687](https://mojira.dev/MC-72687) | There are no shadows on text displayed within the action bar | 22w24a |
| [MC-84873](https://mojira.dev/MC-84873) | DeathTime values 20+ cause corrupted mobs | 22w43a |
| [MC-90084](https://mojira.dev/MC-90084) | When sitting in boats and boats with chest mobs legs penetrate the hull | 23w31a |
| [MC-111516](https://mojira.dev/MC-111516) | Player flickers/turns invisible when flying at high speeds | 24w44a |
| [MC-112730](https://mojira.dev/MC-112730) | Beacon beam and structure block render twice per frame | 25w21a |
| [MC-119417](https://mojira.dev/MC-119417) | A spectator can occupy a bed if they enter it and then are switched to spectator mode | 25w33a |
| [MC-121772](https://mojira.dev/MC-121772) | Can't scroll while holding SHIFT on macOS | 23w31a |
| [MC-123605](https://mojira.dev/MC-123605) | Debug world still sets clear weather time instead of deactivating gamerule doWeatherCycle | 26.1-snapshot-6 |
| [MC-124177](https://mojira.dev/MC-124177) | Teleporting to another dimension loses some client states | 24w20a |
| [MC-135971](https://mojira.dev/MC-135971) | Can't use CTRL+Q in crafting table | 24w33a |
| [MC-135973](https://mojira.dev/MC-135973) | Can't hold Q to drop items rapidly from container inventories | 22w42a |
| [MC-140646](https://mojira.dev/MC-140646) | Text fields don't scroll while selecting text with Shift | 23w31a |
| [MC-145748](https://mojira.dev/MC-145748) | Clicking a settings button when there's a slider under the mouse in the next screen plays the click sound twice | 22w42a |
| [MC-147605](https://mojira.dev/MC-147605) | Text cursors can exist in multiple fields | 22w46a |
| [MC-147784](https://mojira.dev/MC-147784) | Fletching table flashes crafting table's GUI for about a second upon right-clicking it in spectator mode | 25w34a |
| [MC-148149](https://mojira.dev/MC-148149) | | 1.19.1-pre6 |
| [MC-151412](https://mojira.dev/MC-151412) | "Edit Server Info" window does not focus "Server Name" text field automatically | 22w46a |
| [MC-162253](https://mojira.dev/MC-162253) | Lag spike when crossing certain chunk borders | 23w16a |
| [MC-165595](https://mojira.dev/MC-165595) | Guardian beam does not render when over a certain "Time" in level.dat | 23w03a |
| [MC-183776](https://mojira.dev/MC-183776) | After switching game modes using F3+F4, you need to press F3 twice to toggle the debug screen | 25w31a |
| [MC-193343](https://mojira.dev/MC-193343) | Soul Speed effect remains after switching to spectator mode | 24w18a |
| [MC-199467](https://mojira.dev/MC-199467) | Certain entity animations stop after they've existed in world for too long | 25w45a |
| [MC-201723](https://mojira.dev/MC-201723) | Statistics sprites don't look pressed when clicked | 1.21.9 |
| [MC-219981](https://mojira.dev/MC-219981) | Leader zombie-type mobs spawn with 20 health despite having an increased maximum health | 26.1-snapshot-1 |
| [MC-227169](https://mojira.dev/MC-227169) | The main hand is positioned incorrectly when holding a loaded crossbow in your offhand | 24w33a |
| [MC-228976](https://mojira.dev/MC-228976) | Entity collision is run on render thread | 1.19.3-pre3 |
| [MC-233042](https://mojira.dev/MC-233042) | Server Address field isn't focused when Direct Connection menu is opened | 22w46a |
| [MC-235035](https://mojira.dev/MC-235035) | Sleeping in a custom dimension with "natural" set to false causes crash | 22w15a |
| [MC-249059](https://mojira.dev/MC-249059) | Loading terrain screen cannot close before 2 seconds have passed | 22w46a |
| [MC-263865](https://mojira.dev/MC-263865) | Fullscreen state isn't saved | 25w04a |
| [MC-267469](https://mojira.dev/MC-267469) | GUI List Entry highlight border not always aligned properly | 1.21.9 |
| [MC-299115](https://mojira.dev/MC-299115) | | 25w34a |
================================================
FILE: README.md
================================================
<div align="center">
<img src="https://dl.isxander.dev/logos/debugify/v2/debugify-512x.png" width="100"/>
# Debugify
#### Debugify is a project that fixes **over 70** bugs found on the <a href="https://bugs.mojang.com/projects/MC/issues">bug tracker</a> in Minecraft.
(and does nothing more!)
[](https://wakatime.com/badge/github/W-OVERFLOW/Debugify)

[](https://bisecthosting.com/xander)
</div>
## What does this mod replace?
This mod replaces many mods and implements fixes from some others
- **[BetterShields](https://modrinth.com/mod/bettershields)**
- **[Shift-Scroll Fix](https://www.curseforge.com/minecraft/mc-mods/shift-scroll-fix)**
- **[ForgetMeChunk](https://www.curseforge.com/minecraft/mc-mods/forgetmechunk)**
- **[ChunkSavingFix](https://www.curseforge.com/minecraft/mc-mods/chunk-saving-fix)**
- **[force-close-world-loading-screen](https://modrinth.com/mod/forcecloseworldloadingscreen)**: Missing option to remove menu fully (as it isn't a bug)
- **[No Telemetry](https://www.curseforge.com/minecraft/mc-mods/no-telemetry/)**
- **[ToolTipFix](https://www.curseforge.com/minecraft/mc-mods/tooltipfix)**
- **[Title Fix Mod](https://modrinth.com/mod/title-fix-mod)**
- **[Entity Collision FPS Fix Refabricated](https://www.curseforge.com/minecraft/mc-mods/entity-collision-fps-fix-fabric)**
- **[Ctrl Q](https://www.curseforge.com/minecraft/mc-mods/ctrl-q)**: Missing other QOL features that aren't bugs.
- **[Skeleton Aiming Fix](https://www.curseforge.com/minecraft/mc-mods/skeleton-aiming-fix)**
- **[2x2 Surrounded Saplings Fix](https://modrinth.com/mod/8187)**
**These superseded mods are not hard conflicts and can be used in conjunction with Debugify for any additional advanced features.**
## Links and other info
[GitHub](https://github.com/isXander/Debugify) • [Curseforge](https://curseforge.com/minecraft/mc-mods/debugify) • [Modrinth](https://modrinth.com/mod/debugify) • [Patched bug list](https://github.com/isXander/Debugify/blob/1.19/PATCHED.md) • [Discord](https://short.isxander.dev/discord)
## What if I want to enable some bug fixes, but not others?
Debugify has a configuration GUI accessible by Fabric's [Mod Menu](https://modrinth.com/mod/modmenu).
If you don't want to it, there is always the configuration file located at
`.minecraft/config/debugify.json`

## Client, or Server?
Debugify includes many fixes for both the client and server (all server fixes also apply to client).
So you should definitely use it on both.
## Can I include this in my modpack?
Yes! Of course! I even added a little feature in the mod for you! The constant updates may be exhausting to maintain,
so I added a config option that defaults new bug fixes to off, until you get round to looking at it.
## Credits
- [**isXander**](https://github.com/isXander) - Founder of project
- [**Contributors**](https://github.com/isXander/Debugify/graphs/contributors) - For PRing new fixes!
- [**MoonTidez**](https://github.com/MoonTidez) - Creating an awesome logo!
### Translators
- [**RaptaG**](https://github.com/RaptaG) - Greek
- [**Altegar**](https://github.com/Altegar) - Ukrainian
- [**ttrafford7**](https://github.com/ttrafford7) - Ukrainian
- [**GodGun968**](https://github.com/GodGun968) - Chinese
- [**Agentew04**](https://github.com/Agentew04) - Portuguese
- [**localfossa**](https://github.com/localfossa) - Turkish
- [**xMikux**](https://github.com/xMikux) - Traditional Chinese
================================================
FILE: build.gradle.kts
================================================
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
plugins {
id("dev.isxander.modstitch.base") version "0.8.4"
id("me.modmuss50.mod-publish-plugin") version "0.8.4"
`maven-publish`
signing
id("dev.isxander.secrets") version "0.1.0"
id("org.ajoberstar.grgit") version "5.3.2"
id("com.gradleup.nmcp.aggregation") version "1.4.3"
id("com.gradleup.nmcp") version "1.4.3"
}
modstitch {
minecraftVersion = property("minecraftVersion")!!.toString()
modLoaderVersion = "0.18.6"
metadata {
modVersion = providers.gradleProperty("modVersion")
modId = "debugify"
modName = "Debugify"
modDescription = "Fixes Minecraft bugs found on the bug tracker"
modCredits = """
j-Tai's TieFix - Code used licensed under LGPLv3
FlashyReese's Sodium Extra - Code used licensed under LGPLv3
Ampflower's 2x2 Surrounded Saplings Fix - Code used licensed under Zlib
NoahvdAa's Thorium - Code used licensed under LGPLv3
Moulberry's MoulberryTweaks - Code used licensed under MIT
""".trimIndent()
}
mixin {
addMixinsToModManifest = true
configs.register("debugify")
configs.register("debugify.client") { side = CLIENT }
}
loom {
configureLoom {
splitEnvironmentSourceSets()
val gametest by sourceSets.registering {
compileClasspath += sourceSets.main.get().compileClasspath
runtimeClasspath += sourceSets.main.get().runtimeClasspath
compileClasspath += sourceSets["client"].compileClasspath
runtimeClasspath += sourceSets["client"].runtimeClasspath
}
createProxyConfigurations(gametest.get())
mods.register("debugify") {
sourceSet(sourceSets["main"])
sourceSet(sourceSets["client"])
}
runs {
register("gametest") {
client()
ideConfigGenerated(true)
name("Game Test")
source(gametest.get())
}
listOf(named("client"), named("server")).forEach {
it {
vmArg("-Ddebugify.forceMacFixes=true")
vmArg("-Ddebugify.forceLinuxFixes=true")
vmArg("-Ddebugify.forceWindowsFixes=true")
}
}
}
}
}
}
repositories {
exclusiveContent {
forRepository { maven("https://maven.terraformersmc.com/releases") }
filter { includeGroup("com.terraformersmc") }
}
maven("https://maven.isxander.dev/releases")
}
val fabricApiVersion: String by project
val yaclVersion: String by project
val mixinExtrasVersion: String by project
val modMenuVersion: String by project
dependencies {
implementation("net.fabricmc.fabric-api:fabric-api:$fabricApiVersion")
"clientImplementation"("dev.isxander:yet-another-config-lib:$yaclVersion")
"clientImplementation"("com.terraformersmc:modmenu:$modMenuVersion")
"gametestImplementation"(sourceSets.main.get().output)
"gametestImplementation"(sourceSets["client"].output)
nmcpAggregation(project)
}
java {
withSourcesJar()
withJavadocJar()
}
tasks.javadoc {
isFailOnError = false
}
publishMods {
displayName = modstitch.metadata.modVersion.map { "Debugify $it" }
version = modstitch.metadata.modVersion
file = modstitch.finalJarTask.flatMap { it.archiveFile }
type = STABLE
modLoaders.add("fabric")
changelog = modstitch.minecraftVersion.zip(modstitch.metadata.modVersion) { mcVersion, modVersion ->
val header = file("changelogs/header.md")
.takeIf { it.exists() }
?.readText()
file("changelogs/$mcVersion/$modVersion.md")
.takeIf { it.exists() }
?.readText()
?.let { if (header != null) "$header\n\n$it" else it }
}
modrinth {
projectId = providers.gradleProperty("pub.modrinthId")
accessToken = secrets.gradleProperty("modrinth.accessToken")
minecraftVersions.add(modstitch.minecraftVersion)
requires { slug.set("yacl") }
requires { slug.set("fabric-api") }
optional { slug.set("modmenu") }
}
curseforge {
projectId = providers.gradleProperty("pub.curseforgeId")
projectSlug = providers.gradleProperty("pub.curseforgeSlug")
accessToken = secrets.gradleProperty("curseforge.accessToken")
minecraftVersions.add(modstitch.minecraftVersion)
requires { slug.set("yacl") }
requires { slug.set("fabric-api") }
optional { slug.set("modmenu") }
}
github {
repository = providers.gradleProperty("githubProject")
accessToken = secrets.gradleProperty("github.accessToken")
commitish = grgit.branch.current().name
}
}
publishing {
publications {
create<MavenPublication>("mod") {
from(components["java"])
groupId = "dev.isxander"
artifactId = "debugify"
version = modstitch.metadata.modVersion.get()
pom {
name = modstitch.metadata.modName
description = modstitch.metadata.modDescription
url = "https://www.isxander.dev/projects/debugify"
licenses {
license {
name = "LGPL-3.0-or-later"
url = "https://www.gnu.org/licenses/lgpl-3.0.en.html"
}
}
developers {
developer {
id = "isXander"
name = "Xander"
email = "business@isxander.dev"
}
}
scm {
url = "https://github.com/isXander/Debugify"
connection = "scm:git:git//github.com/isXander/Debugify.git"
developerConnection = "scm:git:ssh://git@github.com/isXander/Debugify.git"
}
}
}
}
}
val signingKeyProvider = secrets.gradleProperty("signing.secretKey")
val signingPasswordProvider = secrets.gradleProperty("signing.password")
signing {
sign(publishing.publications["mod"])
}
// not configuration cache friendly, but neither is the whole of signing plugin
// this plugin does not support lazy configuration of signing keys
gradle.taskGraph.whenReady {
val willSign = allTasks.any { it.name.startsWith("sign") }
if (willSign) {
signing {
val signingKey = signingKeyProvider.orNull
val signingPassword = signingPasswordProvider.orNull
isRequired = signingKey != null && signingPassword != null
if (isRequired) {
useInMemoryPgpKeys(signingKey, signingPassword)
} else {
logger.error("Signing keys not found; skipping signing!")
}
}
}
}
nmcpAggregation {
centralPortal {
username = secrets.gradleProperty("mcentral.username")
password = secrets.gradleProperty("mcentral.password")
publicationName = "debugify:$version"
}
}
val generatePatchedTable by tasks.registering {
val inputFile = rootProject.file(".bugs")
inputs.file(inputFile)
val outputFile = rootProject.file("PATCHED.md")
outputs.file(outputFile)
group = "debugify-utils"
doLast {
val inputContents = inputFile.readText()
val entries = parsePatchedFile(inputContents)
val patched = entries.filterIsInstance<PatchedFileEntry.Patched>()
val clientPatched = patched.filter { it.env == PatchedFileEntry.Patched.Environment.Client }
val serverPatched = patched.filter { it.env == PatchedFileEntry.Patched.Environment.Server }
fun generatePatchedRows(entries: List<PatchedFileEntry.Patched>) =
entries.joinToString("\n") { "- | ${it.type.friendlyName} | [${it.bugId}](https://mojira.dev/${it.bugId}) | ${getBugDescription(it.bugId)} |" }
val previous = entries.filterIsInstance<PatchedFileEntry.Previous>()
val timestamp = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME)
val markdownTable = """
- <!--
- !!!! DO NOT UPDATE THIS FILE MANUALLY !!!!
- Generated by `./gradlew generatePatchedTable`
- Sourced from `${inputFile.name}`
- Generated $timestamp
- -->
-
- # List of Patched Bugs
- ## Unpatched in vanilla
- ### Client side
- | Type | Bug ID | Name |
- |------|--------|------|
${generatePatchedRows(clientPatched)}
- ### Server side (both)
- | Type | Bug ID | Name |
- |------|--------|------|
${generatePatchedRows(serverPatched)}
- ## Previously patched
- Bugs that this mod has patched in the past, but has since been fixed by a vanilla update.
- | Bug ID | Name | Fixed Version |
- |--------|------|---------------|
${previous.joinToString("\n") { "- | [${it.bugId}](https://mojira.dev/${it.bugId}) | ${getBugDescription(it.bugId)} | ${it.patchVersion} |" }}
""".trimMargin("-")
outputFile.parentFile.mkdirs()
outputFile.writeText(markdownTable)
}
}
data class MojiraBug(
val key: String,
val summary: String,
val status: String,
val confirmation_status: String,
val resolution: String,
val fix_versions: List<String>
) {
companion object {
fun fetch(bugId: String): MojiraBug? {
try {
val url = "https://mojira.dev/api/v1/issues/$bugId"
val response = `java.net`.URI(url).toURL().readText()
return try {
com.google.gson.Gson().fromJson(response, MojiraBug::class.java)
} catch (e: com.google.gson.JsonSyntaxException) {
throw IllegalStateException("Failed to parse Mojira response <$url>: \"$response\"", e)
}
} catch (e: Exception) {
e.printStackTrace()
return null
}
}
}
}
sealed class PatchedFileEntry(val bugNumber: Int) {
val bugId = "MC-$bugNumber"
class Patched(bugNumber: Int, val env: Environment, val type: Type) : PatchedFileEntry(bugNumber) {
enum class Environment(val friendlyName: String) {
Client("Client"), Server("Server");
companion object {
fun from(string: String): Environment? =
when (string) {
"client" -> Client
"server" -> Server
else -> null
}
}
}
enum class Type(val friendlyName: String) {
Basic("Basic"), Gameplay("Gameplay");
companion object {
fun from(string: String): Type? =
when (string) {
"basic" -> Basic
"gameplay" -> Gameplay
else -> null
}
}
}
}
class Previous(bugNumber: Int, val patchVersion: String) : PatchedFileEntry(bugNumber)
}
fun parsePatchedFile(contents: String): List<PatchedFileEntry> {
return contents.lineSequence()
.map { it.trim() }
.filter { it.isNotBlank() && !it.startsWith("#") }
.map { it.lowercase() }
.map { it.split(" ") }
.filter { it.size >= 2 }
.map { words ->
val command = words[0]
val bugNumber = words[1].toInt()
return@map when (command) {
"patched" -> {
if (words.size != 4) throw IllegalArgumentException("patched command must have exactly 4 words: got ${words.joinToString(" ")}")
val env = PatchedFileEntry.Patched.Environment.from(words[2])!!
val type = PatchedFileEntry.Patched.Type.from(words[3])!!
PatchedFileEntry.Patched(bugNumber, env, type)
}
"previous" -> {
if (words.size != 3) throw IllegalArgumentException("previous command must have exactly 3 words: got ${words.joinToString(" ")}")
val fixVersion = words[2]
PatchedFileEntry.Previous(bugNumber, fixVersion)
}
else -> throw IllegalArgumentException("Unknown command: $command")
}
}
.toList()
.sortedBy { it.bugNumber }
}
fun getBugDescription(bugId: String): String {
val mojiraBug = MojiraBug.fetch(bugId)
return mojiraBug?.summary ?: ""
}
================================================
FILE: changelogs/1.18.2/1.0.0.md
================================================
Fixes 6 Bugs
- [MC-234898](https://bugs.mojang.com/browse/MC-234898) - The "Get a trial!" button isn't consistently displayed within the realms menu
- [MC-231743](https://bugs.mojang.com/browse/MC-231743) - minecraft.used:minecraft.POTTABLE_PLANT doesn't increase when placing plants into flower pots
- [MC-231097](https://bugs.mojang.com/browse/MC-231097) - Holding the "Use" button continues to slow down the player even after the used item has been dropped
- [MC-198464](https://bugs.mojang.com/browse/MC-198464) - snowy_butchers_shop_1 misplaced block
- [MC-122627](https://bugs.mojang.com/browse/MC-122627) - Tab suggestion box has missing padding on right side
- [MC-165381](https://bugs.mojang.com/browse/MC-165381) - Block breaking can be delayed by dropping/throwing the tool while breaking a block
================================================
FILE: changelogs/1.18.2/1.1.0.md
================================================
- [MC-176559](https://bugs.mojang.com/browse/MC-176559) - Breaking process resets when a pickaxe enchanted with Mending mends by XP / Mending slows down breaking blocks again *(fabric only)*
- forge release!
================================================
FILE: changelogs/1.18.2/1.10.0.md
================================================
**Bug Fixes**
- [MC-55347](https://bugs.mojang.com/browse/MC-55347) - Title with long duration shows in other world
- [MC-26757](https://bugs.mojang.com/browse/MC-26757) - Large item tooltips can get cut off at the edges of the screen *(fabric only)*
**Rebugify no more!**
- Fix [MC-122477](https://bugs.mojang.com/browse/MC-122477) preventing some linux users from typing any characters in text boxes.
**Misc**
- On Quilt, require beta 15 or later because there is a crucial bug fix.
- Mark all superseded mods as "conflicts" which make Fabric & Quilt log warnings.
- Compress icon for smaller file size.
- Fix some client mixins trying to load on servers.
- Don't write disabled fixes to JSON when default disabled is enabled. ([#81](https://github.com/W-OVERFLOW/Debugify/issues/81))
- Don't run MC-237493 when no-telemetry is present, not tiefix.
================================================
FILE: changelogs/1.18.2/1.11.0.md
================================================
**Bug Fixes**
- [MC-228976](https://bugs.mojang.com/browse/MC-228976) - Entity collision is run on render thread
- [MC-112730](https://bugs.mojang.com/browse/MC-112730) - Beacon beam and structure block render twice per frame *(fabric only)*
**Removals**
- [MC-234898](https://bugs.mojang.com/browse/MC-234898) - More pain than it's worth.
- [MC-249021](https://bugs.mojang.com/browse/MC-249021) - More pain than it's worth.
**Misc**
- Decrease file size by ~15%
================================================
FILE: changelogs/1.18.2/1.2.0.md
================================================
Patches
- [MC-14923](https://bugs.mojang.com/browse/MC-14923) - Players can be kicked for spamming in a singleplayer world with cheats disabled
- [MC-79545](https://bugs.mojang.com/browse/MC-79545) - The experience bar disappears when too many levels are given to the player
- [MC-80859](https://bugs.mojang.com/browse/MC-80859) - Starting to drag item stacks over other compatible stacks makes the latter invisible until appearance change (stack size increases)
Fixes
- Fixed incompatibility with Sodium Extras
================================================
FILE: changelogs/1.18.2/1.2.1.md
================================================
- Added metric json toggle
================================================
FILE: changelogs/1.18.2/1.2.2.md
================================================
- Delete metrics
- Add update checker
================================================
FILE: changelogs/1.18.2/1.3.0.md
================================================
- [MC-121903](https://bugs.mojang.com/browse/MC-121903) - Command block minecarts do not save execution cooldown to NBT
- [MC-93018](https://bugs.mojang.com/browse/MC-93018) - Wild wolves show breeding hearts but do not breed
- [MC-116379](https://bugs.mojang.com/browse/MC-116379) - Punching with a cast fishing rod in the off-hand detaches fishing line from rod
- [MC-124177](https://bugs.mojang.com/browse/MC-124177) - Teleporting to another dimension loses some client states
- [MC-127970](https://bugs.mojang.com/browse/MC-127970) - Using riptide on a trident with an item in your off-hand causes visual glitch with the item in your offhand
- [MC-121772](https://bugs.mojang.com/browse/MC-121772) - Can't scroll while holding SHIFT on macOS
================================================
FILE: changelogs/1.18.2/1.4.0.md
================================================
- Add settings menu, allowing you to toggle on and off each bug fix
- [MC-140646](https://bugs.mojang.com/browse/MC-140646) - Text fields don't scroll while selecting text with Shift
- [MC-4490](https://bugs.mojang.com/browse/MC-4490) - Fishing line not attached to fishing rod in third person while crouching
- [MC-53312](https://bugs.mojang.com/browse/MC-53312) - Illager/(zombie) villager/witch robes don't render the last two rows of pixels
- [MC-111516](https://bugs.mojang.com/browse/MC-111516) - Player flickers/turns invisible when flying at high speeds
- [MC-84873](https://bugs.mojang.com/browse/MC-84873) - DeathTime values 20+ cause corrupted mobs
- [MC-235035](https://bugs.mojang.com/browse/MC-235035) - Sleeping in a custom dimension with "natural" set to false causes crash
- [MC-162253](https://bugs.mojang.com/browse/MC-162253) - Lag spike when crossing certain chunk borders - **replaces [ForgetMeChunk](https://www.curseforge.com/minecraft/mc-mods/forgetmechunk)**
- [MC-108948](https://bugs.mojang.com/browse/MC-108948) - Boat on top of slime blocks hover over block
- [MC-93384](https://bugs.mojang.com/browse/MC-93384) - Bubbles appear at the feet of drowning mobs
- [MC-132878](https://bugs.mojang.com/browse/MC-132878) - Armor stands destroyed by explosions/lava/fire don't produce particles
- [MC-151412](https://bugs.mojang.com/browse/MC-151412) - "Edit Server Info" window does not focus "Server Name" text field automatically
- [MC-233042](https://bugs.mojang.com/browse/MC-233042) - Server Address field isn't focused when Direct Connection menu is opened
- [MC-200418](https://bugs.mojang.com/browse/MC-200418) - Cured baby zombie villagers stay as jockey variant
- [MC-223153](https://bugs.mojang.com/browse/MC-223153) - Block of Raw Copper uses stone sounds instead of copper sounds
- [MC-148149](https://bugs.mojang.com/browse/MC-148149) - Linux game crash when opening links - **replaces [FastOpenLinksAndFolders](https://www.curseforge.com/minecraft/mc-mods/fastopenlinksandfolders)**
- [MC-132878](https://bugs.mojang.com/browse/MC-132878) - Armor stands destroyed by explosions/lava/fire don't produce particles
- [MC-249059](https://bugs.mojang.com/browse/MC-249059) - Loading terrain screen cannot close before 2 seconds have passed
- [MC-123739](https://bugs.mojang.com/browse/MC-123739) - Recipe book entries are not sorted in any meaningful manner ([aws404](https://github.com/aws404))
- [MC-122477](https://bugs.mojang.com/browse/MC-122477) - Linux/GNU: Opening chat sometimes writes 't'
- [MC-46766](https://bugs.mojang.com/browse/MC-46766) - Mining a block in Survival, then changing to Spectator creates a breaking animation and sound
- [MC-215531](https://bugs.mojang.com/browse/MC-215531) - The carved pumpkin overlay isn't removed when switching into spectator mode
- [MC-217716](https://bugs.mojang.com/browse/MC-217716) - The green nausea overlay isn't removed when switching into spectator mode
- [MC-69216](https://bugs.mojang.com/browse/MC-69216) - Switching to spectator mode while fishing keeps rod cast
- [MC-119417](https://bugs.mojang.com/browse/MC-119417) - A spectator can occupy a bed if they enter it and then are switched to spectator mode
- [MC-119754](https://bugs.mojang.com/browse/MC-119754) - Firework boosting on elytra continues in spectator mode
- [MC-129909](https://bugs.mojang.com/browse/MC-129909) - Players in spectator mode continue to consume foods and liquids shortly after switching game modes
- [MC-193343](https://bugs.mojang.com/browse/MC-193343) - Soul Speed effect remains after switching to spectator mode
- [MC-215530](https://bugs.mojang.com/browse/MC-215530) - The freezing effect isn't immediately removed when switching into spectator mode
- improve [MC-121772](https://bugs.mojang.com/browse/MC-121772)
- improve [MC-231097](https://bugs.mojang.com/browse/MC-231097)
================================================
FILE: changelogs/1.18.2/1.4.1.md
================================================
- Fix crashing with MC-148149
================================================
FILE: changelogs/1.18.2/1.5.0.md
================================================
- [MC-90084](https://bugs.mojang.com/browse/MC-90084) - When sitting in boats and boats with chest mobs legs penetrate the hull
- [MC-159163](https://bugs.mojang.com/browse/MC-159163) - Quickly pressing the sneak key causes the sneak animation to play twice
- [MC-199467](https://bugs.mojang.com/browse/MC-199467) - Certain entity animations stop after they've existed in world for too long
================================================
FILE: changelogs/1.18.2/1.6.0.md
================================================
**Bug Fixes**
- [MC-88371](https://bugs.mojang.com/browse/MC-88371) - Ender Dragon flies down in the void when the exit portal is destroyed
- [MC-100991](https://bugs.mojang.com/browse/MC-100991) - Killing entities with a fishing rod doesn't count as a kill
- [MC-155509](https://bugs.mojang.com/browse/MC-155509) - Puffed pufferfish can hurt the player while dying
- [MC-183776](https://bugs.mojang.com/browse/MC-183776) - After switching gamemodes using F3+F4, you need to press F3 twice to toggle the debug screen
- [MC-183990](https://bugs.mojang.com/browse/MC-183990) - Group AI of some mobs breaks when their target dies
- [MC-30391](https://bugs.mojang.com/browse/MC-30391) - Chickens, blazes and the wither emit particles when landing from a height, despite falling slowly
- [MC-89146](https://bugs.mojang.com/browse/MC-89146) - Pistons forget update when being reloaded
- [MC-214147](https://bugs.mojang.com/browse/MC-214147) - Skeletons wearing leather armor still convert to strays in powder snow
- [MC-26757](https://bugs.mojang.com/browse/MC-26757) - Large item tooltips can get cut off at the edges of the screen
- [MC-72151](https://bugs.mojang.com/browse/MC-72151) - Snow Golem's snowballs damage wolves instead of pushing them
- [MC-7569](https://bugs.mojang.com/browse/MC-7569) - RCON output has newlines removed
- [MC-206922](https://bugs.mojang.com/browse/MC-206922) - Items dropped by entities that are killed by lightning instantly disappear
**Misc**
- Add patched bugs link to modmenu entry
- Mark shadowed action-bar as incompatible
- Mark [shiftscrollfix](https://www.curseforge.com/minecraft/mc-mods/shift-scroll-fix) as incompatible
- Improve MC-199467
================================================
FILE: changelogs/1.18.2/1.7.0.md
================================================
**Bug Fixes**
- [MC-2025](https://bugs.mojang.com/browse/MC-2025) - Mobs going out of fenced areas/suffocate in blocks when loading chunks
- [MC-249021](https://bugs.mojang.com/browse/MC-249021) - The invitation and news buttons aren't consistently displayed within the realms menu
- [MC-197260](https://bugs.mojang.com/browse/MC-197260) - Armor Stand renders itself and armor dark if its head is in a solid block - ([aws404](https://github.com/aws404))
- [MC-224729](https://bugs.mojang.com/browse/MC-224729) - Partially generated chunks are not saved in some situations
- [MC-147605](https://bugs.mojang.com/browse/MC-147605) - Text cursors can exist in multiple fields - ([aws404](https://github.com/aws404))
- [MC-179072](https://bugs.mojang.com/browse/MC-179072) - Creepers do not defuse when switching from Survival to Creative/Spectator
- [MC-145748](https://bugs.mojang.com/browse/MC-145748) - Clicking a settings button when there's a slider under the mouse in the next screen plays the click sound twice
- [MC-160095](https://bugs.mojang.com/browse/MC-160095) - End Rods only break Cactus when moved by pistons
**Misc**
- Add descriptions to bug fixes buttons
- Add opt-out setting for update checking
- Removed [MC-26757](https://bugs.mojang.com/browse/MC-26757) as it was quite a bad implementation
- Mark [force-close-world-loading-screen](https://modrinth.com/mod/forcecloseworldloadingscreen) as incompatible
================================================
FILE: changelogs/1.18.2/1.7.1.md
================================================
**Rebugify no more!**
- Fix [MC-147605](https://bugs.mojang.com/browse/MC-147605) not allowing you to focus text fields if a widget is present.
**Misc**
- Add `default_disabled` config option into the GUI.
================================================
FILE: changelogs/1.18.2/1.7.2.md
================================================
**Rebugify no more!**
- Fix unavoidable crash on Forge server environments
- Avoid mixin warning with MC-147605 enabled
- Fix bugfix MC-53312 only applying to villager-like entities not illagers or zombie villagers
- Fix crash on gui on next launch if you forcibly stop the game at a really specific time
- Fix misleading log message displaying total amount of bugs not current amount of enabled bugs
================================================
FILE: changelogs/1.18.2/1.8.0.md
================================================
**New Fixes**
- Basic: [MC-135971](https://bugs.mojang.com/browse/MC-135971) - Can't use CTRL+Q in crafting table
- Gameplay: [MC-12829](https://bugs.mojang.com/browse/MC-12829) - Flying through ladders/vines/scaffolding in creative mode slows you down
- Gameplay: [MC-31819](https://bugs.mojang.com/browse/MC-31819) - Hunger saturation depletes on Peaceful
**Features!**
- Gameplay fixes! A new type of bug fix called Gameplay fixes have been added. By default, they are disabled in multiplayer however you can enable them.
- Fixes have been visually split up into client-server categories
**Rebugify no more!**
- Fix not being able to name any items in an anvil.
**Misc**
- Migrate to quilt mappings

================================================
FILE: changelogs/1.18.2/1.8.1.md
================================================
**Rebugify no more!**
- Fix Debugify breaking any mods that modify Minecraft resources
================================================
FILE: changelogs/1.18.2/1.9.0.md
================================================
**Bug Fixes**
- [MC-237493](https://bugs.mojang.com/browse/MC-237493) - Telemetry cannot be disabled
- Continuation of: [MC-124177](https://bugs.mojang.com/browse/MC-124177) - Experience bar is not updated on TP
**Rebugify no more!**
- Fix crash when other mods modify `Text`
================================================
FILE: changelogs/1.19/2.0.0.md
================================================
## Update to 1.19
================================================
FILE: changelogs/1.19/2.1.0.md
================================================
## New Patches
- [MC-577](https://bugs.mojang.com/browse/MC-577) - Mouse buttons block all inventory controls that are not default
- [MC-232869](https://bugs.mojang.com/browse/MC-232869) - Adult striders can spawn with saddles in peaceful mode
- [MC-143474](https://bugs.mojang.com/browse/MC-143474) - Respawning causes your hotbar to reset to the first space
# Bug Fixes
- Fix incompatibility with MineLittlePony (yes [this is real](https://minelittlepony-mod.com))
- Fix [MC-7569](https://bugs.mojang.com/browse/MC-7569) not working since 2.0
- Fix default value for fixes in the gui always being true despite if the bug is disabled by default
- Fix [MC-143474](https://bugs.mojang.com/browse/MC-143474) not applying since 1.10.0
================================================
FILE: changelogs/1.19/2.2.0.md
================================================
## New Patches
- [MC-22882](https://bugs.mojang.com/browse/MC-22882) - Ctrl + Q won't work on Mac
## Bug Fixes
- Fix compatibility with [VulkanMod](https://github.com/xCollateral/VulkanMod) when
[MC-122477](https://bugs.mojang.com/browse/MC-122477) is enabled
- Further improvements to [MC-26757](https://bugs.mojang.com/browse/MC-26757) (Better Tooltips)
that keeps more of the tooltip readable ([see here for screenshots](https://github.com/isXander/Debugify/issues/106))
================================================
FILE: changelogs/1.19/2.3.0.md
================================================
## New Fixes
- [MC-121706](https://bugs.mojang.com/browse/MC-121706) - Skeletons and illusioners aren't looking up / down at their target while strafing
## Bug Fixes
- Fix player not colliding with other entities with [MC-228976](https://bugs.mojang.com/browse/MC-228976) (closes [#19](https://github.com/isXander/Debugify/issues/119))
- Fix camera and control deviations with [MC-199467](https://bugs.mojang.com/browse/MC-199467) (closes [#122](https://github.com/isXander/Debugify/issues/122))
## Misc
- Remove update checker as update API no longer maintained.
================================================
FILE: changelogs/1.19/2.3.1.md
================================================
- Fix crash with lithium mod
================================================
FILE: changelogs/1.19/2.3.2.md
================================================
- Fix fixes not being disabled when there is a mod conflict
- Crash when debugify detects YOSBR handling debugify config
================================================
FILE: changelogs/1.19.1/2.3.3.md
================================================
- Update to 1.19.1
- Remove [MC-148149](https://bugs.mojang.com/browse/MC-148149) as it was fixed in 1.19.1
================================================
FILE: changelogs/1.19.1/2.3.4.md
================================================
- Removed [MC-72687](https://bugs.mojang.com/browse/MC-72687) as it was fixed in a snapshot
================================================
FILE: changelogs/1.19.1/2.4.0.md
================================================
- Debugify is now fabric/quilt only!
- Fix MC-147605 breaking modded text fields (EMI compatibility)
================================================
FILE: changelogs/1.19.2/2.4.1.md
================================================
- Support 1.19.2
================================================
FILE: changelogs/1.19.2/2.5.0.md
================================================
- Add [MC-90683](https://bugs.mojang.com/browse/MC-90683) - "Received unknown passenger" - Entities with differing render distances as passengers outputs error
- Add `Support me!` button in config menu.
================================================
FILE: changelogs/1.19.2/2.6.0.md
================================================
- Use [YetAnotherConfigLib](https://curseforge.com/minecraft/mc-mod/yacl) (you need to download it) instead of Cloth Config!
================================================
FILE: changelogs/1.19.2/2.6.1.md
================================================
- Disable configuring fixes that are force-disabled
- Force disable macOS fixes on other operating systems
================================================
FILE: changelogs/1.19.2/2.6.2.md
================================================
- Fix description loading causing long load times
================================================
FILE: changelogs/1.19.2/2.7.0.md
================================================
## New Fixes
- [MC-59810](https://bugs.mojang.com/browse/MC-59810) - Cannot break blocks while sprinting (Ctrl+Click = right click on macOS)
## Other Changes
- When conflicts or incompatible OSes are detected,
Debugify no longer disables the fix permanently but only for that launch,
so if you delete the mod / change OS it will automatically re-enable.
- Change `Not fixed` for unavailable fixes to `Unavailable`.
- Fix for [MC-577](https://bugs.mojang.com/browse/MC-577) wasn't handling drop mouse keybinds like the bug states.
- Fixed [MC-200418](https://bugs.mojang.com/browse/MC-200418) dismounting zombie villagers even when they weren't a jockey.
- Disable [MC-162253](https://bugs.mojang.com/browse/MC-162253) when Phosphor or Starlight are loaded, they fix it.
- Disable [MC-165595](https://bugs.mojang.com/browse/MC-165595) when Sodium Extra is loaded, it fixes it.
- Disable [MC-22882](https://bugs.mojang.com/browse/MC-22882) when Ctrl-Q is loaded, it fixes it.
================================================
FILE: changelogs/1.19.2/2.7.1.md
================================================
- Further improve [MC-26757](https://bugs.mojang.com/browse/MC-26757) (the tooltip going off-screen one)
now Debugify can wrap tooltips only when even centering tooltips makes them going off-screen,
maintaining parity with Bedrock AND completely fixing the issue altogether.
- Better compatibility for some fixes - Techniques of modifying certain game code have been improved
================================================
FILE: changelogs/1.19.2/2.8.0.md
================================================
- [MC-227169](https://bugs.mojang.com/browse/MC-227169) - The main hand is broken when you hold a crossbow loaded into the secondary hand
- [MC-135973](https://bugs.mojang.com/browse/MC-135973) - Can't hold Q to drop items rapidly from container inventories
- Fix some LinkageErrors with other mods using MixinExtras
- Resolve [#162](https://github.com/isXander/Debugify/issues/162)
- Notice screen for config when YetAnotherConfigLib isn't loaded
- Remove use of Fabric's access wideners
================================================
FILE: changelogs/1.19.3/1.19.3+1.0.md
================================================
# Updated to 1.19.3
## New & improved Telemetry Fix
New telemetry menu in 1.19.3 allows you to set telemetry from Minimal to Full, Debugify adds a third option,
off, that fully turns off and prevents Minecraft from connecting to Mojang telemetry services.
This also allows for a tooltip explaining each type of telemetry option.
### Technical Details
Debugify adds another option in `options.txt` named `debugifyTelemetry` where
0 = off, 1 = minimal and 2 = full. Debugify internally sets the vanilla option
to minimal if off or minimal so if you delete Debugify you would not be defaulted
to full.
## Options GUI improvements
You can now search for fixes using their descriptions as well as their bug ID.
'Server' fixes have been renamed to 'Main' fixes because previous wording was misleading
that they only applied on a server.
'Main' and 'Client' are now categories instead of groups while 'Basic' and 'Gameplay' have
taken their place as groups rather than categories. The gameplay warning and multiplayer toggle
are mirrored in both categories.
Fix groups are now expanded by default.
## New versioning system
Due to how intertwined Debugify is with Minecraft versions, starting 1.19.3, a new versioning
system for Debugify is being adopted. The version will reset on every Minecraft version bump, including
patches. An example version is `1.19.3+1.0`, the major version will change when Debugify adds new fixes or
any significant changes to the mod itself happens, the minor version will change if Debugify makes any small
changes such as a bug fix or a text localisation update.
This has been made because the current system was very confusing and wasn't clear
when there should ever be a major bump.
## Removed bugs fixed in 1.19.3
| Bug ID | Name | Fixed in |
|-------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|-------------|
| [MC-26757](https://bugs.mojang.com/browse/MC-26757) | Large item tooltips can get cut off at the edges of the screen | 22w42a |
| [MC-135973](https://bugs.mojang.com/browse/MC-135973) | Can't hold Q to drop items rapidly from container inventories | 22w42a |
| [MC-145748](https://bugs.mojang.com/browse/MC-145748) | Clicking a settings button when there's a slider under the mouse in the next screen plays the click sound twice | 22w42a |
| [MC-84873](https://bugs.mojang.com/browse/MC-84873) | DeathTime values 20+ cause corrupted mobs | 22w43a |
| [MC-147605](https://bugs.mojang.com/browse/MC-147605) | Text cursors can exist in multiple fields | 22w46a |
| [MC-151412](https://bugs.mojang.com/browse/MC-151412) | "Edit Server Info" window does not focus "Server Name" text field automatically | 22w46a |
| [MC-233042](https://bugs.mojang.com/browse/MC-233042) | Server Address field isn't focused when Direct Connection menu is opened | 22w46a |
| [MC-249059](https://bugs.mojang.com/browse/MC-249059) | Loading terrain screen cannot close before 2 seconds have passed | 22w46a |
| [MC-228976](https://bugs.mojang.com/browse/MC-228976) | Entity collision is run on render thread | 1.19.3-pre3 |
================================================
FILE: changelogs/1.19.3/1.19.3+1.1.md
================================================
- Re-compile with latest version of YetAnotherConfigLib as new version JAR isn't backwards compatible
================================================
FILE: changelogs/1.19.3/1.19.3+1.2.md
================================================
- Removed MC-214147 as it was deemed intended by me.
================================================
FILE: changelogs/1.19.4/1.19.4+1.0.md
================================================
- Update to 1.19.4
- Removed [MC-165595](https://bugs.mojang.com/browse/MC-165595) as it was fixed in 1.19.4
================================================
FILE: changelogs/1.19.4/1.19.4+1.1.md
================================================
- Fixed issues with the MC-46766 fix
- Fixed a lot of client bug fixes silently failing to be applied fully
- MC-108948
- MC-127970
- MC-143474
- MC-162253
- MC-215531
- MC-217716
- MC-227169
- MC-22882
- MC-237493 - this fixes the telemetry fix not properly clearing the telemetry info screen
- MC-577
- MC-59810
- MC-79545
- MC-90683
- MC-12829
- MC-140646
- Prevent mixins from failing silently in the future
- Publish sources jar to maven
- Add Traditional Chinese translation
================================================
FILE: changelogs/1.19.4/1.19.4+2.0.md
================================================
- Add fix explanations and effects to most bug fixes
- Fix crash relating to MC-162253
- Improve MC-183990 to fix more mobs
================================================
FILE: changelogs/1.19.4/1.19.4+2.1.md
================================================
- Fix crash relating to MC-122477 on Linux
================================================
FILE: changelogs/1.19.4/1.19.4+2.2.md
================================================
- Fix crash when MC-59810 is enabled
================================================
FILE: changelogs/1.20/1.20+1.0.md
================================================
- Update to 1.20
- Removed [MC-162253](https://bugs.mojang.com/browse/MC-162253) as it was fixed in 1.20 snapshots.
================================================
FILE: changelogs/1.20/1.20+1.1.md
================================================
- Fix crash when opening chat menu with MC-122627 enabled
================================================
FILE: changelogs/1.20.1/1.20.1+1.0.md
================================================
- Added error handling to bug fixes to sometimes catch errors and continue loading.
- Fixed issue with MC-176559 bugfix where continuously breaking blocks would glitch out. ([#247](https://github.com/isXander/Debugify/issues/247))
================================================
FILE: changelogs/1.20.1/1.20.1+1.1.md
================================================
- Fix mixin conflict with Fabric API
- Fix French translation not loading
================================================
FILE: changelogs/1.20.1/1.20.1+2.0.md
================================================
# Debugify 1.20.1+2.0
## New Fixes
- [MC-263865](https://bugs.mojang.com/browse/MC-263865) - Fullscreen state isn't saved when F11 is pressed
- *by [Ampflower](https://github.com/isXander/Debugify/pull/259),* [MC-8187](https://bugs.mojang.com/browse/MC-8187) - Two-by-two arrangements of jungle or spruce saplings cannot grow when there are adjacent blocks located north or west of the sapling formation
================================================
FILE: changelogs/1.20.2/1.20.2+1.0.md
================================================
- Update to 1.20.2
- Remove MC-121772 as it was fixed
- Remove MC-140646 as it was fixed
- Remove MC-90084 as it was fixed
================================================
FILE: changelogs/1.20.3/1.20.3+1.0.md
================================================
- Update to 1.20.3
- Literally nothing changed since 1.20.3
================================================
FILE: changelogs/1.20.3/1.20.3+1.1.md
================================================
- Fix MC-237493 - Telemetry mode couldn't be toggled to None anymore.
================================================
FILE: changelogs/1.20.4/1.20.4+1.0.md
================================================
- Update to 1.20.4
- Fabric Loader 0.15.0 or later required
- Mixin extras is no longer bundled
================================================
FILE: changelogs/1.20.4/1.20.4+1.1.md
================================================
- Fix broken description cache
================================================
FILE: changelogs/1.21/1.21+1.0.md
================================================
# Debugify 1.21+1.0
## Removed bug fixes
These fixes have been fixed by vanilla and therefore have no use in this mod!
- MC-14923 - Players can be kicked for spamming in a singleplayer world with cheats disabled
- MC-124177 - Teleporting to another dimension loses some client states
- MC-31819 - Hunger saturation depletes on Peaceful
================================================
FILE: changelogs/1.21.1/1.21.1+1.0.md
================================================
# Debugify 1.21.1+1.0
- Bumped fabric version constraint to 1.21.1
*This release was kindly PRed by [lospejos](https://github.com/lospejos)*
================================================
FILE: changelogs/1.21.10/1.21.10+1.0.md
================================================
# Debugify 1.21.10+1.0
As usual with a 1.0, all bug fixes that have been fixed in vanilla have been removed.
## Newly Patched Bugs
- [MC-263999](https://mojira.dev/MC-263999) - Zombies breaking doors do not show break particles - by [Microcontrollers#476](https://github.com/isxander/debugify/pull/476)
- [MC-153010](https://mojira.dev/MC-153010) - doMobLoot gamerule doesn't prevent foxes from dropping their items - by [Microcontrollers#478](https://github.com/isxander/debugify/pull/478)
- [MC-44654](https://mojira.dev/MC-44654) - Some entities don't update position to the client when teleported - by [Microcontrollers#474](https://github.com/isxander/debugify/pull/474)
- [MC-264979](https://mojira.dev/MC-264979) - Fresh installations print NoSuchFileException for server.properties - by [Microcontrollers#477](https://github.com/isxander/debugify/pull/477)
- [MC-264285](https://mojira.dev/MC-264285) - Unbreakable flint and steels are completely consumed when igniting a creeper - by [Microcontrollers#480](https://github.com/isxander/debugify/pull/480)
- [MC-133218](https://mojira.dev/MC-133218) - Usable items continue to be used on the death screen after dying when the "keepInventory" gamerule is set to "true" - by [Microcontrollers#471](https://github.com/isxander/debugify/pull/471)
- [MC-158900](https://mojira.dev/MC-158900) -
"bad packet id 26" upon connecting after tempban expire - [Microcontrollers#482](https://github.com/isxander/debugify/pull/482)
## Changes
- Fixed [MC-168573](https://mojira.dev/MC-168573) patch - it broke shields blocking sounds - by [Microcontrollers#469](https://github.com/isxander/debugify/pull/469)
- Disable [MC-61489](https://mojira.dev/MC-61489) patch by default - people may not like this alternative position - by [Riflusso#468](https://github.com/isxander/debugify/pull/468)
- Mark [MC-61489](https://mojira.dev/MC-61489) patch as incompatible with Scribble mod - by [chrrs#493](https://github.com/isxander/debugify/pull/493)
================================================
FILE: changelogs/1.21.10/1.21.10+1.1.md
================================================
# Debugify 1.21.10+1.1
## Changes
- Fix crash with Controlify installed
- The fix for MC-59810 was failing. This was not caught in testing because the fix applies specifically for macOS.
- Attempted mixin failure recoveries are now logged within crash reports, like they are in latest.log
================================================
FILE: changelogs/1.21.11/1.21.11+1.0.md
================================================
# Debugify 1.21.11+1.0
As usual with a 1.0, all bug fixes that have been fixed in vanilla have been removed.
================================================
FILE: changelogs/1.21.3/1.21.3+1.0.md
================================================
# Debugify 1.21.3+1.0
- **This update was gracefully PRed by IMS, thank you IMS for updating Debugify to 1.21.3**
- Add Vietnamese translation (by I_am_Vietnam)
- Add Italian translation (VladAndreiMorariu)
- Add Mexican Spanish Translation (Santiago Hernandez)
- Update Russian translation (FurnyGo)
- Fix insta-crash bug with MC-577 bug fix (howmanysmall)
================================================
FILE: changelogs/1.21.4/1.21.4+1.0.md
================================================
# Debugify 1.21.4+1.0
- Removed MC-12829 fix (resolved in 24w44a)
- Removed MC-55347 fix (resolved in 24w44a)
- Removed MC-111516 fix (resolved in 24w44a)
================================================
FILE: changelogs/1.21.4/1.21.4+1.1.md
================================================
# Debugify 1.21.4+1.1
- Fix crash when going into end dimension ([by rvbsm](https://github.com/isXander/Debugify/pull/379))
================================================
FILE: changelogs/1.21.5/1.21.5+1.0.md
================================================
# Debugify 1.21.5+1.0
- Removed MC-108948 fix since it was extremely buggy
- Move MC-159163 to a gameplay fix as some servers detected this as cheating
================================================
FILE: changelogs/1.21.7/1.21.7+1.0.md
================================================
# Debugify 1.21.7+1.0
- Make bug fix descriptions offline as the bug tracker migration broke the API
- Removed MC-112730 as it was fixed by vanilla
================================================
FILE: changelogs/1.21.8/1.21.8+1.0.md
================================================
# Debugify 1.21.8+1.0
## Bug Fixes
* Fix [MC-35361](https://bugs.mojang.com/browse/MC-35361) – Inventory opening is detected while in Nether Portal (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/422))
* Fix [MC-46503](https://bugs.mojang.com/browse/MC-46503) – You can retain entities' shaders by running the “/kill” command while in spectator mode (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/407))
* Fix [MC-46737](https://bugs.mojang.com/browse/MC-46737) – Entities' shaders are applied when beginning to spectate them in third person (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/408))
* Fix [MC-57057](https://bugs.mojang.com/browse/MC-57057) – Guardian laser attack sound ignores distance (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/438))
* Fix [MC-61489](https://bugs.mojang.com/browse/MC-61489) – Book GUI is not vertically centred (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/433))
* Fix [MC-82263](https://bugs.mojang.com/browse/MC-82263) – Ender dragon produces regular hurt sound on final hit (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/447))
* Fix [MC-84661](https://bugs.mojang.com/browse/MC-84661) – Glowing is considered a positive effect in potion item tooltips (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/406))
* Fix [MC-94054](https://bugs.mojang.com/browse/MC-94054) – Cave spiders spin around when walking (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/420))
* Fix [MC-115092](https://bugs.mojang.com/browse/MC-115092) – Squid/glow squid named “Dinnerbone” or “Grumm” is not upside‑down (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/423))
* Fix [MC-116510](https://bugs.mojang.com/browse/MC-116510) – Attack indicator doesn't indicate (most of the time) that breaking instantly‑mineable blocks resets your attack (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/445))
* Fix [MC-118740](https://bugs.mojang.com/browse/MC-118740) – Performing any right‑click action silently resets the attack cooldown (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/445))
* Fix [MC-123450](https://bugs.mojang.com/browse/MC-123450) – Item frames play sounds when the item within them is read from NBT (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/424))
* Fix [MC-123605](https://bugs.mojang.com/browse/MC-123605) – Debug world still sets clear weather time instead of deactivating gamerule doWeatherCycle (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/409))
* Fix [MC-134110](https://bugs.mojang.com/browse/MC-134110) – Structure mirroring breaking apart double chests (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/417))
* Fix [MC-136249](https://bugs.mojang.com/browse/MC-136249) – Wearing boots enchanted with Depth Strider decreases the strength of the Riptide enchantment (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/449))
* Fix [MC-139041](https://bugs.mojang.com/browse/MC-139041) – The sounds of fishing bobbers aren't controlled by the “Players” sound slider (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/425))
* Fix [MC-147659](https://bugs.mojang.com/browse/MC-147659) – Some witch huts spawn the incorrect cat (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/414))
* Fix [MC-147784](https://bugs.mojang.com/browse/MC-147784) – Fletching table flashes crafting table’s GUI for about a second upon right‑clicking it in spectator mode (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/450))
* Fix [MC-159283](https://bugs.mojang.com/browse/MC-159283) – The End terrain does not generate in multiple rings centred around the world centre (from Thorium) (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/429))
* Fix [MC-165306](https://bugs.mojang.com/browse/MC-165306) – Beacon beams are transparent from the inside (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/448))
* Fix [MC-168573](https://bugs.mojang.com/browse/MC-168573) – After breaking a shield, the player’s off‑hand can’t finish using some items (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/412))
* Fix [MC-170462](https://bugs.mojang.com/browse/MC-170462) – Bad Omen is considered a positive effect in potion item tooltips (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/406))
* Fix [MC-176806](https://bugs.mojang.com/browse/MC-176806) – Scoreboard criteria for using glowstone doesn’t increase score when charging a respawn anchor (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/428))
* Fix [MC-177381](https://bugs.mojang.com/browse/MC-177381) – Game does not count the distance properly if you locate a structure from more than 46340 blocks away (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/410))
* Fix [MC-187100](https://bugs.mojang.com/browse/MC-187100) – End crystals try to heal dying Ender dragons (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/427))
* Fix [MC-187100](https://bugs.mojang.com/browse/MC-187100) – End crystals try to heal dying Ender dragons (fix missing BugFix and move to server side) (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/443))
* Fix [MC-188359](https://bugs.mojang.com/browse/MC-188359) – Burp sound does not play after drinking or after eating cake (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/437))
* Fix [MC-201374](https://bugs.mojang.com/browse/MC-201374) – Wrong position passed to getCollisionShape from CampfireBlock#isSmokingBlockAt (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/418))
* Fix [MC-201723](https://bugs.mojang.com/browse/MC-201723) – Statistics sprites don’t look pressed when clicked (from Thorium) (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/429))
* Fix [MC-202637](https://bugs.mojang.com/browse/MC-202637) – Last sound clip of eating will still play when Players volume is set to 0% (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/425))
* Fix [MC-206540](https://bugs.mojang.com/browse/MC-206540) – Increased input delay when riding an entity (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/432))
* Fix [MC-210318](https://bugs.mojang.com/browse/MC-210318) – Maximum length of book title changed from 16 to 15 characters (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/426))
* Fix [MC-211561](https://bugs.mojang.com/browse/MC-211561) – Fishing line appears in opposite hand when switching slots (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/435))
* Fix [MC-219981](https://bugs.mojang.com/browse/MC-219981) – If zombies spawned with max health over 20 (leader zombie bonus), they will have 20 health instead of their max health (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/434))
* Fix [MC-221257](https://bugs.mojang.com/browse/MC-221257) – Shulker bullets don’t produce bubble particles when moving through water (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/430))
* Fix [MC-226961](https://bugs.mojang.com/browse/MC-226961) – Experience Orbs treat flowing lava as a full block (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/461))
* Fix [MC-227008](https://bugs.mojang.com/browse/MC-227008) – Enderman constantly tries to teleport when in a boat or a minecart under daylight (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/460))
* Fix [MC-227337](https://bugs.mojang.com/browse/MC-227337) – When a shulker bullet hits an entity, the explosion sound is not played and particles are not produced (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/425))
* Fix [MC-242809](https://bugs.mojang.com/browse/MC-242809) – IP field in the multiplayer menu will not detect the IP if a space is put at the beginning/end of it (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/421))
* Fix [MC-245394](https://bugs.mojang.com/browse/MC-245394) – The sounds of raid horns blaring aren’t controlled by the correct sound slider (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/425))
* Fix [MC-251068](https://bugs.mojang.com/browse/MC-251068) – If you delete your only world, you are no longer automatically taken to the “Create New World” screen (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/415))
* Fix [MC-259512](https://bugs.mojang.com/browse/MC-259512) – Horizontal camera rotation lags when riding (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/432))
* Fix [MC-267125](https://bugs.mojang.com/browse/MC-267125) – Command suggestions for reloadable content are not affected by /reload (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/456))
* Fix [MC-267376](https://bugs.mojang.com/browse/MC-267376) – You can view through blocks on small scales (near‑plane clipping) (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/413))
* Fix [MC-267469](https://bugs.mojang.com/browse/MC-267469) – GUI list entry highlight border not always aligned properly (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/458))
* Fix [MC-268420](https://bugs.mojang.com/browse/MC-268420) – Cooldown indicator flashes when switching items with high attack‑speed attribute (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/436))
* Fix [MC-268617](https://bugs.mojang.com/browse/MC-268617) – Structures can’t be saved if the game directory name has certain patterns (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/439))
* Fix [MC-271899](https://bugs.mojang.com/browse/MC-271899) – StructureTemplate palette caches are not thread‑safe (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/419))
* Fix [MC-272431](https://bugs.mojang.com/browse/MC-272431) – Ender Dragon incorrect vertical velocity causes erratic behaviour (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/459))
* Fix [MC-280220](https://bugs.mojang.com/browse/MC-280220) – When a dolphin holds an item, it is rendered upside‑down and far from the mouth (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/462))
* Fix [MC-297837](https://bugs.mojang.com/browse/MC-297837) – Locator bar shows players above you as being below you when they are high enough (by [@isXander](https://github.com/isXander/Debugify/pull/465))
* Fix [MC-298066](https://bugs.mojang.com/browse/MC-298066) – Directly entering a bed from a mount places the player in the wrong place (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/454))
* Fix [MC-298225](https://bugs.mojang.com/browse/MC-298225) – Shapes appear in the End sky with certain distance settings (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/416))
* Fix [MC-298558](https://bugs.mojang.com/browse/MC-298558) – Rain fog calculation can overshoot while the game is unresponsive (by [@isXander](https://github.com/isXander/Debugify/pull/441))
* Fix [MC-299115](https://bugs.mojang.com/browse/MC-299115) – Arrow loses its owner tag when deflected while its owner is offline (by [@isXander](https://github.com/isXander/Debugify/pull/464))
## Other Changes
* Fix crash when opening inventory (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/444))
* Resolve Moonrise mixin error (by [@R00tB33rMan](https://github.com/isXander/Debugify/pull/405))
* Cleanup (by [@MicrocontrollersDev](https://github.com/isXander/Debugify/pull/446))
* 🌐 Add Argentine Spanish localisation (by [@Texaliuz](https://github.com/isXander/Debugify/pull/453))
* Bump org.ajoberstar.grgit from 5.0.0 to 5.3.2 (by [dependabot[bot]](https://github.com/isXander/Debugify/pull/440))
================================================
FILE: changelogs/26.1.2/26.1.2+1.0.md
================================================
# Debugify 26.1.2+1.0
As usual with a 1.0, all bug fixes that have been fixed in vanilla have been removed.
Some mixins have also been rewritten to be more optimal and compatible with other mods.
================================================
FILE: changelogs/26.1.2/26.1.2.2.md
================================================
# Debugify 26.1.2.2
Debugify now has a new versioning scheme!
It is now similar to the versioning scheme of NeoForge.
This version, `26.1.2.2`, refers to `26.1.2` Minecraft version, build `2` of Debugify.
This change was made to make Debugify's version semantically parseable by Fabric.
## Changes
- Move MC-136249 (Depth strider + riptide bug) to a gameplay fix, meaning it is disabled by default in multiplayer.
- Move MC-231097 (Release item after dropping bug) to a gameplay fix, meaning it is disabled by default in multiplayer.
Both of these fixes had been known to cause strict anti-cheats, such as the one found on `minemen.club`,
to ban users of Debugify.
As of this release, Debugify will no longer cause bans on `minemen.club`, as of this update, confirmed by dewgs.
================================================
FILE: changelogs/header.md
================================================
[](https://bisecthosting.com/xander)
================================================
FILE: crowdin.yml
================================================
files:
- source: src/main/resources/assets/debugify/lang/en_us.json
translation: /src/main/resources/assets/debugify/lang/%locale_with_underscore%.json
================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: gradle.properties
================================================
org.gradle.jvmargs=-Xmx4G
org.gradle.parallel=true
org.gradle.parallel.threads=4
modstitch.platform=fabric-loom
modVersion=26.1.2.2
pub.modrinthId=QwxR6Gcd
pub.curseforgeId=596224
pub.curseforgeSlug=debugify
githubProject=isXander/Debugify
# Libraries
minecraftVersion=26.1.2
fabricApiVersion=0.145.4+26.1.2
yaclVersion=3.9.2+26.1-fabric
modMenuVersion=18.0.0-alpha.8
================================================
FILE: gradlew
================================================
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: modstitch.ct
================================================
accessWidener v2 named
accessible class net/minecraft/client/Options$FieldAccess
accessible class net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget$ContentBuilder
accessible class net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget$Content
accessible class net/minecraft/client/gui/screens/achievement/StatsScreen$ItemStatisticsList
accessible class net/minecraft/world/level/levelgen/DensityFunctions$EndIslandDensityFunction
accessible class net/minecraft/server/MinecraftServer$ReloadableResources
================================================
FILE: scripts/check_bug_fixes.py
================================================
import requests
import sys
import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
version_list = requests.get("https://piston-meta.mojang.com/mc/game/version_manifest_v2.json").json()['versions']
def version_idx(version):
return [(idx, ver) for idx, ver in enumerate(version_list) if ver['id'] == version]
with open('../gradle.properties', 'r') as propfile:
gradleProperties = dict([map(lambda side: side.strip(), i.split('=', maxsplit=1)) for i in
filter(lambda line: len(line.strip()) > 2 and not line.lstrip().startswith('#'),
propfile.readlines())])
minecraft_version = gradleProperties['minecraftVersion']
minecraft_version_idx = version_idx(minecraft_version)
print(f'Minecraft Version: {minecraft_version}')
with open('../.bugs', 'r') as f:
bugs_lines = f.readlines()
bugs = []
for line in bugs_lines:
parts = line.split()
if len(parts) >= 3 and parts[0] == 'patched':
bugs.append((f'MC-{parts[1]}', parts[2]))
resolved_count = 0
duplicate_count = 0
for bug, side in bugs:
try:
response = requests.get(f'https://mojira.dev/api/v1/issues/{bug}')
except Exception as e:
print(f'Failed to fetch {bug}: {e}')
continue
if not response.ok:
print(f'Failed to fetch {bug}: HTTP {response.status_code} {response.text.strip()}')
continue
try:
json_response = response.json()
except Exception as e:
text = response.text.strip()
if '\n' not in text and len(text) < 100:
print(f'\033[35m{bug} ({side}): {text}\033[0m')
else:
print(f'Failed to parse response for {bug} ({side}): {e}\n{text}')
continue
resolution = json_response['resolution']
fix_versions = [v.replace(' Pre-release ', '-pre').replace(' Release Candidate ', '-rc').replace(' Snapshot ', '-snapshot-').replace('Minecraft ', '')
for v in (json_response.get('fix_versions') or [])]
message_color = ''
match resolution:
case 'Fixed' | "Won't Fix" | 'Works As Intended':
resolved_count += 1
bug_status = resolution
message_color = '\033[91m'
if len(fix_versions) > 0:
bug_status += f' in {", ".join(fix_versions)}'
if all(map(lambda v: version_idx(v) < minecraft_version_idx, fix_versions)) or any(
map(lambda v: v == "Future Update", fix_versions)):
message_color = '\033[33m'
resolved_count -= 1
case 'Duplicate':
duplicate_count += 1
bug_status = "Duplicate"
message_color = '\033[33m'
case _:
bug_status = 'OK!'
is_resolved = resolution in ('Fixed', "Won't Fix", 'Works As Intended')
message = f"{message_color}{bug} ({side}): {bug_status}\033[0m"
print(message, file=sys.stderr if is_resolved else sys.stdout)
if resolved_count == 0 and duplicate_count == 0:
print('\nNothing to report!')
else:
print()
if duplicate_count > 0:
print(f'\033[33m{duplicate_count} bug{"s have" if duplicate_count > 1 else " has"} been marked as duplicate!')
if resolved_count > 0:
print(f'\033[91m{resolved_count} bug{"s need" if resolved_count > 1 else " needs"} removing!')
exit(-1)
================================================
FILE: settings.gradle.kts
================================================
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
maven("https://maven.fabricmc.net")
maven("https://maven.quiltmc.org/repository/release")
}
}
rootProject.name = "Debugify"
================================================
FILE: src/client/java/dev/isxander/debugify/client/DebugifyClient.java
================================================
package dev.isxander.debugify.client;
public class DebugifyClient {
public static void onInitializeClient() {
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/gui/BugFixController.java
================================================
package dev.isxander.debugify.client.gui;
import dev.isxander.yacl3.api.Option;
import dev.isxander.yacl3.api.utils.Dimension;
import dev.isxander.yacl3.gui.AbstractWidget;
import dev.isxander.yacl3.gui.YACLScreen;
import dev.isxander.yacl3.gui.controllers.BooleanController;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
public class BugFixController extends BooleanController {
public BugFixController(Option<Boolean> option, boolean errored) {
super(option, state -> {
if (errored)
return Component.translatable("debugify.error.mixin_error.text").withStyle(ChatFormatting.RED);
if (!option.available())
return Component.translatable("debugify.fix.unavailable");
return state
? Component.translatable("debugify.fix.enabled").withStyle(ChatFormatting.GREEN)
: Component.translatable("debugify.fix.disabled").withStyle(ChatFormatting.RED);
}, false);
}
@Override
public AbstractWidget provideWidget(YACLScreen screen, Dimension<Integer> widgetDimension) {
return new BugFixControllerElement(this, screen, widgetDimension);
}
public static class BugFixControllerElement extends BooleanControllerElement {
private String tooltipString;
public BugFixControllerElement(BugFixController control, YACLScreen screen, Dimension<Integer> dim) {
super(control, screen, dim);
control.option().addListener((opt, pending) -> recalculateTooltipString());
recalculateTooltipString();
}
@Override
public boolean matchesSearch(String query) {
return super.matchesSearch(query) || tooltipString.contains(query.toLowerCase());
}
private void recalculateTooltipString() {
this.tooltipString = control.option().description().text().getString().toLowerCase();
}
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/gui/ConfigGuiHelper.java
================================================
package dev.isxander.debugify.client.gui;
import dev.isxander.debugify.config.DebugifyConfig;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import dev.isxander.debugify.error.DebugifyErrorHandler;
import dev.isxander.yacl3.api.*;
import dev.isxander.yacl3.api.controller.BooleanControllerBuilder;
import dev.isxander.yacl3.api.controller.TickBoxControllerBuilder;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.ChatFormatting;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.locale.Language;
import net.minecraft.network.chat.Component;
public class ConfigGuiHelper {
public static Screen createConfigGui(DebugifyConfig config, Screen parent) {
var yacl = YetAnotherConfigLib.createBuilder()
.title(Component.translatable("debugify.name"))
.save(config::save);
var gameplayWarning = LabelOption.create(Component.translatable("debugify.gameplay.warning").withStyle(ChatFormatting.RED));
var gameplayInMultiplayer = Option.<Boolean>createBuilder()
.name(Component.translatable("debugify.gameplay.enable_in_multiplayer"))
.binding(
false,
() -> config.gameplayFixesInMultiplayer,
value -> config.gameplayFixesInMultiplayer = value
)
.controller(TickBoxControllerBuilder::create)
.build();
for (BugFix.Env env : BugFix.Env.values()) {
var categoryBuilder = ConfigCategory.createBuilder()
.name(Component.translatable(env.getDisplayName()))
.tooltip(Component.translatable(env.getDescriptionKey()));
for (FixCategory fixCategory : FixCategory.values()) {
var groupBuilder = OptionGroup.createBuilder()
.name(Component.translatable(fixCategory.getDisplayName()));
if (fixCategory == FixCategory.GAMEPLAY) {
groupBuilder
.option(gameplayWarning)
.option(gameplayInMultiplayer);
}
config.getBugFixes().forEach((bug, enabled) -> {
if (bug.env() == env && bug.category() == fixCategory) {
var conflicts = bug.getActiveConflicts().stream().map(id -> FabricLoader.getInstance().getModContainer(id).orElseThrow().getMetadata().getName()).toList();
var satisfiesOS = bug.satisfiesOSRequirement();
var errored = DebugifyErrorHandler.hasErrored(bug);
var unavailable = !conflicts.isEmpty() || !satisfiesOS || errored;
var optionBuilder = Option.<Boolean>createBuilder()
.name(Component.literal(bug.bugId()))
.binding(
bug.enabledByDefault(),
() -> config.getBugFixes().get(bug),
value -> config.getBugFixes().replace(bug, value)
)
.customController(opt -> new BugFixController(opt, errored))
.available(!unavailable)
.flag(OptionFlag.GAME_RESTART);
OptionDescription.Builder descriptionBuilder = OptionDescription.createBuilder();
if (errored) {
descriptionBuilder.text(Component.translatable("debugify.error.mixin_error", bug.bugId()).withStyle(ChatFormatting.RED, ChatFormatting.BOLD));
}
for (String conflictMod : conflicts) {
descriptionBuilder.text(Component.translatable("debugify.error.conflict", bug.bugId(), conflictMod).withStyle(ChatFormatting.RED));
}
if (!satisfiesOS)
descriptionBuilder.text(Component.translatable("debugify.error.os", bug.bugId(), Component.translatable(bug.requiredOs().getDisplayName())).withStyle(ChatFormatting.RED));
if (bug.description() != null)
descriptionBuilder.text(Component.literal(bug.description()));
String fixExplanationTooltipKey = "debugify.fix_explanation." + bug.bugId().toLowerCase();
if (Language.getInstance().has(fixExplanationTooltipKey))
descriptionBuilder.text(Component.translatable(fixExplanationTooltipKey).withStyle(ChatFormatting.GRAY));
String fixEffectTooltipKey = "debugify.fix_effect." + bug.bugId().toLowerCase();
if (Language.getInstance().has(fixEffectTooltipKey))
descriptionBuilder.text(Component.translatable(fixEffectTooltipKey).withStyle(ChatFormatting.GOLD));
optionBuilder.description(descriptionBuilder.build());
groupBuilder.option(optionBuilder.build());
}
});
categoryBuilder.group(groupBuilder.build());
}
yacl.category(categoryBuilder.build());
}
yacl.category(ConfigCategory.createBuilder()
.name(Component.translatable("debugify.misc"))
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("debugify.misc.default_disabled"))
.description(OptionDescription.of(Component.translatable("debugify.misc.default_disabled.description")))
.binding(
false,
() -> config.defaultDisabled,
value -> config.defaultDisabled = value
)
.controller(BooleanControllerBuilder::create)
.build())
.build());
return yacl.build().generateScreen(parent);
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/gui/NoYACLScreen.java
================================================
package dev.isxander.debugify.client.gui;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.AlertScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.ClickEvent;
import net.minecraft.network.chat.Component;
import java.net.URI;
public class NoYACLScreen extends AlertScreen {
public NoYACLScreen(Screen parent) {
super(
() -> Minecraft.getInstance().setScreen(parent),
Component.translatable("debugify.no_yacl.title").withStyle(ChatFormatting.BOLD),
Component.translatable("debugify.no_yacl.description",
Component.literal("YetAnotherConfigLib").withStyle(style -> style
.withClickEvent(new ClickEvent.OpenUrl(URI.create("https://curseforge.com/minecraft/mc-mods/yacl")))
.applyFormats(ChatFormatting.BLUE, ChatFormatting.UNDERLINE)),
Component.literal(".minecraft/config/debugify.json").withStyle(style -> style
.withClickEvent(new ClickEvent.OpenFile(FabricLoader.getInstance().getConfigDir()))
.applyFormats(ChatFormatting.BLUE, ChatFormatting.UNDERLINE)))
);
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc118740/LocalPlayerDuck.java
================================================
package dev.isxander.debugify.client.helpers.mc118740;
/**
* Taken from MoulberrysTweaks
* https://github.com/Moulberry/MoulberrysTweaks
* under MIT license
*
* @author Moulberry
*/
public interface LocalPlayerDuck {
float debugify$getVisualAttackStrengthScale(float partialTick);
void debugify$resetVisualAttackStrengthScale();
void debugify$incrementVisualAttackStrengthScale();
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc122477/KeyboardPollCounter.java
================================================
package dev.isxander.debugify.client.helpers.mc122477;
public class KeyboardPollCounter {
private static int count = 0;
private static boolean requiresCount = false;
public static void poll() {
if (requiresCount)
count++;
}
public static void startCounting() {
requiresCount = true;
}
public static void stopCountingAndReset() {
requiresCount = false;
count = 0;
}
public static int getCount() {
return count;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc147605/TextFieldHolder.java
================================================
package dev.isxander.debugify.client.helpers.mc147605;
import net.minecraft.client.gui.components.EditBox;
import org.jetbrains.annotations.Nullable;
public interface TextFieldHolder {
@Nullable
EditBox getFocusedTextField();
void setFocusedTextField(@Nullable EditBox widget);
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc197260/DebugifyLightProvider.java
================================================
package dev.isxander.debugify.client.helpers.mc197260;
import net.minecraft.client.renderer.entity.state.LivingEntityRenderState;
public interface DebugifyLightProvider<S extends LivingEntityRenderState> {
default void debugify$modifyLightCoords(S livingEntityState) {
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc237493/DebugifyTelemetry.java
================================================
package dev.isxander.debugify.client.helpers.mc237493;
import com.mojang.serialization.Codec;
import java.util.Arrays;
import java.util.Comparator;
import java.util.function.IntFunction;
import net.minecraft.network.chat.Component;
import net.minecraft.util.ByIdMap;
import net.minecraft.util.Mth;
import net.minecraft.util.StringRepresentable;
public enum DebugifyTelemetry {
OFF(0, "options.telemetry.state.none", "debugify.mc_237493.tooltip.off"),
MINIMAL(1, "options.telemetry.state.minimal", "debugify.mc_237493.tooltip.minimal"),
ALL(2, "options.telemetry.state.all", "debugify.mc_237493.tooltip.all");
private static final IntFunction<DebugifyTelemetry> BY_ID = ByIdMap.continuous(value -> value.id, values(), ByIdMap.OutOfBoundsStrategy.WRAP);
public static final Codec<DebugifyTelemetry> LEGACY_CODEC = Codec.INT.xmap(BY_ID::apply, value -> value.id);
private final int id;
private final Component caption;
private final Component tooltip;
DebugifyTelemetry(int id, final String key, final String translationKey) {
this.id = id;
this.caption = Component.translatable(key);
this.tooltip = Component.translatable(translationKey);
}
public Component caption() {
return this.caption;
}
public Component tooltip() {
return this.tooltip;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc237493/DebugifyTelemetryAccessor.java
================================================
package dev.isxander.debugify.client.helpers.mc237493;
import net.minecraft.client.OptionInstance;
public interface DebugifyTelemetryAccessor {
OptionInstance<DebugifyTelemetry> getTelemetryOption();
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc26757/TooltipWrapper.java
================================================
package dev.isxander.debugify.client.helpers.mc26757;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
import net.minecraft.util.FormattedCharSequence;
public class TooltipWrapper {
public static List<FormattedCharSequence> wrapTooltipLines(Screen screen, Font textRenderer, List<Component> lines) {
int width = getMaxWidth(textRenderer, lines);
int maxWidth = screen.width - 30;
if (width <= maxWidth)
return lines.stream().map(Component::getVisualOrderText).collect(Collectors.toList());
List<FormattedCharSequence> wrapped = new ArrayList<>();
for (Component line : lines) {
wrapped.addAll(textRenderer.split(line, maxWidth));
}
return wrapped;
}
private static int getMaxWidth(Font textRenderer, List<Component> lines) {
int maxWidth = 0;
for (Component line : lines) {
int width = textRenderer.width(line);
if (width > maxWidth)
maxWidth = width;
}
return maxWidth;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/integrations/ModMenuIntegration.java
================================================
package dev.isxander.debugify.client.integrations;
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import dev.isxander.debugify.Debugify;
import dev.isxander.debugify.client.gui.ConfigGuiHelper;
import dev.isxander.debugify.client.gui.NoYACLScreen;
import net.fabricmc.loader.api.FabricLoader;
public class ModMenuIntegration implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return (parent) -> {
if (!FabricLoader.getInstance().isModLoaded("yet_another_config_lib_v3"))
return new NoYACLScreen(parent);
return ConfigGuiHelper.createConfigGui(Debugify.CONFIG, parent);
};
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc105068/LivingEntityMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc105068;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.level.Level;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-105068", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Attacking a shield-blocking player always plays the player hurts sound")
@Mixin(LivingEntity.class)
public abstract class LivingEntityMixin extends Entity {
public LivingEntityMixin(EntityType<?> variant, Level world) {
super(variant, world);
}
@WrapOperation(
method = "handleEntityEvent",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/entity/LivingEntity;playSound(Lnet/minecraft/sounds/SoundEvent;FF)V"
)
)
private void beforeCond30(LivingEntity instance, SoundEvent soundEvent, float volume, float pitch, Operation<Void> original) {
level().playLocalSound(getX(), getY(), getZ(), soundEvent, getSoundSource(), volume, pitch, false);
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc115092/SquidRendererMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc115092;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Axis;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.renderer.entity.SquidRenderer;
import net.minecraft.client.renderer.entity.state.SquidRenderState;
import net.minecraft.world.entity.animal.squid.Squid;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@BugFix(id = "MC-115092", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Squid/glow squid named \"Dinnerbone\" or \"Grumm\" is not upside-down")
@Mixin(SquidRenderer.class)
public class SquidRendererMixin<T extends Squid> {
@Unique
T squidEntity;
@Inject(
method = "extractRenderState(Lnet/minecraft/world/entity/animal/squid/Squid;Lnet/minecraft/client/renderer/entity/state/SquidRenderState;F)V",
at = @At("TAIL")
)
private void getSquidEntity(T entity, SquidRenderState state, float partialTicks, CallbackInfo ci) {
squidEntity = entity;
}
@Inject(
method = "setupRotations(Lnet/minecraft/client/renderer/entity/state/SquidRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;FF)V",
at = @At("TAIL")
)
private void applyRotation(SquidRenderState state, PoseStack poseStack, float bodyRot, float entityScale, CallbackInfo ci) {
String name = squidEntity.getName().getString();
if ("Dinnerbone".equals(name) || "Grumm".equals(name)) {
poseStack.translate(0.0F, squidEntity.getBbHeight() + 0.1F, 0.0F);
poseStack.mulPose(Axis.XP.rotationDegrees(180.0F));
}
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc116379/FishingHookRendererMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc116379;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.renderer.entity.FishingHookRenderer;
import net.minecraft.world.entity.HumanoidArm;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.FishingHook;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-116379", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Punching with a cast fishing rod in the off-hand detaches fishing line from rod")
@Mixin(FishingHookRenderer.class)
public class FishingHookRendererMixin {
@ModifyExpressionValue(
method = "extractRenderState(Lnet/minecraft/world/entity/projectile/FishingHook;Lnet/minecraft/client/renderer/entity/state/FishingHookRenderState;F)V",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/entity/player/Player;getAttackAnim(F)F"
)
)
private float modifyHandSwingProgress(float handSwingProgress, FishingHook entity) {
Player player = entity.getPlayerOwner();
int j = player.getMainArm() == HumanoidArm.RIGHT ? 1 : -1;
int j2 = j;
ItemStack itemStack = player.getMainHandItem();
if (!itemStack.is(Items.FISHING_ROD)) {
j = -j;
}
return j == j2 ? handSwingProgress : 0;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc118740/GuiMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc118740;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import dev.isxander.debugify.client.helpers.mc118740.LocalPlayerDuck;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.player.LocalPlayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
/**
* Taken from MoulberrysTweaks
* https://github.com/Moulberry/MoulberrysTweaks
* under MIT license
*
* @author Moulberry
*/
@BugFix(id = "MC-118740", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, modConflicts = "moulberrystweaks", description = "Performing any right-click action silently resets the attack cooldown")
@Mixin(Gui.class)
public class GuiMixin {
/**
* This fixes both:
* MC-118740 - Performing any right-click action silently resets the attack cooldown
* MC-116510 - Attack indicator doesn't indicate (most of the time) that breaking instantly-mineable blocks resets your attack
*/
@WrapOperation(
method = "extractCrosshair",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/player/LocalPlayer;getAttackStrengthScale(F)F"
)
)
public float useFixedCooldown(LocalPlayer instance, float partialTick, Operation<Float> original) {
if (instance instanceof LocalPlayerDuck localPlayer) {
return localPlayer.debugify$getVisualAttackStrengthScale(partialTick);
} else {
return original.call(instance, partialTick);
}
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc118740/LocalPlayerMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc118740;
import com.mojang.authlib.GameProfile;
import dev.isxander.debugify.client.helpers.mc118740.LocalPlayerDuck;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.util.Mth;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
/**
* Taken from <a href="https://github.com/Moulberry/MoulberrysTweaks">MoulberrysTweaks</a>
* under MIT license
*
* @author Moulberry
*/
@BugFix(id = "MC-118740", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, modConflicts = "moulberrystweaks", description = "Performing any right-click action silently resets the attack cooldown")
@Mixin(LocalPlayer.class)
public abstract class LocalPlayerMixin extends Player implements LocalPlayerDuck {
@Unique
private int visualAttackStrengthTicker = 0;
public LocalPlayerMixin(Level level, GameProfile gameProfile) {
super(level, gameProfile);
}
@Inject(method = "swing", at = @At("HEAD"))
public void swing(InteractionHand hand, CallbackInfo ci) {
this.visualAttackStrengthTicker = 0;
}
@Override
public float debugify$getVisualAttackStrengthScale(float partialTick) {
return Mth.clamp(((float)this.visualAttackStrengthTicker + partialTick) / this.getCurrentItemAttackStrengthDelay(), 0.0F, 1.0F);
}
@Override
public void debugify$resetVisualAttackStrengthScale() {
this.visualAttackStrengthTicker = 0;
}
@Override
public void debugify$incrementVisualAttackStrengthScale() {
this.visualAttackStrengthTicker += 1;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc118740/PlayerMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc118740;
import dev.isxander.debugify.client.helpers.mc118740.LocalPlayerDuck;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.world.entity.player.Player;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
/**
* Taken from <a href="https://github.com/Moulberry/MoulberrysTweaks">MoulberrysTweaks</a>
* under MIT license
*
* @author Moulberry
*/
@BugFix(id = "MC-118740", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, modConflicts = "moulberrystweaks", description = "Performing any right-click action silently resets the attack cooldown")
@Mixin(Player.class)
public class PlayerMixin {
@Inject(method = "resetAttackStrengthTicker", at = @At("HEAD"))
public void resetAttackStrengthTicker(CallbackInfo ci) {
if (this instanceof LocalPlayerDuck localPlayerExt) {
localPlayerExt.debugify$resetVisualAttackStrengthScale();
}
}
@Inject(
method = "tick",
at = @At(
value = "INVOKE",
// no specific reason to inject here, just an easy injection point before doing anything with attack indicator
target = "Lnet/minecraft/world/entity/player/Player;getMainHandItem()Lnet/minecraft/world/item/ItemStack;",
ordinal = 0
)
)
public void tick(CallbackInfo ci) {
if (this instanceof LocalPlayerDuck localPlayerExt) {
localPlayerExt.debugify$incrementVisualAttackStrengthScale();
}
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc122477/EditBoxMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc122477;
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import dev.isxander.debugify.client.helpers.mc122477.KeyboardPollCounter;
import dev.isxander.debugify.fixes.OS;
import net.minecraft.client.gui.components.EditBox;
import net.minecraft.client.input.CharacterEvent;
import net.minecraft.util.Util;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@BugFix(id = "MC-122477", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, os = OS.LINUX, description = "Linux/GNU: Opening chat sometimes writes 't'")
@Mixin(EditBox.class)
public class EditBoxMixin {
@Inject(
method = "<init>(Lnet/minecraft/client/gui/Font;IIIILnet/minecraft/client/gui/components/EditBox;Lnet/minecraft/network/chat/Component;)V",
at = @At("RETURN")
)
private void startPolling(CallbackInfo ci) {
KeyboardPollCounter.startCounting();
}
@WrapMethod(method = "charTyped")
private boolean stopPolling(CharacterEvent event, Operation<Boolean> original) {
if (Util.getPlatform() == Util.OS.LINUX) {
if (KeyboardPollCounter.getCount() == 1) {
return true;
}
if (KeyboardPollCounter.getCount() >= 1) {
KeyboardPollCounter.stopCountingAndReset();
}
}
return original.call(event);
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc122477/MinecraftMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc122477;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import dev.isxander.debugify.client.helpers.mc122477.KeyboardPollCounter;
import dev.isxander.debugify.fixes.OS;
import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@BugFix(id = "MC-122477", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, os = OS.LINUX, description = "Linux/GNU: Opening chat sometimes writes 't'")
@Mixin(Minecraft.class)
public class MinecraftMixin {
@Inject(method = "run", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;pollEvents()V"))
private void onPollEvents(CallbackInfo ci) {
KeyboardPollCounter.poll();
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc122627/CommandSuggestionsMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc122627;
import com.llamalad7.mixinextras.expression.Definition;import com.llamalad7.mixinextras.expression.Expression;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.gui.components.CommandSuggestions;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;
@BugFix(id = "MC-122627", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Tab suggestion box has missing padding on right side")
@Mixin(CommandSuggestions.class)
public class CommandSuggestionsMixin {
/**
* Minecraft renders the text at +1 on the x-axis
* but does not compensate and add 1 to the width of the box
*/
@Definition(id = "fill", method = "Lnet/minecraft/client/gui/GuiGraphicsExtractor;fill(IIIII)V")
@Definition(id = "commandUsagePosition", field = "Lnet/minecraft/client/gui/components/CommandSuggestions;commandUsagePosition:I")
@Definition(id = "commandUsageWidth", field = "Lnet/minecraft/client/gui/components/CommandSuggestions;commandUsageWidth:I")
@Expression("?.fill(?, ?, @(this.commandUsagePosition + this.commandUsageWidth + 1), ?, ?)")
@ModifyExpressionValue(method = "extractUsage", at = @At("MIXINEXTRAS:EXPRESSION"))
private int modifyX2(int x) {
return x + 1;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc127970/ItemInHandRendererMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc127970;
import com.llamalad7.mixinextras.sugar.Local;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.renderer.ItemInHandRenderer;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-127970", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Using Riptide on a trident with an item in your off-hand causes visual glitch with said item")
@Mixin(ItemInHandRenderer.class)
public class ItemInHandRendererMixin {
@ModifyExpressionValue(
method = "renderArmWithItem",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/player/AbstractClientPlayer;isAutoSpinAttack()Z"
)
)
private boolean isUsingRiptideHand(boolean original, @Local(argsOnly = true, name = "itemStack") ItemStack itemStack) {
return original && itemStack.is(Items.TRIDENT);
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc143474/ClientPacketListenerMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc143474;
import com.llamalad7.mixinextras.sugar.Local;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientCommonPacketListenerImpl;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.client.multiplayer.CommonListenerCookie;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.network.Connection;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@BugFix(id = "MC-143474", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Respawning causes your hotbar to reset to the first space")
@Mixin(ClientPacketListener.class)
public abstract class ClientPacketListenerMixin extends ClientCommonPacketListenerImpl {
protected ClientPacketListenerMixin(Minecraft client, Connection connection, CommonListenerCookie commonListenerCookie) {
super(client, connection, commonListenerCookie);
}
@Inject(
method = "handleRespawn",
at = @At(
value = "INVOKE",
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"
)
)
private void persistInventorySlot2(
CallbackInfo ci,
@Local(name = "oldPlayer") LocalPlayer oldPlayer,
@Local(name = "newPlayer") LocalPlayer newPlayer
) {
newPlayer.getInventory().setSelectedSlot(oldPlayer.getInventory().getSelectedSlot());
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc165305/RenderPipelinesMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc165305;
import com.llamalad7.mixinextras.expression.Definition;
import com.llamalad7.mixinextras.expression.Expression;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.renderer.RenderPipelines;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-165306", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Beacon beams are transparent from the inside")
@Mixin(RenderPipelines.class)
public class RenderPipelinesMixin {
@Definition(id = "BEACON_BEAM_OPAQUE", field = "Lnet/minecraft/client/renderer/RenderPipelines;BEACON_BEAM_OPAQUE:Lcom/mojang/blaze3d/pipeline/RenderPipeline;")
@Definition(id = "build", method = "Lcom/mojang/blaze3d/pipeline/RenderPipeline$Builder;build()Lcom/mojang/blaze3d/pipeline/RenderPipeline;")
@Definition(id = "register", method = "Lnet/minecraft/client/renderer/RenderPipelines;register(Lcom/mojang/blaze3d/pipeline/RenderPipeline;)Lcom/mojang/blaze3d/pipeline/RenderPipeline;")
@Expression("BEACON_BEAM_OPAQUE = register(@(?.build()))")
@WrapOperation(method = "<clinit>", at = @At("MIXINEXTRAS:EXPRESSION"))
private static RenderPipeline disableCull(RenderPipeline.Builder builder, Operation<RenderPipeline> original) {
return original.call(builder.withCull(false));
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc165381/LocalPlayerMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc165381;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@BugFix(id = "MC-165381", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Block breaking can be delayed by dropping/throwing the tool while breaking a block")
@Mixin(LocalPlayer.class)
public class LocalPlayerMixin {
@Shadow
@Final
protected Minecraft minecraft;
@Inject(
method = "drop",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/entity/player/Inventory;removeFromSelected(Z)Lnet/minecraft/world/item/ItemStack;",
shift = At.Shift.AFTER
)
)
private void onDropItem(CallbackInfoReturnable<Boolean> cir) {
minecraft.gameMode.stopDestroyBlock();
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc176559/ItemStackAccessor.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc176559;
import net.minecraft.core.component.PatchedDataComponentMap;
import net.minecraft.world.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(ItemStack.class)
public interface ItemStackAccessor {
@Accessor
PatchedDataComponentMap getComponents();
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc176559/MultiPlayerGameModeMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc176559;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.core.component.PatchedDataComponentMap;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import java.util.Objects;
import net.minecraft.client.multiplayer.MultiPlayerGameMode;
import net.minecraft.world.item.ItemStack;
@BugFix(id = "MC-176559", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Breaking process resets when a pickaxe enchanted with Mending mends by XP / Mending slows down breaking blocks again")
@Mixin(value = MultiPlayerGameMode.class, priority = 1010)
public class MultiPlayerGameModeMixin {
// Fabric API also redirects here. WrapOperation is compatible
@WrapOperation(
method = "sameDestroyTarget",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/item/ItemStack;isSameItemSameComponents(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Z"
)
)
private boolean isSameItem(ItemStack a, ItemStack b, Operation<Boolean> original) {
return isSameItemSameComponentsIgnoringDurability(a, b);
}
@Unique
private boolean isSameItemSameComponentsIgnoringDurability(ItemStack stack1, ItemStack stack2) {
if (!stack1.is(stack2.getItem())) {
return false;
} else if (stack1.isEmpty() && stack2.isEmpty()) {
return true;
} else {
int damage1 = stack1.getDamageValue();
int damage2 = stack2.getDamageValue();
stack1.setDamageValue(0);
stack2.setDamageValue(0);
PatchedDataComponentMap components1 = ((ItemStackAccessor) (Object) stack1).getComponents();
PatchedDataComponentMap components2 = ((ItemStackAccessor) (Object) stack2).getComponents();
boolean comparison = Objects.equals(components1, components2);
stack1.setDamageValue(damage1);
stack2.setDamageValue(damage2);
return comparison;
}
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc188359/CakeBlockMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc188359;
import com.llamalad7.mixinextras.sugar.Local;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.core.BlockPos;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.CakeBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@BugFix(id = "MC-188359", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Burp sound does not play after drinking or after eating cake")
@Mixin(CakeBlock.class)
public class CakeBlockMixin {
@Inject(
method = "useWithoutItem",
at = @At(
value = "INVOKE",
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;",
ordinal = 0
)
)
private void playBurpSound(
CallbackInfoReturnable<InteractionResult> cir,
@Local(argsOnly = true, name = "player") Player player,
@Local(argsOnly = true, name = "level") Level level
) {
level.playLocalSound(
player.getX(), player.getY(), player.getZ(),
SoundEvents.PLAYER_BURP, SoundSource.PLAYERS,
0.5F,
Mth.randomBetween(player.getRandom(), 0.9F, 1.0F),
false
);
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc188359/ConsumableMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc188359;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.core.Holder;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.component.Consumable;
import net.minecraft.world.level.Level;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@BugFix(id = "MC-188359", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Burp sound does not play after drinking or after eating cake")
@Mixin(Consumable.class)
public class ConsumableMixin {
@Shadow
@Final
private Holder<SoundEvent> sound;
@Inject(
method = "onConsume",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/item/ItemStack;consume(ILnet/minecraft/world/entity/LivingEntity;)V"
)
)
private void addBurpSound(Level level, LivingEntity user, ItemStack stack, CallbackInfoReturnable<ItemStack> cir) {
if (this.sound.is(SoundEvents.GENERIC_DRINK) && user.isAlwaysTicking()) {
level.playLocalSound(user.getX(), user.getY(), user.getZ(), SoundEvents.PLAYER_BURP, SoundSource.PLAYERS, 0.5F, Mth.randomBetween(user.getRandom(), 0.9F, 1.0F), false);
}
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc197260/ArmorStandRendererMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc197260;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.renderer.Lightmap;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.state.ArmorStandRenderState;
import net.minecraft.util.LightCoordsUtil;
import org.spongepowered.asm.mixin.Mixin;
import net.minecraft.client.model.object.armorstand.ArmorStandArmorModel;
import net.minecraft.client.renderer.entity.ArmorStandRenderer;
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.decoration.ArmorStand;
import net.minecraft.world.level.LightLayer;
@BugFix(id = "MC-197260", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Armor Stand renders itself and armor dark if its head is in a solid block")
@Mixin(ArmorStandRenderer.class)
public abstract class ArmorStandRendererMixin extends LivingEntityRendererMixin<ArmorStand, ArmorStandRenderState, ArmorStandArmorModel> {
protected ArmorStandRendererMixin(EntityRendererProvider.Context context) {
super(context);
}
/**
* Overrides the light level passed to the renderer, with the maximum of:
* <ul>
* <li>The block below the armor stand</li>
* <li>Bottom of the armor stand</li>
* <li>Top of the armor stand</li>
* <li>The block above the armor stand</li>
* </ul>
*/
@Override
public void debugify$modifyLightCoords(ArmorStandRenderState livingEntity) {
if (LightCoordsUtil.sky(livingEntity.lightCoords) >= 15 || LightCoordsUtil.block(livingEntity.lightCoords) >= 15) return;
BlockPos mainPos = BlockPos.containing(livingEntity.x, livingEntity.y, livingEntity.z);
ClientLevel level = Minecraft.getInstance().level;
int maxSkyLight = 0;
int maxBlockLight = 0;
for (int offset : new int[] { -1, 0, 2, 3 }) {
BlockPos pos = mainPos.offset(0, offset, 0);
maxSkyLight = Math.max(maxSkyLight, level.getBrightness(LightLayer.SKY, pos));
maxBlockLight = Math.max(maxBlockLight, level.getBrightness(LightLayer.BLOCK, pos));
}
livingEntity.lightCoords = LightCoordsUtil.pack(maxBlockLight, maxSkyLight);
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc197260/LivingEntityRendererMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc197260;
import com.mojang.blaze3d.vertex.PoseStack;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.model.EntityModel;
import net.minecraft.client.renderer.SubmitNodeCollector;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
import net.minecraft.client.renderer.entity.RenderLayerParent;
import net.minecraft.client.renderer.entity.state.LivingEntityRenderState;
import net.minecraft.client.renderer.state.level.CameraRenderState;
import net.minecraft.world.entity.LivingEntity;
import dev.isxander.debugify.client.helpers.mc197260.DebugifyLightProvider;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@BugFix(id = "MC-197260", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Armor Stand renders itself and armor dark if its head is in a solid block")
@Mixin(LivingEntityRenderer.class)
public abstract class LivingEntityRendererMixin<T extends LivingEntity, S extends LivingEntityRenderState, M extends EntityModel<? super S>> extends EntityRenderer<T, S> implements RenderLayerParent<S, M>, DebugifyLightProvider<S> {
protected LivingEntityRendererMixin(EntityRendererProvider.Context context) {
super(context);
}
@Inject(
method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)V",
at = @At("HEAD")
)
private void fixLightLevel(S state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera, CallbackInfo ci) {
debugify$modifyLightCoords(state);
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc206540/EntityMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc206540;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@BugFix(id = "MC-206540", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, modConflicts = "ridingmousefix", description = "Increased input delay when riding an entity")
@Mixin(Entity.class)
public abstract class EntityMixin {
@Shadow
public abstract float getYRot();
/**
* Code taken from {@link net.minecraft.world.entity.vehicle.boat.AbstractBoat}
*/
@Inject(method = "onPassengerTurned", at = @At("HEAD"))
private void fixCameraMovement(Entity passenger, CallbackInfo ci) {
if (passenger.isAlwaysTicking()) {
passenger.setYBodyRot(this.getYRot());
float f = Mth.wrapDegrees(passenger.getYRot() - this.getYRot());
float g = Mth.clamp(f, -180.0F, 180.0F);
passenger.yRotO += g - f;
passenger.setYRot(passenger.getYRot() + g - f);
passenger.setYHeadRot(passenger.getYRot());
}
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc210318/BookSignScreenMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc210318;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.gui.screens.inventory.BookSignScreen;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;
@BugFix(id = "MC-210318", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Maximum length of book title changed from 16 to 15 characters")
@Mixin(BookSignScreen.class)
public class BookSignScreenMixin {
@ModifyArg(
method = "init",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/gui/components/EditBox;setMaxLength(I)V"
)
)
private int restoreBookTitleMaxLength(int length) {
return 16;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc211561/FishingHookRendererMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc211561;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.renderer.entity.FishingHookRenderer;
import net.minecraft.world.entity.HumanoidArm;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.FishingRodItem;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-211561", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "Fishing line appears in opposite hand when switching slots")
@Mixin(FishingHookRenderer.class)
public class FishingHookRendererMixin {
@ModifyReturnValue(method = "getHoldingArm", at = @At("RETURN"))
private static HumanoidArm fixHoldingArm(HumanoidArm original, Player owner) {
return owner.getOffhandItem().getItem() instanceof FishingRodItem ? original : owner.getMainArm();
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc215531/GuiMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc215531;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-215531", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "The carved pumpkin overlay is rendered in spectator mode")
@Mixin(Gui.class)
public class GuiMixin {
@Shadow @Final private Minecraft minecraft;
@ModifyExpressionValue(method = "extractCameraOverlays", at = @At(value = "INVOKE", target = "Ljava/util/Optional;isPresent()Z"))
private boolean shouldRenderPumpkinOverlay(boolean pumpkinOnHead) {
return pumpkinOnHead && !minecraft.player.isSpectator();
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc217716/GameRendererMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc217716;
import com.llamalad7.mixinextras.expression.Definition;
import com.llamalad7.mixinextras.expression.Expression;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GameRenderer;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-217716", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "The green nausea overlay isn't removed when switching into spectator mode")
@Mixin(GameRenderer.class)
public class GameRendererMixin {
@Shadow @Final
private Minecraft minecraft;
// Naughty minecraft using references to player in `render`!!
// This should be in extractOptions and we shouldn't be referencing player either here but
// we have to because mojang gets the nausea blend factor here
@Definition(id = "getEffectBlendFactor", method = "Lnet/minecraft/client/player/LocalPlayer;getEffectBlendFactor(Lnet/minecraft/core/Holder;F)F")
@Definition(id = "NAUSEA", field = "Lnet/minecraft/world/effect/MobEffects;NAUSEA:Lnet/minecraft/core/Holder;")
@Expression("?.getEffectBlendFactor(NAUSEA, ?)")
@ModifyExpressionValue(method = "renderLevel", at = @At("MIXINEXTRAS:EXPRESSION"))
private float shouldShowNauseaOverlay(float original) {
return minecraft.player.isSpectator() ? 0.0f : original;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/OptionsMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc237493;
import dev.isxander.debugify.client.helpers.mc237493.DebugifyTelemetry;
import dev.isxander.debugify.client.helpers.mc237493.DebugifyTelemetryAccessor;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.gui.components.Tooltip;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import java.util.Arrays;
import net.minecraft.client.OptionInstance;
import net.minecraft.client.Options;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@BugFix(id = "MC-237493", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, modConflicts = "no-telemetry", description = "Telemetry cannot be disabled")
@Mixin(Options.class)
public abstract class OptionsMixin implements DebugifyTelemetryAccessor {
@Shadow public abstract OptionInstance<Boolean> telemetryOptInExtra();
@Unique
private final OptionInstance<DebugifyTelemetry> debugifyTelemetry = new OptionInstance<>(
"options.telemetry.button",
value -> Tooltip.create(value.tooltip()),
(component, value) -> value.caption(),
new OptionInstance.Enum<>(Arrays.asList(DebugifyTelemetry.values()), DebugifyTelemetry.LEGACY_CODEC),
DebugifyTelemetry.OFF,
value -> telemetryOptInExtra().set(value == DebugifyTelemetry.ALL)
);
@Override
public OptionInstance<DebugifyTelemetry> getTelemetryOption() {
return debugifyTelemetry;
}
@Inject(method = "processOptions", at = @At("RETURN"))
private void shouldAcceptVanillaTelemetry(Options.FieldAccess access, CallbackInfo ci) {
access.process("debugifyTelemetry", getTelemetryOption());
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryEventInstanceMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc237493;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.mojang.authlib.minecraft.TelemetryEvent;
import dev.isxander.debugify.client.helpers.mc237493.DebugifyTelemetry;
import dev.isxander.debugify.client.helpers.mc237493.DebugifyTelemetryAccessor;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.telemetry.TelemetryEventInstance;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-237493", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, modConflicts = "no-telemetry", description = "Telemetry cannot be disabled")
@Mixin(TelemetryEventInstance.class)
public class TelemetryEventInstanceMixin {
@ModifyReturnValue(method = "export", at = @At("RETURN"))
private TelemetryEvent preventEvents(TelemetryEvent realEvent) {
if (((DebugifyTelemetryAccessor) Minecraft.getInstance().options).getTelemetryOption().get() == DebugifyTelemetry.OFF) {
return TelemetryEvent.EMPTY;
}
return realEvent;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryEventWidgetMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc237493;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;
import dev.isxander.debugify.client.helpers.mc237493.DebugifyTelemetry;
import dev.isxander.debugify.client.helpers.mc237493.DebugifyTelemetryAccessor;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.screens.telemetry.TelemetryEventWidget;
import net.minecraft.client.telemetry.TelemetryEventType;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.List;
@BugFix(id = "MC-237493", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, modConflicts = "no-telemetry", description = "Telemetry cannot be disabled")
@Mixin(TelemetryEventWidget.class)
public class TelemetryEventWidgetMixin {
@Shadow @Final private Font font;
@ModifyExpressionValue(method = "buildContent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/telemetry/TelemetryEventType;values()Ljava/util/List;"))
private List<TelemetryEventType> modifyInUseTelemetry(List<TelemetryEventType> inUse) {
if (((DebugifyTelemetryAccessor) Minecraft.getInstance().options).getTelemetryOption().get() == DebugifyTelemetry.OFF)
return List.of();
return inUse;
}
@Inject(method = "buildContent", at = @At(value = "INVOKE", target = "Ljava/util/List;sort(Ljava/util/Comparator;)V"))
private void addDebugifyContent(
CallbackInfoReturnable<TelemetryEventWidget.Content> cir,
@Local(name = "content") TelemetryEventWidget.ContentBuilder content
) {
if (((DebugifyTelemetryAccessor) Minecraft.getInstance().options).getTelemetryOption().get() == DebugifyTelemetry.OFF) {
content.addHeader(this.font, Component.translatable("debugify.mc_237493.header"));
content.addLine(this.font, Component.translatable("debugify.mc_237493.line", Component.translatable("options.telemetry.state.none")).withStyle(ChatFormatting.GRAY));
}
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryInfoScreenMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc237493;
import com.llamalad7.mixinextras.expression.Definition;
import com.llamalad7.mixinextras.expression.Expression;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import dev.isxander.debugify.client.helpers.mc237493.DebugifyTelemetry;
import dev.isxander.debugify.client.helpers.mc237493.DebugifyTelemetryAccessor;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.Options;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.layouts.LayoutElement;
import net.minecraft.client.gui.layouts.LinearLayout;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.telemetry.TelemetryEventWidget;
import net.minecraft.client.gui.screens.telemetry.TelemetryInfoScreen;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@BugFix(id = "MC-237493", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, modConflicts = "no-telemetry", description = "Telemetry cannot be disabled")
@Mixin(TelemetryInfoScreen.class)
public abstract class TelemetryInfoScreenMixin extends Screen {
protected TelemetryInfoScreenMixin(Component title) {
super(title);
}
@Shadow @Final private Options options;
@Shadow private TelemetryEventWidget telemetryEventWidget;
@Unique private AbstractWidget cycleButton;
@Definition(id = "addChild", method = "Lnet/minecraft/client/gui/layouts/LinearLayout;addChild(Lnet/minecraft/client/gui/layouts/LayoutElement;)Lnet/minecraft/client/gui/layouts/LayoutElement;")
@Definition(id = "builder", method = "Lnet/minecraft/client/gui/components/Checkbox;builder(Lnet/minecraft/network/chat/Component;Lnet/minecraft/client/gui/Font;)Lnet/minecraft/client/gui/components/Checkbox$Builder;")
@Definition(id = "CHECKBOX_OPT_IN", field = "Lnet/minecraft/client/gui/screens/telemetry/TelemetryInfoScreen;CHECKBOX_OPT_IN:Lnet/minecraft/network/chat/Component;")
@Expression("?.addChild(builder(CHECKBOX_OPT_IN, ?).?(?).?(?.?.?()).?(?).?())")
@WrapOperation(method = "init", at = @At("MIXINEXTRAS:EXPRESSION"))
private LayoutElement createTelemetryCheckbox(LinearLayout instance, LayoutElement child, Operation<LayoutElement> original) {
this.cycleButton = instance.addChild(((DebugifyTelemetryAccessor) options).getTelemetryOption().createButton(options, 0, 0, 308, state -> telemetryEventWidget.onOptInChanged(state == DebugifyTelemetry.ALL)));
return null;
}
@Inject(method = "repositionElements", at = @At("TAIL"))
private void repositionCycleButton(CallbackInfo ci) {
if (this.cycleButton != null) {
this.cycleButton.setWidth(308);
}
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc242809/DirectJoinServerScreenMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc242809;
import com.llamalad7.mixinextras.expression.Definition;
import com.llamalad7.mixinextras.expression.Expression;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.gui.screens.DirectJoinServerScreen;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-242809", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "IP field in the multiplayer menu will not detect the IP if a space is put at the beginning/end of it")
@Mixin(DirectJoinServerScreen.class)
public class DirectJoinServerScreenMixin {
@Definition(id = "ipEdit", field = "Lnet/minecraft/client/gui/screens/DirectJoinServerScreen;ipEdit:Lnet/minecraft/client/gui/components/EditBox;")
@Definition(id = "getValue", method = "Lnet/minecraft/client/gui/components/EditBox;getValue()Ljava/lang/String;")
@Expression("?.? = @(?.ipEdit.getValue())")
@ModifyExpressionValue(method = "onSelect", at = @At("MIXINEXTRAS:EXPRESSION"))
private String trimIpSelect(String ip) {
return ip.trim();
}
@Definition(id = "ipEdit", field = "Lnet/minecraft/client/gui/screens/DirectJoinServerScreen;ipEdit:Lnet/minecraft/client/gui/components/EditBox;")
@Definition(id = "setValue", method = "Lnet/minecraft/client/gui/components/EditBox;setValue(Ljava/lang/String;)V")
@Expression("this.ipEdit.setValue(@(?))")
@ModifyExpressionValue(method = "init", at = @At("MIXINEXTRAS:EXPRESSION"))
private String trimIpInit(String ip) {
return ip.trim();
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc242809/ManageServerScreenMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc242809;
import com.llamalad7.mixinextras.expression.Definition;
import com.llamalad7.mixinextras.expression.Expression;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.gui.screens.ManageServerScreen;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-242809", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "IP field in the multiplayer menu will not detect the IP if a space is put at the beginning/end of it")
@Mixin(ManageServerScreen.class)
public class ManageServerScreenMixin {
@Definition(id = "serverData", field = "Lnet/minecraft/client/gui/screens/ManageServerScreen;serverData:Lnet/minecraft/client/multiplayer/ServerData;")
@Definition(id = "ip", field = "Lnet/minecraft/client/multiplayer/ServerData;ip:Ljava/lang/String;")
@Definition(id = "ipEdit", field = "Lnet/minecraft/client/gui/screens/ManageServerScreen;ipEdit:Lnet/minecraft/client/gui/components/EditBox;")
@Definition(id = "getValue", method = "Lnet/minecraft/client/gui/components/EditBox;getValue()Ljava/lang/String;")
@Expression("this.serverData.ip = @(this.ipEdit.getValue())")
@ModifyExpressionValue(method = "onAdd", at = @At("MIXINEXTRAS:EXPRESSION"))
private String trimIp(String ip) {
return ip.trim();
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc251068/WorldSelectionListMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc251068;
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.ObjectSelectionList;
import net.minecraft.client.gui.screens.ConfirmScreen;
import net.minecraft.client.gui.screens.ProgressScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.worldselection.WorldSelectionList;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-251068", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "If you delete your only world, then you are no longer automatically thrown into the menu of creating a new world")
@Mixin(WorldSelectionList.class)
public abstract class WorldSelectionListMixin extends ObjectSelectionList<WorldSelectionList.Entry> {
public WorldSelectionListMixin(Minecraft minecraft, int i, int j, int k, int l) {
super(minecraft, i, j, k, l);
}
@WrapWithCondition(
method = "returnToScreen",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V"
)
)
private boolean dontShowEmptyWorldList(Minecraft instance, Screen screen) {
return (this.minecraft.screen instanceof ProgressScreen || this.minecraft.screen instanceof ConfirmScreen);
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc259512/LivingEntityMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc259512;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@BugFix(id = "MC-259512", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, modConflicts = "eg_fix_horizontal_camera_lag", description = "Increased input delay when riding an entity")
@Mixin(LivingEntity.class)
public abstract class LivingEntityMixin extends Entity {
public LivingEntityMixin(EntityType<?> entityType, Level level) {
super(entityType, level);
}
/**
* yHeadRot does not match yRot. yRot is your actual view rotation (the blue line in your debug hitbox),
* while yHeadRot is interpolated and lags behind (your visible head rotation)
*/
@ModifyExpressionValue(
method = "getViewYRot",
at = @At(
value = "FIELD",
target = "Lnet/minecraft/world/entity/LivingEntity;yHeadRot:F",
opcode = Opcodes.GETFIELD
)
)
private float smoothYRot(float original) {
return (Entity) this instanceof Player ? this.getYRot() : original;
}
@ModifyExpressionValue(
method = "getViewYRot",
at = @At(
value = "FIELD",
target = "Lnet/minecraft/world/entity/LivingEntity;yHeadRotO:F",
opcode = Opcodes.GETFIELD
)
)
private float smoothYRot0(float original) {
return (Entity) this instanceof Player ? this.yRotO : original;
}
}
================================================
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc267376/CameraMixin.java
================================================
package dev.isxander.debugify.client.mixins.basic.mc267376;
import com.llamalad7.mixinextras.sugar.Local;
import dev.isxander.debugify.fixes.BugFix;
import dev.isxander.debugify.fixes.FixCategory;
import net.minecraft.client.Camera;
import net.minecraft.client.player.LocalPlayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;
@BugFix(id = "MC-267376", category = FixCategory.BASIC, env = BugFix.Env.CLIENT, description = "You can view through blocks on small scales (near plane clipping)")
@Mixin(Camera.class)
public class CameraMixin {
@ModifyArg(
method = "update",
at = @At(
value = "INVOKE",
target = "Lnet/minecraf
gitextract_dituu3lz/
├── .bugs
├── .editorconfig
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug-report.yml
│ │ ├── config.yml
│ │ └── patch-request.yml
│ └── workflows/
│ ├── check-bug-fixes.yml
│ ├── gradle.yml
│ └── publish.yml
├── .gitignore
├── GUIDELINES.md
├── LICENSE
├── PATCHED.md
├── README.md
├── build.gradle.kts
├── changelogs/
│ ├── 1.18.2/
│ │ ├── 1.0.0.md
│ │ ├── 1.1.0.md
│ │ ├── 1.10.0.md
│ │ ├── 1.11.0.md
│ │ ├── 1.2.0.md
│ │ ├── 1.2.1.md
│ │ ├── 1.2.2.md
│ │ ├── 1.3.0.md
│ │ ├── 1.4.0.md
│ │ ├── 1.4.1.md
│ │ ├── 1.5.0.md
│ │ ├── 1.6.0.md
│ │ ├── 1.7.0.md
│ │ ├── 1.7.1.md
│ │ ├── 1.7.2.md
│ │ ├── 1.8.0.md
│ │ ├── 1.8.1.md
│ │ └── 1.9.0.md
│ ├── 1.19/
│ │ ├── 2.0.0.md
│ │ ├── 2.1.0.md
│ │ ├── 2.2.0.md
│ │ ├── 2.3.0.md
│ │ ├── 2.3.1.md
│ │ └── 2.3.2.md
│ ├── 1.19.1/
│ │ ├── 2.3.3.md
│ │ ├── 2.3.4.md
│ │ └── 2.4.0.md
│ ├── 1.19.2/
│ │ ├── 2.4.1.md
│ │ ├── 2.5.0.md
│ │ ├── 2.6.0.md
│ │ ├── 2.6.1.md
│ │ ├── 2.6.2.md
│ │ ├── 2.7.0.md
│ │ ├── 2.7.1.md
│ │ └── 2.8.0.md
│ ├── 1.19.3/
│ │ ├── 1.19.3+1.0.md
│ │ ├── 1.19.3+1.1.md
│ │ └── 1.19.3+1.2.md
│ ├── 1.19.4/
│ │ ├── 1.19.4+1.0.md
│ │ ├── 1.19.4+1.1.md
│ │ ├── 1.19.4+2.0.md
│ │ ├── 1.19.4+2.1.md
│ │ └── 1.19.4+2.2.md
│ ├── 1.20/
│ │ ├── 1.20+1.0.md
│ │ └── 1.20+1.1.md
│ ├── 1.20.1/
│ │ ├── 1.20.1+1.0.md
│ │ ├── 1.20.1+1.1.md
│ │ └── 1.20.1+2.0.md
│ ├── 1.20.2/
│ │ └── 1.20.2+1.0.md
│ ├── 1.20.3/
│ │ ├── 1.20.3+1.0.md
│ │ └── 1.20.3+1.1.md
│ ├── 1.20.4/
│ │ ├── 1.20.4+1.0.md
│ │ └── 1.20.4+1.1.md
│ ├── 1.21/
│ │ └── 1.21+1.0.md
│ ├── 1.21.1/
│ │ └── 1.21.1+1.0.md
│ ├── 1.21.10/
│ │ ├── 1.21.10+1.0.md
│ │ └── 1.21.10+1.1.md
│ ├── 1.21.11/
│ │ └── 1.21.11+1.0.md
│ ├── 1.21.3/
│ │ └── 1.21.3+1.0.md
│ ├── 1.21.4/
│ │ ├── 1.21.4+1.0.md
│ │ └── 1.21.4+1.1.md
│ ├── 1.21.5/
│ │ └── 1.21.5+1.0.md
│ ├── 1.21.7/
│ │ └── 1.21.7+1.0.md
│ ├── 1.21.8/
│ │ └── 1.21.8+1.0.md
│ ├── 26.1.2/
│ │ ├── 26.1.2+1.0.md
│ │ └── 26.1.2.2.md
│ └── header.md
├── crowdin.yml
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── modstitch.ct
├── scripts/
│ └── check_bug_fixes.py
├── settings.gradle.kts
└── src/
├── client/
│ ├── java/
│ │ └── dev/
│ │ └── isxander/
│ │ └── debugify/
│ │ └── client/
│ │ ├── DebugifyClient.java
│ │ ├── gui/
│ │ │ ├── BugFixController.java
│ │ │ ├── ConfigGuiHelper.java
│ │ │ └── NoYACLScreen.java
│ │ ├── helpers/
│ │ │ ├── mc118740/
│ │ │ │ └── LocalPlayerDuck.java
│ │ │ ├── mc122477/
│ │ │ │ └── KeyboardPollCounter.java
│ │ │ ├── mc147605/
│ │ │ │ └── TextFieldHolder.java
│ │ │ ├── mc197260/
│ │ │ │ └── DebugifyLightProvider.java
│ │ │ ├── mc237493/
│ │ │ │ ├── DebugifyTelemetry.java
│ │ │ │ └── DebugifyTelemetryAccessor.java
│ │ │ └── mc26757/
│ │ │ └── TooltipWrapper.java
│ │ ├── integrations/
│ │ │ └── ModMenuIntegration.java
│ │ ├── mixins/
│ │ │ ├── basic/
│ │ │ │ ├── mc105068/
│ │ │ │ │ └── LivingEntityMixin.java
│ │ │ │ ├── mc115092/
│ │ │ │ │ └── SquidRendererMixin.java
│ │ │ │ ├── mc116379/
│ │ │ │ │ └── FishingHookRendererMixin.java
│ │ │ │ ├── mc118740/
│ │ │ │ │ ├── GuiMixin.java
│ │ │ │ │ ├── LocalPlayerMixin.java
│ │ │ │ │ └── PlayerMixin.java
│ │ │ │ ├── mc122477/
│ │ │ │ │ ├── EditBoxMixin.java
│ │ │ │ │ └── MinecraftMixin.java
│ │ │ │ ├── mc122627/
│ │ │ │ │ └── CommandSuggestionsMixin.java
│ │ │ │ ├── mc127970/
│ │ │ │ │ └── ItemInHandRendererMixin.java
│ │ │ │ ├── mc143474/
│ │ │ │ │ └── ClientPacketListenerMixin.java
│ │ │ │ ├── mc165305/
│ │ │ │ │ └── RenderPipelinesMixin.java
│ │ │ │ ├── mc165381/
│ │ │ │ │ └── LocalPlayerMixin.java
│ │ │ │ ├── mc176559/
│ │ │ │ │ ├── ItemStackAccessor.java
│ │ │ │ │ └── MultiPlayerGameModeMixin.java
│ │ │ │ ├── mc188359/
│ │ │ │ │ ├── CakeBlockMixin.java
│ │ │ │ │ └── ConsumableMixin.java
│ │ │ │ ├── mc197260/
│ │ │ │ │ ├── ArmorStandRendererMixin.java
│ │ │ │ │ └── LivingEntityRendererMixin.java
│ │ │ │ ├── mc206540/
│ │ │ │ │ └── EntityMixin.java
│ │ │ │ ├── mc210318/
│ │ │ │ │ └── BookSignScreenMixin.java
│ │ │ │ ├── mc211561/
│ │ │ │ │ └── FishingHookRendererMixin.java
│ │ │ │ ├── mc215531/
│ │ │ │ │ └── GuiMixin.java
│ │ │ │ ├── mc217716/
│ │ │ │ │ └── GameRendererMixin.java
│ │ │ │ ├── mc237493/
│ │ │ │ │ ├── OptionsMixin.java
│ │ │ │ │ ├── TelemetryEventInstanceMixin.java
│ │ │ │ │ ├── TelemetryEventWidgetMixin.java
│ │ │ │ │ └── TelemetryInfoScreenMixin.java
│ │ │ │ ├── mc242809/
│ │ │ │ │ ├── DirectJoinServerScreenMixin.java
│ │ │ │ │ └── ManageServerScreenMixin.java
│ │ │ │ ├── mc251068/
│ │ │ │ │ └── WorldSelectionListMixin.java
│ │ │ │ ├── mc259512/
│ │ │ │ │ └── LivingEntityMixin.java
│ │ │ │ ├── mc267376/
│ │ │ │ │ └── CameraMixin.java
│ │ │ │ ├── mc268420/
│ │ │ │ │ └── GuiMixin.java
│ │ │ │ ├── mc280220/
│ │ │ │ │ └── DolphinCarryingItemLayerMixin.java
│ │ │ │ ├── mc298225/
│ │ │ │ │ └── CameraMixin.java
│ │ │ │ ├── mc298558/
│ │ │ │ │ └── AtmosphericFogEnvironmentMixin.java
│ │ │ │ ├── mc35361/
│ │ │ │ │ └── MinecraftMixin.java
│ │ │ │ ├── mc4490/
│ │ │ │ │ └── FishingHookRendererMixin.java
│ │ │ │ ├── mc46737/
│ │ │ │ │ └── GameRendererMixin.java
│ │ │ │ ├── mc46766/
│ │ │ │ │ └── MinecraftMixin.java
│ │ │ │ ├── mc57057/
│ │ │ │ │ └── GuardianAttackSoundInstanceMixin.java
│ │ │ │ ├── mc577/
│ │ │ │ │ └── AbstractContainerScreenMixin.java
│ │ │ │ ├── mc59810/
│ │ │ │ │ └── MouseHandlerMixin.java
│ │ │ │ ├── mc61489/
│ │ │ │ │ ├── BookEditScreenMixin.java
│ │ │ │ │ └── BookViewScreenMixin.java
│ │ │ │ ├── mc79545/
│ │ │ │ │ └── ExperienceBarRendererMixin.java
│ │ │ │ ├── mc80859/
│ │ │ │ │ └── AbstractContainerScreenMixin.java
│ │ │ │ ├── mc90683/
│ │ │ │ │ └── ClientPacketListenerMixin.java
│ │ │ │ └── mc93384/
│ │ │ │ └── LivingEntityMixin.java
│ │ │ └── gameplay/
│ │ │ ├── mc159163/
│ │ │ │ └── ClientPacketListenerMixin.java
│ │ │ └── mc231097/
│ │ │ └── LocalPlayerMixin.java
│ │ └── utils/
│ │ └── ClientUtils.java
│ └── resources/
│ └── debugify.client.mixins.json
├── gametest/
│ ├── java/
│ │ └── dev/
│ │ └── isxander/
│ │ └── debugify/
│ │ └── test/
│ │ ├── DebugifyApiTest.java
│ │ ├── DebugifyTestUtils.java
│ │ └── suites/
│ │ ├── MC100991.java
│ │ ├── MC30391.java
│ │ ├── MC72151.java
│ │ ├── MC8187.java
│ │ └── MC93018.java
│ └── resources/
│ ├── data/
│ │ └── debugify/
│ │ └── gametest/
│ │ └── structures/
│ │ └── mc-8187.snbt
│ └── fabric.mod.json
└── main/
├── java/
│ └── dev/
│ └── isxander/
│ └── debugify/
│ ├── Debugify.java
│ ├── api/
│ │ └── DebugifyApi.java
│ ├── config/
│ │ └── DebugifyConfig.java
│ ├── error/
│ │ ├── CrashReportInjector.java
│ │ ├── DebugifyErrorHandler.java
│ │ ├── ErrorStage.java
│ │ └── MixinErrorEntry.java
│ ├── fixes/
│ │ ├── BugFix.java
│ │ ├── BugFixData.java
│ │ ├── FixCategory.java
│ │ └── OS.java
│ ├── mixinplugin/
│ │ ├── BugFixDataCache.java
│ │ ├── DebugifyDebugFlags.java
│ │ └── MixinPlugin.java
│ └── mixins/
│ ├── basic/
│ │ ├── mc100991/
│ │ │ └── FishingHookMixin.java
│ │ ├── mc119754/
│ │ │ └── FireworkRocketEntityMixin.java
│ │ ├── mc121706/
│ │ │ └── RangedBowAttackGoalMixin.java
│ │ ├── mc121903/
│ │ │ └── MinecraftCommandBlockMixin.java
│ │ ├── mc123450/
│ │ │ └── ItemFrameMixin.java
│ │ ├── mc129909/
│ │ │ └── ServerPlayerMixin.java
│ │ ├── mc131562/
│ │ │ └── ServerGamePacketListenerImplMixin.java
│ │ ├── mc132878/
│ │ │ └── ArmorStandMixin.java
│ │ ├── mc133218/
│ │ │ └── ServerPlayerMixin.java
│ │ ├── mc134110/
│ │ │ └── ChestBlockMixin.java
│ │ ├── mc139041/
│ │ │ └── FishingRodItemMixin.java
│ │ ├── mc147659/
│ │ │ └── CatSpawnerMixin.java
│ │ ├── mc153010/
│ │ │ └── FoxMixin.java
│ │ ├── mc155509/
│ │ │ └── PufferfishMixin.java
│ │ ├── mc158900/
│ │ │ └── PlayerListMixin.java
│ │ ├── mc159283/
│ │ │ └── DensityFunctionsMixin.java
│ │ ├── mc160095/
│ │ │ └── CactusBlockMixin.java
│ │ ├── mc168573/
│ │ │ └── BlocksAttacksMixin.java
│ │ ├── mc170462/
│ │ │ └── MobEffectsMixin.java
│ │ ├── mc176806/
│ │ │ └── RespawnAnchorBlockMixin.java
│ │ ├── mc177381/
│ │ │ └── LocateCommandMixin.java
│ │ ├── mc179072/
│ │ │ └── SwellGoalMixin.java
│ │ ├── mc183990/
│ │ │ └── MobMixin.java
│ │ ├── mc187100/
│ │ │ └── EnderDragonMixin.java
│ │ ├── mc200418/
│ │ │ └── ZombieVillagerMixin.java
│ │ ├── mc201374/
│ │ │ └── CampfireBlockMixin.java
│ │ ├── mc202637/
│ │ │ └── FoodPropertiesMixin.java
│ │ ├── mc206922/
│ │ │ ├── EntityMixin.java
│ │ │ └── ItemEntityMixin.java
│ │ ├── mc215530/
│ │ │ └── ServerPlayerMixin.java
│ │ ├── mc221257/
│ │ │ └── ShulkerBulletMixin.java
│ │ ├── mc223153/
│ │ │ └── BlocksMixin.java
│ │ ├── mc224729/
│ │ │ └── ChunkMapMixin.java
│ │ ├── mc226961/
│ │ │ └── ExperienceOrbMixin.java
│ │ ├── mc227008/
│ │ │ └── EnderManMixin.java
│ │ ├── mc227337/
│ │ │ └── ShulkerBulletMixin.java
│ │ ├── mc231743/
│ │ │ └── FlowerPotBlockMixin.java
│ │ ├── mc232869/
│ │ │ └── StriderMixin.java
│ │ ├── mc245394/
│ │ │ └── RaidMixin.java
│ │ ├── mc263999/
│ │ │ └── BreakDoorGoalMixin.java
│ │ ├── mc264285/
│ │ │ └── CreeperMixin.java
│ │ ├── mc264979/
│ │ │ └── SettingsMixin.java
│ │ ├── mc267125/
│ │ │ └── PlayerListMixin.java
│ │ ├── mc268617/
│ │ │ └── FileUtilMixin.java
│ │ ├── mc271899/
│ │ │ └── StructureTemplateMixin.java
│ │ ├── mc272431/
│ │ │ └── EnderDragonMixin.java
│ │ ├── mc297837/
│ │ │ └── WaypointTransmitterMixin.java
│ │ ├── mc298066/
│ │ │ └── LivingEntityMixin.java
│ │ ├── mc30391/
│ │ │ └── LivingEntityMixin.java
│ │ ├── mc44654/
│ │ │ └── EntityMixin.java
│ │ ├── mc7569/
│ │ │ └── RconConsoleSourceMixin.java
│ │ ├── mc82263/
│ │ │ └── EnderDragonMixin.java
│ │ ├── mc84661/
│ │ │ └── MobEffectsMixin.java
│ │ ├── mc88371/
│ │ │ └── DragonLandingPhaseMixin.java
│ │ ├── mc89146/
│ │ │ └── ChunkAccessMixin.java
│ │ ├── mc93018/
│ │ │ └── AnimalMixin.java
│ │ └── mc94054/
│ │ └── WallClimberNavigationMixin.java
│ ├── errorhandler/
│ │ └── CrashReportMixin.java
│ └── gameplay/
│ ├── mc136249/
│ │ └── LivingEntityMixin.java
│ └── mc8187/
│ └── TreeFeatureMixin.java
├── resources/
│ ├── assets/
│ │ └── debugify/
│ │ └── lang/
│ │ ├── el_gr.json
│ │ ├── en_us.json
│ │ ├── es_ar.json
│ │ ├── es_mx.json
│ │ ├── fr_fr.json
│ │ ├── it_it.json
│ │ ├── pt_br.json
│ │ ├── ru_ru.json
│ │ ├── tr_tr.json
│ │ ├── uk_ua.json
│ │ ├── vi_vn.json
│ │ ├── zh_cn.json
│ │ └── zh_tw.json
│ └── debugify.mixins.json
└── templates/
└── fabric.mod.json
SYMBOL INDEX (421 symbols across 146 files)
FILE: scripts/check_bug_fixes.py
function version_idx (line 12) | def version_idx(version):
FILE: src/client/java/dev/isxander/debugify/client/DebugifyClient.java
class DebugifyClient (line 3) | public class DebugifyClient {
method onInitializeClient (line 4) | public static void onInitializeClient() {
FILE: src/client/java/dev/isxander/debugify/client/gui/BugFixController.java
class BugFixController (line 11) | public class BugFixController extends BooleanController {
method BugFixController (line 12) | public BugFixController(Option<Boolean> option, boolean errored) {
method provideWidget (line 24) | @Override
class BugFixControllerElement (line 29) | public static class BugFixControllerElement extends BooleanControllerE...
method BugFixControllerElement (line 32) | public BugFixControllerElement(BugFixController control, YACLScreen ...
method matchesSearch (line 38) | @Override
method recalculateTooltipString (line 43) | private void recalculateTooltipString() {
FILE: src/client/java/dev/isxander/debugify/client/gui/ConfigGuiHelper.java
class ConfigGuiHelper (line 16) | public class ConfigGuiHelper {
method createConfigGui (line 17) | public static Screen createConfigGui(DebugifyConfig config, Screen par...
FILE: src/client/java/dev/isxander/debugify/client/gui/NoYACLScreen.java
class NoYACLScreen (line 13) | public class NoYACLScreen extends AlertScreen {
method NoYACLScreen (line 14) | public NoYACLScreen(Screen parent) {
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc118740/LocalPlayerDuck.java
type LocalPlayerDuck (line 10) | public interface LocalPlayerDuck {
method debugify$getVisualAttackStrengthScale (line 11) | float debugify$getVisualAttackStrengthScale(float partialTick);
method debugify$resetVisualAttackStrengthScale (line 12) | void debugify$resetVisualAttackStrengthScale();
method debugify$incrementVisualAttackStrengthScale (line 13) | void debugify$incrementVisualAttackStrengthScale();
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc122477/KeyboardPollCounter.java
class KeyboardPollCounter (line 3) | public class KeyboardPollCounter {
method poll (line 7) | public static void poll() {
method startCounting (line 12) | public static void startCounting() {
method stopCountingAndReset (line 16) | public static void stopCountingAndReset() {
method getCount (line 21) | public static int getCount() {
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc147605/TextFieldHolder.java
type TextFieldHolder (line 6) | public interface TextFieldHolder {
method getFocusedTextField (line 7) | @Nullable
method setFocusedTextField (line 10) | void setFocusedTextField(@Nullable EditBox widget);
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc197260/DebugifyLightProvider.java
type DebugifyLightProvider (line 5) | public interface DebugifyLightProvider<S extends LivingEntityRenderState> {
method debugify$modifyLightCoords (line 6) | default void debugify$modifyLightCoords(S livingEntityState) {
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc237493/DebugifyTelemetry.java
type DebugifyTelemetry (line 13) | public enum DebugifyTelemetry {
method DebugifyTelemetry (line 24) | DebugifyTelemetry(int id, final String key, final String translationKe...
method caption (line 30) | public Component caption() {
method tooltip (line 34) | public Component tooltip() {
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc237493/DebugifyTelemetryAccessor.java
type DebugifyTelemetryAccessor (line 5) | public interface DebugifyTelemetryAccessor {
method getTelemetryOption (line 6) | OptionInstance<DebugifyTelemetry> getTelemetryOption();
FILE: src/client/java/dev/isxander/debugify/client/helpers/mc26757/TooltipWrapper.java
class TooltipWrapper (line 11) | public class TooltipWrapper {
method wrapTooltipLines (line 12) | public static List<FormattedCharSequence> wrapTooltipLines(Screen scre...
method getMaxWidth (line 26) | private static int getMaxWidth(Font textRenderer, List<Component> line...
FILE: src/client/java/dev/isxander/debugify/client/integrations/ModMenuIntegration.java
class ModMenuIntegration (line 10) | public class ModMenuIntegration implements ModMenuApi {
method getModConfigScreenFactory (line 11) | @Override
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc105068/LivingEntityMixin.java
class LivingEntityMixin (line 15) | @BugFix(id = "MC-105068", category = FixCategory.BASIC, env = BugFix.Env...
method LivingEntityMixin (line 18) | public LivingEntityMixin(EntityType<?> variant, Level world) {
method beforeCond30 (line 22) | @WrapOperation(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc115092/SquidRendererMixin.java
class SquidRendererMixin (line 16) | @BugFix(id = "MC-115092", category = FixCategory.BASIC, env = BugFix.Env...
method getSquidEntity (line 22) | @Inject(
method applyRotation (line 30) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc116379/FishingHookRendererMixin.java
class FishingHookRendererMixin (line 15) | @BugFix(id = "MC-116379", category = FixCategory.BASIC, env = BugFix.Env...
method modifyHandSwingProgress (line 18) | @ModifyExpressionValue(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc118740/GuiMixin.java
class GuiMixin (line 20) | @BugFix(id = "MC-118740", category = FixCategory.BASIC, env = BugFix.Env...
method useFixedCooldown (line 28) | @WrapOperation(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc118740/LocalPlayerMixin.java
class LocalPlayerMixin (line 24) | @BugFix(id = "MC-118740", category = FixCategory.BASIC, env = BugFix.Env...
method LocalPlayerMixin (line 30) | public LocalPlayerMixin(Level level, GameProfile gameProfile) {
method swing (line 34) | @Inject(method = "swing", at = @At("HEAD"))
method debugify$getVisualAttackStrengthScale (line 39) | @Override
method debugify$resetVisualAttackStrengthScale (line 44) | @Override
method debugify$incrementVisualAttackStrengthScale (line 49) | @Override
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc118740/PlayerMixin.java
class PlayerMixin (line 18) | @BugFix(id = "MC-118740", category = FixCategory.BASIC, env = BugFix.Env...
method resetAttackStrengthTicker (line 21) | @Inject(method = "resetAttackStrengthTicker", at = @At("HEAD"))
method tick (line 28) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc122477/EditBoxMixin.java
class EditBoxMixin (line 18) | @BugFix(id = "MC-122477", category = FixCategory.BASIC, env = BugFix.Env...
method startPolling (line 21) | @Inject(
method stopPolling (line 29) | @WrapMethod(method = "charTyped")
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc122477/MinecraftMixin.java
class MinecraftMixin (line 13) | @BugFix(id = "MC-122477", category = FixCategory.BASIC, env = BugFix.Env...
method onPollEvents (line 16) | @Inject(method = "run", at = @At(value = "INVOKE", target = "Lcom/moja...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc122627/CommandSuggestionsMixin.java
class CommandSuggestionsMixin (line 12) | @BugFix(id = "MC-122627", category = FixCategory.BASIC, env = BugFix.Env...
method modifyX2 (line 19) | @Definition(id = "fill", method = "Lnet/minecraft/client/gui/GuiGraphi...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc127970/ItemInHandRendererMixin.java
class ItemInHandRendererMixin (line 13) | @BugFix(id = "MC-127970", category = FixCategory.BASIC, env = BugFix.Env...
method isUsingRiptideHand (line 16) | @ModifyExpressionValue(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc143474/ClientPacketListenerMixin.java
class ClientPacketListenerMixin (line 17) | @BugFix(id = "MC-143474", category = FixCategory.BASIC, env = BugFix.Env...
method ClientPacketListenerMixin (line 20) | protected ClientPacketListenerMixin(Minecraft client, Connection conne...
method persistInventorySlot2 (line 24) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc165305/RenderPipelinesMixin.java
class RenderPipelinesMixin (line 14) | @BugFix(id = "MC-165306", category = FixCategory.BASIC, env = BugFix.Env...
method disableCull (line 17) | @Definition(id = "BEACON_BEAM_OPAQUE", field = "Lnet/minecraft/client/...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc165381/LocalPlayerMixin.java
class LocalPlayerMixin (line 14) | @BugFix(id = "MC-165381", category = FixCategory.BASIC, env = BugFix.Env...
method onDropItem (line 21) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc176559/ItemStackAccessor.java
type ItemStackAccessor (line 8) | @Mixin(ItemStack.class)
method getComponents (line 10) | @Accessor
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc176559/MultiPlayerGameModeMixin.java
class MultiPlayerGameModeMixin (line 16) | @BugFix(id = "MC-176559", category = FixCategory.BASIC, env = BugFix.Env...
method isSameItem (line 20) | @WrapOperation(
method isSameItemSameComponentsIgnoringDurability (line 31) | @Unique
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc188359/CakeBlockMixin.java
class CakeBlockMixin (line 21) | @BugFix(id = "MC-188359", category = FixCategory.BASIC, env = BugFix.Env...
method playBurpSound (line 24) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc188359/ConsumableMixin.java
class ConsumableMixin (line 21) | @BugFix(id = "MC-188359", category = FixCategory.BASIC, env = BugFix.Env...
method addBurpSound (line 28) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc197260/ArmorStandRendererMixin.java
class ArmorStandRendererMixin (line 19) | @BugFix(id = "MC-197260", category = FixCategory.BASIC, env = BugFix.Env...
method ArmorStandRendererMixin (line 22) | protected ArmorStandRendererMixin(EntityRendererProvider.Context conte...
method debugify$modifyLightCoords (line 35) | @Override
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc197260/LivingEntityRendererMixin.java
class LivingEntityRendererMixin (line 21) | @BugFix(id = "MC-197260", category = FixCategory.BASIC, env = BugFix.Env...
method LivingEntityRendererMixin (line 24) | protected LivingEntityRendererMixin(EntityRendererProvider.Context con...
method fixLightLevel (line 28) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc206540/EntityMixin.java
class EntityMixin (line 13) | @BugFix(id = "MC-206540", category = FixCategory.BASIC, env = BugFix.Env...
method getYRot (line 16) | @Shadow
method fixCameraMovement (line 22) | @Inject(method = "onPassengerTurned", at = @At("HEAD"))
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc210318/BookSignScreenMixin.java
class BookSignScreenMixin (line 10) | @BugFix(id = "MC-210318", category = FixCategory.BASIC, env = BugFix.Env...
method restoreBookTitleMaxLength (line 14) | @ModifyArg(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc211561/FishingHookRendererMixin.java
class FishingHookRendererMixin (line 13) | @BugFix(id = "MC-211561", category = FixCategory.BASIC, env = BugFix.Env...
method fixHoldingArm (line 16) | @ModifyReturnValue(method = "getHoldingArm", at = @At("RETURN"))
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc215531/GuiMixin.java
class GuiMixin (line 13) | @BugFix(id = "MC-215531", category = FixCategory.BASIC, env = BugFix.Env...
method shouldRenderPumpkinOverlay (line 18) | @ModifyExpressionValue(method = "extractCameraOverlays", at = @At(valu...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc217716/GameRendererMixin.java
class GameRendererMixin (line 15) | @BugFix(id = "MC-217716", category = FixCategory.BASIC, env = BugFix.Env...
method shouldShowNauseaOverlay (line 24) | @Definition(id = "getEffectBlendFactor", method = "Lnet/minecraft/clie...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/OptionsMixin.java
class OptionsMixin (line 19) | @BugFix(id = "MC-237493", category = FixCategory.BASIC, env = BugFix.Env...
method telemetryOptInExtra (line 22) | @Shadow public abstract OptionInstance<Boolean> telemetryOptInExtra();
method getTelemetryOption (line 34) | @Override
method shouldAcceptVanillaTelemetry (line 39) | @Inject(method = "processOptions", at = @At("RETURN"))
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryEventInstanceMixin.java
class TelemetryEventInstanceMixin (line 14) | @BugFix(id = "MC-237493", category = FixCategory.BASIC, env = BugFix.Env...
method preventEvents (line 17) | @ModifyReturnValue(method = "export", at = @At("RETURN"))
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryEventWidgetMixin.java
class TelemetryEventWidgetMixin (line 24) | @BugFix(id = "MC-237493", category = FixCategory.BASIC, env = BugFix.Env...
method modifyInUseTelemetry (line 29) | @ModifyExpressionValue(method = "buildContent", at = @At(value = "INVO...
method addDebugifyContent (line 36) | @Inject(method = "buildContent", at = @At(value = "INVOKE", target = "...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryInfoScreenMixin.java
class TelemetryInfoScreenMixin (line 27) | @BugFix(id = "MC-237493", category = FixCategory.BASIC, env = BugFix.Env...
method TelemetryInfoScreenMixin (line 30) | protected TelemetryInfoScreenMixin(Component title) {
method createTelemetryCheckbox (line 40) | @Definition(id = "addChild", method = "Lnet/minecraft/client/gui/layou...
method repositionCycleButton (line 50) | @Inject(method = "repositionElements", at = @At("TAIL"))
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc242809/DirectJoinServerScreenMixin.java
class DirectJoinServerScreenMixin (line 12) | @BugFix(id = "MC-242809", category = FixCategory.BASIC, env = BugFix.Env...
method trimIpSelect (line 15) | @Definition(id = "ipEdit", field = "Lnet/minecraft/client/gui/screens/...
method trimIpInit (line 23) | @Definition(id = "ipEdit", field = "Lnet/minecraft/client/gui/screens/...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc242809/ManageServerScreenMixin.java
class ManageServerScreenMixin (line 12) | @BugFix(id = "MC-242809", category = FixCategory.BASIC, env = BugFix.Env...
method trimIp (line 15) | @Definition(id = "serverData", field = "Lnet/minecraft/client/gui/scre...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc251068/WorldSelectionListMixin.java
class WorldSelectionListMixin (line 17) | @BugFix(id = "MC-251068", category = FixCategory.BASIC, env = BugFix.Env...
method WorldSelectionListMixin (line 21) | public WorldSelectionListMixin(Minecraft minecraft, int i, int j, int ...
method dontShowEmptyWorldList (line 25) | @WrapWithCondition(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc259512/LivingEntityMixin.java
class LivingEntityMixin (line 15) | @BugFix(id = "MC-259512", category = FixCategory.BASIC, env = BugFix.Env...
method LivingEntityMixin (line 18) | public LivingEntityMixin(EntityType<?> entityType, Level level) {
method smoothYRot (line 26) | @ModifyExpressionValue(
method smoothYRot0 (line 38) | @ModifyExpressionValue(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc267376/CameraMixin.java
class CameraMixin (line 12) | @BugFix(id = "MC-267376", category = FixCategory.BASIC, env = BugFix.Env...
method scaleNearClipDistance (line 15) | @ModifyArg(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc268420/GuiMixin.java
class GuiMixin (line 16) | @BugFix(id = "MC-268420", category = FixCategory.BASIC, env = BugFix.Env...
method fixAttackIndicatorFlashing (line 24) | @WrapWithCondition(method = "extractCrosshair", at = @At(value = "INVO...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc280220/DolphinCarryingItemLayerMixin.java
class DolphinCarryingItemLayerMixin (line 16) | @BugFix(id = "MC-280220", category = FixCategory.BASIC, env = BugFix.Env...
method flipItem (line 19) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc298225/CameraMixin.java
class CameraMixin (line 11) | @BugFix(id = "MC-298225", category = FixCategory.BASIC, env = BugFix.Env...
method fixSkyboxFarplaneClipping (line 14) | @Definition(id = "depthFar", field = "Lnet/minecraft/client/Camera;dep...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc298558/AtmosphericFogEnvironmentMixin.java
class AtmosphericFogEnvironmentMixin (line 13) | @BugFix(id = "MC-298558", category = FixCategory.BASIC, env = BugFix.Env...
method clampFog (line 20) | @Definition(id = "rainFogMultiplier", field = "Lnet/minecraft/client/r...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc35361/MinecraftMixin.java
class MinecraftMixin (line 14) | @BugFix(id = "MC-35361", category = FixCategory.BASIC, env = BugFix.Env....
method addNetherPortalCheck (line 21) | @WrapWithCondition(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc4490/FishingHookRendererMixin.java
class FishingHookRendererMixin (line 12) | @BugFix(id = "MC-4490", category = FixCategory.BASIC, env = BugFix.Env.C...
method renderSneakOffset (line 15) | @ModifyExpressionValue(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc46737/GameRendererMixin.java
class GameRendererMixin (line 12) | @BugFix(id = "MC-46737", category = FixCategory.BASIC, env = BugFix.Env....
method thirdPersonCheck (line 15) | @WrapWithCondition(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc46766/MinecraftMixin.java
class MinecraftMixin (line 16) | @BugFix(id = "MC-46766", category = FixCategory.BASIC, env = BugFix.Env....
method shouldContinueAttack (line 22) | @ModifyArg(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc57057/GuardianAttackSoundInstanceMixin.java
class GuardianAttackSoundInstanceMixin (line 17) | @BugFix(id = "MC-57057", category = FixCategory.BASIC, env = BugFix.Env....
method GuardianAttackSoundInstanceMixin (line 20) | protected GuardianAttackSoundInstanceMixin(SoundEvent soundEvent, Soun...
method fixAttenuation (line 24) | @Inject(method = "<init>", at = @At(value = "TAIL"))
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc577/AbstractContainerScreenMixin.java
class AbstractContainerScreenMixin (line 22) | @BugFix(id = "MC-577", category = FixCategory.BASIC, env = BugFix.Env.CL...
method slotClicked (line 25) | @Shadow
method AbstractContainerScreenMixin (line 28) | protected AbstractContainerScreenMixin(Component title) {
method shouldReturn (line 32) | @ModifyExpressionValue(
method dropWithMouse (line 43) | @Definition(id = "getHoveredSlot", method = "Lnet/minecraft/client/gui...
method mouseInventoryClose (line 64) | @Unique
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc59810/MouseHandlerMixin.java
class MouseHandlerMixin (line 12) | @BugFix(id = "MC-59810", category = FixCategory.BASIC, env = BugFix.Env....
method doRightClickEmulation (line 15) | @ModifyExpressionValue(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc61489/BookEditScreenMixin.java
class BookEditScreenMixin (line 16) | @BugFix(id = "MC-61489", category = FixCategory.BASIC, env = BugFix.Env....
method BookEditScreenMixin (line 23) | protected BookEditScreenMixin(Component component) {
method modifyHeight (line 27) | @ModifyArg(
method modifyTop (line 38) | @ModifyReturnValue(method = "backgroundTop", at = @At("RETURN"))
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc61489/BookViewScreenMixin.java
class BookViewScreenMixin (line 16) | @BugFix(id = "MC-61489", category = FixCategory.BASIC, env = BugFix.Env....
method BookViewScreenMixin (line 23) | protected BookViewScreenMixin(Component component) {
method modifyTop (line 27) | @ModifyReturnValue(method = "backgroundTop", at = @At("RETURN"))
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc79545/ExperienceBarRendererMixin.java
class ExperienceBarRendererMixin (line 11) | @BugFix(id = "MC-79545", category = FixCategory.BASIC, env = BugFix.Env....
method getNextLevelExperience (line 18) | @ModifyExpressionValue(method = "extractBackground", at = @At(value = ...
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc80859/AbstractContainerScreenMixin.java
class AbstractContainerScreenMixin (line 15) | @BugFix(id = "MC-80859", category = FixCategory.BASIC, env = BugFix.Env....
method stopInvisibleSlots (line 22) | @WrapOperation(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc90683/ClientPacketListenerMixin.java
class ClientPacketListenerMixin (line 11) | @BugFix(id = "MC-90683", category = FixCategory.BASIC, env = BugFix.Env....
method shouldWarn (line 14) | @WrapWithCondition(
FILE: src/client/java/dev/isxander/debugify/client/mixins/basic/mc93384/LivingEntityMixin.java
class LivingEntityMixin (line 14) | @BugFix(id = "MC-93384", category = FixCategory.BASIC, env = BugFix.Env....
method LivingEntityMixin (line 17) | public LivingEntityMixin(EntityType<?> type, Level world) {
method addEyeHeightToBubblePos (line 21) | @ModifyExpressionValue(
FILE: src/client/java/dev/isxander/debugify/client/mixins/gameplay/mc159163/ClientPacketListenerMixin.java
class ClientPacketListenerMixin (line 22) | @BugFix(id = "MC-159163", category = FixCategory.GAMEPLAY, env = BugFix....
method ClientPacketListenerMixin (line 25) | protected ClientPacketListenerMixin(Minecraft client, Connection conne...
method removeLocalEntityPose (line 29) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/mixins/gameplay/mc231097/LocalPlayerMixin.java
class LocalPlayerMixin (line 14) | @BugFix(id = "MC-231097", category = FixCategory.GAMEPLAY, env = BugFix....
method isUsingItem (line 19) | @Shadow public abstract boolean isUsingItem();
method onDropItem (line 21) | @Inject(
FILE: src/client/java/dev/isxander/debugify/client/utils/ClientUtils.java
class ClientUtils (line 5) | public class ClientUtils {
method isInMultiplayerWorld (line 6) | public static boolean isInMultiplayerWorld() {
FILE: src/gametest/java/dev/isxander/debugify/test/DebugifyApiTest.java
class DebugifyApiTest (line 8) | public class DebugifyApiTest implements DebugifyApi {
method getDisabledFixes (line 9) | @Override
method getProvidedDisabledFixes (line 14) | @Override
FILE: src/gametest/java/dev/isxander/debugify/test/DebugifyTestUtils.java
class DebugifyTestUtils (line 25) | public final class DebugifyTestUtils {
method bonemealIndefinitely (line 31) | public static void bonemealIndefinitely(GameTestHelper ctx, BlockPos p...
method assertBlockFill (line 42) | public static void assertBlockFill(GameTestHelper ctx, BlockPos start,...
method assertBlockStateFill (line 49) | public static void assertBlockStateFill(GameTestHelper ctx, BlockPos s...
method fill (line 56) | public static void fill(GameTestHelper ctx, BlockPos start, BlockPos e...
method area (line 63) | private static void area(BlockPos start, BlockPos end, Consumer<BlockP...
FILE: src/gametest/java/dev/isxander/debugify/test/suites/MC100991.java
class MC100991 (line 15) | public class MC100991 {
method statTrackRodKill (line 16) | @GameTest
FILE: src/gametest/java/dev/isxander/debugify/test/suites/MC30391.java
class MC30391 (line 9) | public class MC30391 {
method blaze (line 11) | @GameTest
method chicken (line 16) | @GameTest
method wither (line 21) | @GameTest
method testWithEntity (line 26) | private <E extends Mob> void testWithEntity(GameTestHelper ctx, Entity...
FILE: src/gametest/java/dev/isxander/debugify/test/suites/MC72151.java
class MC72151 (line 12) | public class MC72151 {
method mc72151 (line 13) | @GameTest
FILE: src/gametest/java/dev/isxander/debugify/test/suites/MC8187.java
class MC8187 (line 20) | public class MC8187 {
method testTreeRandomTick (line 37) | private static void testTreeRandomTick(GameTestHelper ctx, Block sapli...
method testTreeBonemeal (line 53) | private static void testTreeBonemeal(GameTestHelper ctx, Block sapling...
method testAzalea (line 69) | private static void testAzalea(GameTestHelper ctx, Block sapling, Bloc...
method testTreeParamCommon (line 84) | private static void testTreeParamCommon(GameTestHelper ctx, Block sapl...
method testTreeCommon (line 96) | private static void testTreeCommon(GameTestHelper ctx, BlockState sapl...
method oak_randomTick_NW (line 107) | @GameTest(structure = TEMPLATE, skyAccess = true)
method birch_randomTick_NW (line 112) | @GameTest(structure = TEMPLATE, skyAccess = true)
method spruce_randomTick_NW (line 117) | @GameTest(structure = TEMPLATE, skyAccess = true)
method jungle_randomTick_NW (line 122) | @GameTest(structure = TEMPLATE, skyAccess = true)
method acacia_randomTick_NW (line 127) | @GameTest(structure = TEMPLATE, skyAccess = true)
method darkOak_randomTick_NW (line 132) | @GameTest(structure = TEMPLATE, skyAccess = true)
method cherry_randomTick_NW (line 137) | @GameTest(structure = TEMPLATE, skyAccess = true)
method oak_bonemeal_NW (line 143) | @GameTest(structure = TEMPLATE)
method birch_bonemeal_NW (line 148) | @GameTest(structure = TEMPLATE)
method spruce_bonemeal_NW (line 153) | @GameTest(structure = TEMPLATE)
method jungle_bonemeal_NW (line 158) | @GameTest(structure = TEMPLATE)
method acacia_bonemeal_NW (line 163) | @GameTest(structure = TEMPLATE)
method darkOak_bonemeal_NW (line 168) | @GameTest(structure = TEMPLATE)
method cherry_bonemeal_NW (line 173) | @GameTest(structure = TEMPLATE)
method azaleaNW (line 179) | @GameTest(structure = TEMPLATE)
method mangroveNW (line 185) | public void mangroveNW(GameTestHelper ctx) {
method assertSuitable (line 192) | private static void assertSuitable(GameTestHelper ctx, boolean require...
FILE: src/gametest/java/dev/isxander/debugify/test/suites/MC93018.java
class MC93018 (line 14) | public class MC93018 {
method mc93018 (line 16) | @GameTest
FILE: src/main/java/dev/isxander/debugify/Debugify.java
class Debugify (line 16) | public class Debugify {
method onPreInitialize (line 25) | public static void onPreInitialize() {
method onInitialize (line 30) | public static void onInitialize() {
method getEnv (line 40) | public static BugFix.Env getEnv() {
method isGameplayFixesEnabled (line 44) | public static boolean isGameplayFixesEnabled() {
FILE: src/main/java/dev/isxander/debugify/api/DebugifyApi.java
type DebugifyApi (line 6) | public interface DebugifyApi {
method getDisabledFixes (line 10) | default String[] getDisabledFixes() {
method getProvidedDisabledFixes (line 18) | default Map<String, Set<String>> getProvidedDisabledFixes() {
FILE: src/main/java/dev/isxander/debugify/config/DebugifyConfig.java
class DebugifyConfig (line 15) | public class DebugifyConfig {
method registerBugFix (line 28) | public void registerBugFix(BugFixData bugFix) {
method preload (line 36) | public void preload() {
method save (line 76) | public void save() {
method isBugFixEnabled (line 96) | public boolean isBugFixEnabled(BugFixData bug) {
method getBugFixes (line 100) | public Map<BugFixData, Boolean> getBugFixes() {
method doesJsonHaveIdenticalKeys (line 104) | public boolean doesJsonHaveIdenticalKeys() {
class YosbrError (line 109) | private static class YosbrError extends Error {
method YosbrError (line 110) | public YosbrError() {
FILE: src/main/java/dev/isxander/debugify/error/CrashReportInjector.java
class CrashReportInjector (line 13) | public class CrashReportInjector {
method addDetailsToCrashReport (line 14) | public static void addDetailsToCrashReport(StringBuilder sb) {
method stringifyErrorEntry (line 26) | private static String stringifyErrorEntry(MixinErrorEntry entry) {
FILE: src/main/java/dev/isxander/debugify/error/DebugifyErrorHandler.java
class DebugifyErrorHandler (line 15) | public class DebugifyErrorHandler implements IMixinErrorHandler {
method onPrepareError (line 18) | @Override
method onApplyError (line 23) | @Override
method handleError (line 28) | private ErrorAction handleError(ErrorAction usualAction, IMixinInfo mi...
method hasErrored (line 41) | public static boolean hasErrored(BugFixData fix) {
method getErroredFixes (line 45) | public static Set<MixinErrorEntry> getErroredFixes() {
FILE: src/main/java/dev/isxander/debugify/error/ErrorStage.java
type ErrorStage (line 3) | public enum ErrorStage {
FILE: src/main/java/dev/isxander/debugify/fixes/BugFix.java
type Env (line 25) | enum Env {
method Env (line 31) | Env(String displayName) {
method getDisplayName (line 35) | public String getDisplayName() {
method getDescriptionKey (line 39) | public String getDescriptionKey() {
FILE: src/main/java/dev/isxander/debugify/fixes/BugFixData.java
method registerApiConflict (line 14) | public static void registerApiConflict(String modId, String bugId) {
method getActiveConflicts (line 18) | public Set<String> getActiveConflicts() {
method satisfiesOSRequirement (line 26) | public boolean satisfiesOSRequirement() {
method equals (line 33) | @Override
method compareTo (line 40) | @Override
FILE: src/main/java/dev/isxander/debugify/fixes/FixCategory.java
type FixCategory (line 3) | public enum FixCategory {
method FixCategory (line 9) | FixCategory(String displayName) {
method getDisplayName (line 13) | public String getDisplayName() {
FILE: src/main/java/dev/isxander/debugify/fixes/OS.java
type OS (line 10) | public enum OS {
method getOperatingSystem (line 17) | public static OS getOperatingSystem() {
method OS (line 36) | OS(String displayName) {
method getDisplayName (line 40) | public String getDisplayName() {
FILE: src/main/java/dev/isxander/debugify/mixinplugin/BugFixDataCache.java
class BugFixDataCache (line 19) | public class BugFixDataCache {
method getOrResolve (line 22) | public static Optional<BugFixData> getOrResolve(String mixinClassName) {
method getIfResolved (line 29) | public static Optional<BugFixData> getIfResolved(String mixinClassName) {
method resolve (line 34) | private static ResolvedBugFixData resolve(String mixinClassName) {
method getClassNode (line 60) | private static ClassNode getClassNode(String className) {
method getAnnotationEnumValue (line 68) | private static <T extends Enum<T>> T getAnnotationEnumValue(Annotation...
FILE: src/main/java/dev/isxander/debugify/mixinplugin/DebugifyDebugFlags.java
class DebugifyDebugFlags (line 3) | public class DebugifyDebugFlags {
method boolProp (line 8) | private static boolean boolProp(String property) {
FILE: src/main/java/dev/isxander/debugify/mixinplugin/MixinPlugin.java
class MixinPlugin (line 14) | public class MixinPlugin implements IMixinConfigPlugin {
method onLoad (line 16) | @Override
method getRefMapperConfig (line 36) | @Override
method shouldApplyMixin (line 42) | @Override
method acceptTargets (line 72) | @Override
method getMixins (line 75) | @Override
method preApply (line 80) | @Override
method postApply (line 83) | @Override
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc100991/FishingHookMixin.java
class FishingHookMixin (line 16) | @BugFix(id = "MC-100991", category = FixCategory.BASIC, env = BugFix.Env...
method FishingHookMixin (line 19) | public FishingHookMixin(EntityType<? extends Projectile> type, Level l...
method onPullEntity (line 26) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc119754/FireworkRocketEntityMixin.java
class FireworkRocketEntityMixin (line 13) | @BugFix(id = "MC-119754", category = FixCategory.BASIC, env = BugFix.Env...
method shouldFly (line 19) | @ModifyExpressionValue(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc121706/RangedBowAttackGoalMixin.java
class RangedBowAttackGoalMixin (line 14) | @BugFix(id = "MC-121706", env = BugFix.Env.SERVER, category = FixCategor...
method lookAtTarget (line 19) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc121903/MinecraftCommandBlockMixin.java
class MinecraftCommandBlockMixin (line 14) | @BugFix(id = "MC-121903", category = FixCategory.BASIC, env = BugFix.Env...
method readNbt (line 19) | @Inject(method = "readAdditionalSaveData", at = @At("RETURN"))
method writeNbt (line 26) | @Inject(method = "addAdditionalSaveData", at = @At("RETURN"))
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc123450/ItemFrameMixin.java
class ItemFrameMixin (line 12) | @BugFix(id = "MC-123450", category = FixCategory.BASIC, env = BugFix.Env...
method playSound (line 15) | @WrapWithCondition(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc129909/ServerPlayerMixin.java
class ServerPlayerMixin (line 15) | @BugFix(id = "MC-129909", category = FixCategory.BASIC, env = BugFix.Env...
method ServerPlayerMixin (line 18) | public ServerPlayerMixin(Level world, GameProfile gameProfile) {
method onChangeToSpectator (line 26) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc131562/ServerGamePacketListenerImplMixin.java
class ServerGamePacketListenerImplMixin (line 17) | @BugFix(id = "MC-131562", category = FixCategory.BASIC, env = BugFix.Env...
method checkEmptyCommandBeforeMessage (line 24) | @Definition(id = "sendSystemMessage", method = "Lnet/minecraft/server/...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc132878/ArmorStandMixin.java
class ArmorStandMixin (line 13) | @BugFix(id = "MC-132878", category = FixCategory.BASIC, env = BugFix.Env...
method showBreakingParticles (line 16) | @Shadow protected abstract void showBreakingParticles();
method breakParticlesExplosion (line 18) | @Inject(
method breakParticlesFire (line 30) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc133218/ServerPlayerMixin.java
class ServerPlayerMixin (line 14) | @BugFix(id = "MC-133218", category = FixCategory.BASIC, env = BugFix.Env...
method ServerPlayerMixin (line 17) | public ServerPlayerMixin(Level level, GameProfile gameProfile) {
method stopUsingItemOnDeath (line 21) | @Inject(method = "die", at = @At("RETURN"))
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java
class ChestBlockMixin (line 14) | @BugFix(id = "MC-134110", category = FixCategory.BASIC, env = BugFix.Env...
method fixChestRotations (line 17) | @WrapMethod(method = "mirror")
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc139041/FishingRodItemMixin.java
class FishingRodItemMixin (line 11) | @BugFix(id = "MC-139041", category = FixCategory.BASIC, env = BugFix.Env...
method modifyFishingBobberSounds (line 14) | @ModifyArg(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc147659/CatSpawnerMixin.java
class CatSpawnerMixin (line 16) | @BugFix(id = "MC-147659", category = FixCategory.BASIC, env = BugFix.Env...
method removeOldCatSnap (line 19) | @WrapWithCondition(
method addNewCatSnap (line 30) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc153010/FoxMixin.java
class FoxMixin (line 12) | @BugFix(id = "MC-153010", category = FixCategory.BASIC, env = BugFix.Env...
method preventLootDropIfGameruleIsFalse (line 16) | @ModifyExpressionValue(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc155509/PufferfishMixin.java
class PufferfishMixin (line 10) | @BugFix(id = "MC-155509", category = FixCategory.BASIC, env = BugFix.Env...
method shouldStingPlayer (line 13) | @ModifyExpressionValue(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc158900/PlayerListMixin.java
class PlayerListMixin (line 13) | @BugFix(id = "MC-158900", category = FixCategory.BASIC, env = BugFix.Env...
method removeExpiredBeforeCheck (line 16) | @WrapOperation(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc159283/DensityFunctionsMixin.java
class DensityFunctionsMixin (line 23) | @BugFix(id = "MC-159283", category = FixCategory.BASIC, env = BugFix.Env...
method castToLongs (line 30) | @Definition(id = "sqrt", method = "Lnet/minecraft/util/Mth;sqrt(F)F")
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc160095/CactusBlockMixin.java
class CactusBlockMixin (line 20) | @BugFix(id = "MC-160095", category = FixCategory.BASIC, env = BugFix.Env...
method replaceBlockState (line 23) | @Definition(id = "getBlockState", method = "Lnet/minecraft/world/level...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc168573/BlocksAttacksMixin.java
class BlocksAttacksMixin (line 15) | @BugFix(id = "MC-168573", category = FixCategory.BASIC, env = BugFix.Env...
method fixShieldBreakItemUse (line 22) | @WrapOperation(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc170462/MobEffectsMixin.java
class MobEffectsMixin (line 11) | @BugFix(id = "MC-170462", category = FixCategory.BASIC, env = BugFix.Env...
method badOmenEffectCategory (line 14) | @ModifyArg(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc176806/RespawnAnchorBlockMixin.java
class RespawnAnchorBlockMixin (line 16) | @BugFix(id = "MC-176806", category = FixCategory.BASIC, env = BugFix.Env...
method awardGlowstoneStat (line 19) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc177381/LocateCommandMixin.java
class LocateCommandMixin (line 10) | @BugFix(id = "MC-177381", category = FixCategory.BASIC, env = BugFix.Env...
method distanceHypot (line 13) | @WrapMethod(method = "dist")
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc179072/SwellGoalMixin.java
class SwellGoalMixin (line 13) | @BugFix(id = "MC-179072", category = FixCategory.BASIC, env = BugFix.Env...
method shouldIgniteCreeper (line 18) | @ModifyExpressionValue(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc183990/MobMixin.java
class MobMixin (line 14) | @BugFix(id = "MC-183990", category = FixCategory.BASIC, env = BugFix.Env...
method setTarget (line 19) | @Shadow public abstract void setTarget(@Nullable LivingEntity target);
method clearTargetIfDead (line 21) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc187100/EnderDragonMixin.java
class EnderDragonMixin (line 16) | @BugFix(id = "MC-187100", category = FixCategory.BASIC, env = BugFix.Env...
method dontFindNearestCrystalIfDying (line 26) | @WrapMethod(method = "checkCrystals")
method clearNearestCrystalOnDeath (line 35) | @Inject(method = "tickDeath", at = @At("HEAD"))
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc200418/ZombieVillagerMixin.java
class ZombieVillagerMixin (line 14) | @BugFix(id = "MC-200418", category = FixCategory.BASIC, env = BugFix.Env...
method dismountIfJockey (line 17) | @Inject(method = "lambda$finishConversion$0", at = @At("RETURN"))
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc201374/CampfireBlockMixin.java
class CampfireBlockMixin (line 12) | @BugFix(id = "MC-201374", category = FixCategory.BASIC, env = BugFix.Env...
method fixedBlockPos (line 15) | @ModifyArg(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc202637/FoodPropertiesMixin.java
class FoodPropertiesMixin (line 15) | @BugFix(id = "MC-202637", category = FixCategory.BASIC, env = BugFix.Env...
method modifyEatSoundSource (line 19) | @Definition(id = "playSound", method = "Lnet/minecraft/world/level/Lev...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc206922/EntityMixin.java
class EntityMixin (line 13) | @BugFix(id = "MC-206922", category = FixCategory.BASIC, env = BugFix.Env...
method bypassStruckByLightning (line 18) | @WrapMethod(method = "thunderHit")
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc206922/ItemEntityMixin.java
class ItemEntityMixin (line 11) | @BugFix(id = "MC-206922", category = FixCategory.BASIC, env = BugFix.Env...
method bypassStruckByLightning (line 15) | @Override
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc215530/ServerPlayerMixin.java
class ServerPlayerMixin (line 14) | @BugFix(id = "MC-215530", category = FixCategory.BASIC, env = BugFix.Env...
method ServerPlayerMixin (line 17) | public ServerPlayerMixin(Level world, GameProfile gameProfile) {
method onChangeToSpectator (line 21) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc221257/ShulkerBulletMixin.java
class ShulkerBulletMixin (line 16) | @BugFix(id = "MC-221257", category = FixCategory.BASIC, env = BugFix.Env...
method ShulkerBulletMixin (line 19) | public ShulkerBulletMixin(EntityType<? extends Projectile> entityType,...
method addMissingBubbleParticles (line 26) | @Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/min...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc223153/BlocksMixin.java
class BlocksMixin (line 14) | @BugFix(id = "MC-223153", category = FixCategory.BASIC, env = BugFix.Env...
method addCopperSound (line 18) | @Definition(id = "register", method = "Lnet/minecraft/world/level/bloc...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc224729/ChunkMapMixin.java
class ChunkMapMixin (line 18) | @BugFix(id = "MC-224729", category = FixCategory.BASIC, env = BugFix.Env...
method alwaysAccessibleFlushSave (line 21) | @Definition(id = "filter", method = "Ljava/util/stream/Stream;filter(L...
method saveProtoChunks (line 29) | @ModifyArg(method = "saveAllChunks", at = @At(value = "INVOKE", target...
method alwaysAccessibleChunkSave (line 34) | @ModifyExpressionValue(method = "saveChunkIfNeeded", at = @At(value = ...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc226961/ExperienceOrbMixin.java
class ExperienceOrbMixin (line 16) | @BugFix(id = "MC-226961", category = FixCategory.BASIC, env = BugFix.Env...
method ExperienceOrbMixin (line 19) | public ExperienceOrbMixin(EntityType<?> entityType, Level level) {
method checkEyeLevel (line 23) | @Definition(id = "getFluidState", method = "Lnet/minecraft/world/level...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc227008/EnderManMixin.java
class EnderManMixin (line 11) | @BugFix(id = "MC-227008", category = FixCategory.BASIC, env = BugFix.Env...
method checkRiding (line 15) | @WrapOperation(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc227337/ShulkerBulletMixin.java
class ShulkerBulletMixin (line 15) | @BugFix(id = "MC-227337", category = FixCategory.BASIC, env = BugFix.Env...
method playSoundAndDisplayParticles (line 18) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc231743/FlowerPotBlockMixin.java
class FlowerPotBlockMixin (line 21) | @BugFix(id = "MC-231743", category = FixCategory.BASIC, env = BugFix.Env...
method onIncrementPottedPlantStat (line 24) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc232869/StriderMixin.java
class StriderMixin (line 16) | @BugFix(id = "MC-232869", category = FixCategory.BASIC, env = BugFix.Env...
method StriderMixin (line 19) | protected StriderMixin(EntityType<? extends Animal> entityType, Level ...
method preventPeacefulJocky (line 23) | @Definition(id = "nextInt", method = "Lnet/minecraft/util/RandomSource...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc245394/RaidMixin.java
class RaidMixin (line 11) | @BugFix(id = "MC-245394", category = FixCategory.BASIC, env = BugFix.Env...
method modifyRaidSoundSource (line 14) | @ModifyArg(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc263999/BreakDoorGoalMixin.java
class BreakDoorGoalMixin (line 26) | @BugFix(id = "MC-263999", category = FixCategory.BASIC, env = BugFix.Env...
method BreakDoorGoalMixin (line 29) | public BreakDoorGoalMixin(Mob mob) {
method storeBlockStatePreRemoval (line 34) | @Inject(
method injectCorrectBlockState (line 49) | @Definition(id = "levelEvent", method = "Lnet/minecraft/world/level/Le...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc264285/CreeperMixin.java
class CreeperMixin (line 13) | @BugFix(id = "MC-264285", category = FixCategory.BASIC, env = BugFix.Env...
method shouldNotShrinkStack (line 23) | @WrapOperation(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc264979/SettingsMixin.java
class SettingsMixin (line 14) | @BugFix(id = "MC-264979", category = FixCategory.BASIC, env = BugFix.Env...
method dontLoadMissingFile (line 17) | @WrapMethod(method = "loadFromFile")
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc267125/PlayerListMixin.java
class PlayerListMixin (line 16) | @BugFix(id = "MC-267125", category = FixCategory.BASIC, env = BugFix.Env...
method sendPlayerPermissionLevel (line 23) | @Shadow
method sendCommandSuggestions (line 26) | @Inject(method = "reloadResources", at = @At("RETURN"))
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc268617/FileUtilMixin.java
class FileUtilMixin (line 12) | @BugFix(id = "MC-268617", category = FixCategory.BASIC, env = BugFix.Env...
method fixWindowsReservedFilename (line 20) | @Definition(id = "RESERVED_WINDOWS_FILENAMES", field = "Lnet/minecraft...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc271899/StructureTemplateMixin.java
class StructureTemplateMixin (line 16) | @BugFix(id = "MC-271899", category = FixCategory.BASIC, env = BugFix.Env...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc272431/EnderDragonMixin.java
class EnderDragonMixin (line 13) | @BugFix(id = "MC-272431", category = FixCategory.BASIC, env = BugFix.Env...
method fixTargetPath (line 16) | @Definition(id = "yRotA", field = "Lnet/minecraft/world/entity/boss/en...
method fixVerticalVelocity (line 23) | @Definition(id = "setDeltaMovement", method = "Lnet/minecraft/world/en...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc297837/WaypointTransmitterMixin.java
type WaypointTransmitterMixin (line 14) | @BugFix(id = "MC-297837", category = FixCategory.BASIC, env = BugFix.Env...
method useOnlyHorizontalDistance (line 30) | @WrapOperation(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc298066/LivingEntityMixin.java
class LivingEntityMixin (line 15) | @BugFix(id = "MC-298066", category = FixCategory.BASIC, env = BugFix.Env...
method LivingEntityMixin (line 18) | public LivingEntityMixin(EntityType<?> entityType, Level level) {
method teleportToBed (line 23) | @Inject(method = "setPosToBed", at = @At("TAIL"))
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc30391/LivingEntityMixin.java
class LivingEntityMixin (line 13) | @BugFix(id = "MC-30391", category = FixCategory.BASIC, env = BugFix.Env....
method shouldntSpawnParticles (line 16) | @ModifyExpressionValue(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc44654/EntityMixin.java
class EntityMixin (line 13) | @BugFix(id = "MC-44654", category = FixCategory.BASIC, env = BugFix.Env....
method getType (line 16) | @Shadow
method forceClientUpdate (line 29) | @Inject(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc7569/RconConsoleSourceMixin.java
class RconConsoleSourceMixin (line 14) | @BugFix(id = "MC-7569", category = FixCategory.BASIC, env = BugFix.Env.S...
method appendNewline (line 19) | @Inject(method = "sendSystemMessage", at = @At("RETURN"))
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc82263/EnderDragonMixin.java
class EnderDragonMixin (line 12) | @BugFix(id = "MC-82263", category = FixCategory.BASIC, env = BugFix.Env....
method EnderDragonMixin (line 15) | protected EnderDragonMixin(EntityType<? extends Mob> entityType, Level...
method getDeathSound (line 20) | @Override
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc84661/MobEffectsMixin.java
class MobEffectsMixin (line 13) | @BugFix(id = "MC-84661", category = FixCategory.BASIC, env = BugFix.Env....
method badOmenEffectCategory (line 16) | @Definition(id = "NEUTRAL", field = "Lnet/minecraft/world/effect/MobEf...
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc88371/DragonLandingPhaseMixin.java
class DragonLandingPhaseMixin (line 11) | @BugFix(id = "MC-88371", category = FixCategory.BASIC, env = BugFix.Env....
method getLandingPos (line 14) | @ModifyExpressionValue(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc89146/ChunkAccessMixin.java
class ChunkAccessMixin (line 16) | @BugFix(id = "MC-89146", category = FixCategory.BASIC, env = BugFix.Env....
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc93018/AnimalMixin.java
class AnimalMixin (line 12) | @BugFix(id = "MC-93018", category = FixCategory.BASIC, env = BugFix.Env....
method loveCondition (line 18) | @WrapWithCondition(
FILE: src/main/java/dev/isxander/debugify/mixins/basic/mc94054/WallClimberNavigationMixin.java
class WallClimberNavigationMixin (line 10) | @BugFix(id = "MC-94054", category = FixCategory.BASIC, env = BugFix.Env....
method fixSpiderSpinning (line 13) | @ModifyExpressionValue(
FILE: src/main/java/dev/isxander/debugify/mixins/errorhandler/CrashReportMixin.java
class CrashReportMixin (line 12) | @Mixin(CrashReport.class)
method appendCrashReport (line 14) | @Definition(id = "systemReport", field = "Lnet/minecraft/CrashReport;s...
FILE: src/main/java/dev/isxander/debugify/mixins/gameplay/mc136249/LivingEntityMixin.java
class LivingEntityMixin (line 13) | @BugFix(id = "MC-136249", category = FixCategory.GAMEPLAY, env = BugFix....
method isAutoSpinAttack (line 16) | @Shadow
method checkRiptide (line 19) | @Definition(id = "getAttributeValue", method = "Lnet/minecraft/world/e...
FILE: src/main/java/dev/isxander/debugify/mixins/gameplay/mc8187/TreeFeatureMixin.java
class TreeFeatureMixin (line 43) | @BugFix(id = "MC-8187", category = FixCategory.GAMEPLAY, env = BugFix.En...
method fixOffsetNew (line 53) | @Definition(id = "x", local = @Local(type = int.class, name = "x"))
Condensed preview — 255 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (456K chars).
[
{
"path": ".bugs",
"chars": 4126,
"preview": "# This file is used to generate PATCHED.md\n# Please run `./gradlew generatePatchedTable` to update PATCHED.md based on t"
},
{
"path": ".editorconfig",
"chars": 110,
"preview": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\ncharset = utf-8\ntrim_trailing_whitespace = true\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 16,
"preview": "ko_fi: isxander\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug-report.yml",
"chars": 2216,
"preview": "name: Bug Report\ndescription: Let us know of an incompatibility with a mod or crashes etc.\ntitle: \"[Bug] Summary of bug\""
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 27,
"preview": "blank_issues_enabled: true\n"
},
{
"path": ".github/ISSUE_TEMPLATE/patch-request.yml",
"chars": 1553,
"preview": "name: Patch Request\ndescription: Propose adding a patch for a Minecraft bug.\ntitle: \"[Patch Request] MC-123456\"\nlabels: "
},
{
"path": ".github/workflows/check-bug-fixes.yml",
"chars": 531,
"preview": "name: Bug Status Check\n\non:\n push:\n branches:\n - '*'\n paths:\n - 'PATCHED.md'\n schedule:\n - cron: 0 "
},
{
"path": ".github/workflows/gradle.yml",
"chars": 1262,
"preview": "name: Gradle CI\n\non:\n push:\n branches:\n - '*'\n paths-ignore:\n - 'README.md'\n - 'PATCHED.md'\n "
},
{
"path": ".github/workflows/publish.yml",
"chars": 1141,
"preview": "name: Publish Debugify\n\non: workflow_dispatch\n\njobs:\n publish:\n if: contains('[\"isXander\"]', github.actor)\n runs-"
},
{
"path": ".gitignore",
"chars": 46,
"preview": "/.idea\n.gradle/\nbuild/\nrun/\n!*/.gitkeep\n/venv\n"
},
{
"path": "GUIDELINES.md",
"chars": 333,
"preview": "# MC Bug Checklist\n* Must be a bug in a stable release (not in a snapshot, future release, etc)\n* Must have a meaningful"
},
{
"path": "LICENSE",
"chars": 7652,
"preview": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007"
},
{
"path": "PATCHED.md",
"chars": 18400,
"preview": " <!--\n !!!! DO NOT UPDATE THIS FILE MANUALLY !!!!\n Generated by `./gradlew generatePatchedTable`\n Sourced from `.bugs`\n "
},
{
"path": "README.md",
"chars": 3867,
"preview": "<div align=\"center\">\n\n<img src=\"https://dl.isxander.dev/logos/debugify/v2/debugify-512x.png\" width=\"100\"/>\n\n# Debugify\n#"
},
{
"path": "build.gradle.kts",
"chars": 12963,
"preview": "import java.time.LocalDateTime\nimport java.time.format.DateTimeFormatter\n\nplugins {\n id(\"dev.isxander.modstitch.base\""
},
{
"path": "changelogs/1.18.2/1.0.0.md",
"chars": 808,
"preview": "Fixes 6 Bugs\n- [MC-234898](https://bugs.mojang.com/browse/MC-234898) - The \"Get a trial!\" button isn't consistently disp"
},
{
"path": "changelogs/1.18.2/1.1.0.md",
"chars": 208,
"preview": "- [MC-176559](https://bugs.mojang.com/browse/MC-176559) - Breaking process resets when a pickaxe enchanted with Mending "
},
{
"path": "changelogs/1.18.2/1.10.0.md",
"chars": 856,
"preview": "**Bug Fixes**\n\n- [MC-55347](https://bugs.mojang.com/browse/MC-55347) - Title with long duration shows in other world\n- ["
},
{
"path": "changelogs/1.18.2/1.11.0.md",
"chars": 468,
"preview": "**Bug Fixes**\n\n- [MC-228976](https://bugs.mojang.com/browse/MC-228976) - Entity collision is run on render thread\n- [MC-"
},
{
"path": "changelogs/1.18.2/1.2.0.md",
"chars": 513,
"preview": "Patches\n- [MC-14923](https://bugs.mojang.com/browse/MC-14923) - Players can be kicked for spamming in a singleplayer wor"
},
{
"path": "changelogs/1.18.2/1.2.1.md",
"chars": 27,
"preview": "- Added metric json toggle\n"
},
{
"path": "changelogs/1.18.2/1.2.2.md",
"chars": 38,
"preview": "- Delete metrics\n- Add update checker\n"
},
{
"path": "changelogs/1.18.2/1.3.0.md",
"chars": 746,
"preview": "- [MC-121903](https://bugs.mojang.com/browse/MC-121903) - Command block minecarts do not save execution cooldown to NBT\n"
},
{
"path": "changelogs/1.18.2/1.4.0.md",
"chars": 3861,
"preview": "- Add settings menu, allowing you to toggle on and off each bug fix\n- [MC-140646](https://bugs.mojang.com/browse/MC-1406"
},
{
"path": "changelogs/1.18.2/1.4.1.md",
"chars": 30,
"preview": "- Fix crashing with MC-148149\n"
},
{
"path": "changelogs/1.18.2/1.5.0.md",
"chars": 391,
"preview": "- [MC-90084](https://bugs.mojang.com/browse/MC-90084) - When sitting in boats and boats with chest mobs legs penetrate t"
},
{
"path": "changelogs/1.18.2/1.6.0.md",
"chars": 1683,
"preview": "**Bug Fixes**\n\n- [MC-88371](https://bugs.mojang.com/browse/MC-88371) - Ender Dragon flies down in the void when the exit"
},
{
"path": "changelogs/1.18.2/1.7.0.md",
"chars": 1427,
"preview": "**Bug Fixes**\n\n- [MC-2025](https://bugs.mojang.com/browse/MC-2025) - Mobs going out of fenced areas/suffocate in blocks "
},
{
"path": "changelogs/1.18.2/1.7.1.md",
"chars": 209,
"preview": "**Rebugify no more!**\n\n- Fix [MC-147605](https://bugs.mojang.com/browse/MC-147605) not allowing you to focus text fields"
},
{
"path": "changelogs/1.18.2/1.7.2.md",
"chars": 402,
"preview": "**Rebugify no more!**\n\n- Fix unavoidable crash on Forge server environments\n- Avoid mixin warning with MC-147605 enabled"
},
{
"path": "changelogs/1.18.2/1.8.0.md",
"chars": 754,
"preview": "**New Fixes**\n\n- Basic: [MC-135971](https://bugs.mojang.com/browse/MC-135971) - Can't use CTRL+Q in crafting table\n- Gam"
},
{
"path": "changelogs/1.18.2/1.8.1.md",
"chars": 88,
"preview": "**Rebugify no more!**\n\n- Fix Debugify breaking any mods that modify Minecraft resources\n"
},
{
"path": "changelogs/1.18.2/1.9.0.md",
"chars": 279,
"preview": "**Bug Fixes**\n\n- [MC-237493](https://bugs.mojang.com/browse/MC-237493) - Telemetry cannot be disabled\n- Continuation of:"
},
{
"path": "changelogs/1.19/2.0.0.md",
"chars": 18,
"preview": "## Update to 1.19\n"
},
{
"path": "changelogs/1.19/2.1.0.md",
"chars": 735,
"preview": "## New Patches\n\n- [MC-577](https://bugs.mojang.com/browse/MC-577) - Mouse buttons block all inventory controls that are "
},
{
"path": "changelogs/1.19/2.2.0.md",
"chars": 477,
"preview": "## New Patches\n\n- [MC-22882](https://bugs.mojang.com/browse/MC-22882) - Ctrl + Q won't work on Mac\n\n## Bug Fixes\n\n- Fix "
},
{
"path": "changelogs/1.19/2.3.0.md",
"chars": 569,
"preview": "## New Fixes\n\n- [MC-121706](https://bugs.mojang.com/browse/MC-121706) - Skeletons and illusioners aren't looking up / do"
},
{
"path": "changelogs/1.19/2.3.1.md",
"chars": 29,
"preview": "- Fix crash with lithium mod\n"
},
{
"path": "changelogs/1.19/2.3.2.md",
"chars": 121,
"preview": "- Fix fixes not being disabled when there is a mod conflict\n- Crash when debugify detects YOSBR handling debugify config"
},
{
"path": "changelogs/1.19.1/2.3.3.md",
"chars": 108,
"preview": "- Update to 1.19.1\n- Remove [MC-148149](https://bugs.mojang.com/browse/MC-148149) as it was fixed in 1.19.1\n"
},
{
"path": "changelogs/1.19.1/2.3.4.md",
"chars": 92,
"preview": "- Removed [MC-72687](https://bugs.mojang.com/browse/MC-72687) as it was fixed in a snapshot\n"
},
{
"path": "changelogs/1.19.1/2.4.0.md",
"chars": 101,
"preview": "- Debugify is now fabric/quilt only!\n- Fix MC-147605 breaking modded text fields (EMI compatibility)\n"
},
{
"path": "changelogs/1.19.2/2.4.1.md",
"chars": 17,
"preview": "- Support 1.19.2\n"
},
{
"path": "changelogs/1.19.2/2.5.0.md",
"chars": 203,
"preview": "- Add [MC-90683](https://bugs.mojang.com/browse/MC-90683) - \"Received unknown passenger\" - Entities with differing rende"
},
{
"path": "changelogs/1.19.2/2.6.0.md",
"chars": 125,
"preview": "- Use [YetAnotherConfigLib](https://curseforge.com/minecraft/mc-mod/yacl) (you need to download it) instead of Cloth Con"
},
{
"path": "changelogs/1.19.2/2.6.1.md",
"chars": 107,
"preview": "- Disable configuring fixes that are force-disabled\n- Force disable macOS fixes on other operating systems\n"
},
{
"path": "changelogs/1.19.2/2.6.2.md",
"chars": 50,
"preview": "- Fix description loading causing long load times\n"
},
{
"path": "changelogs/1.19.2/2.7.0.md",
"chars": 981,
"preview": "## New Fixes\n\n- [MC-59810](https://bugs.mojang.com/browse/MC-59810) - Cannot break blocks while sprinting (Ctrl+Click = "
},
{
"path": "changelogs/1.19.2/2.7.1.md",
"chars": 380,
"preview": "- Further improve [MC-26757](https://bugs.mojang.com/browse/MC-26757) (the tooltip going off-screen one)\n now Debugify "
},
{
"path": "changelogs/1.19.2/2.8.0.md",
"chars": 489,
"preview": "- [MC-227169](https://bugs.mojang.com/browse/MC-227169) - The main hand is broken when you hold a crossbow loaded into t"
},
{
"path": "changelogs/1.19.3/1.19.3+1.0.md",
"chars": 3802,
"preview": "# Updated to 1.19.3\n\n## New & improved Telemetry Fix\n\nNew telemetry menu in 1.19.3 allows you to set telemetry from Mini"
},
{
"path": "changelogs/1.19.3/1.19.3+1.1.md",
"chars": 102,
"preview": "- Re-compile with latest version of YetAnotherConfigLib as new version JAR isn't backwards compatible\n"
},
{
"path": "changelogs/1.19.3/1.19.3+1.2.md",
"chars": 52,
"preview": "- Removed MC-214147 as it was deemed intended by me."
},
{
"path": "changelogs/1.19.4/1.19.4+1.0.md",
"chars": 109,
"preview": "- Update to 1.19.4\n- Removed [MC-165595](https://bugs.mojang.com/browse/MC-165595) as it was fixed in 1.19.4\n"
},
{
"path": "changelogs/1.19.4/1.19.4+1.1.md",
"chars": 511,
"preview": "- Fixed issues with the MC-46766 fix\n- Fixed a lot of client bug fixes silently failing to be applied fully\n - MC-10894"
},
{
"path": "changelogs/1.19.4/1.19.4+2.0.md",
"chars": 124,
"preview": "- Add fix explanations and effects to most bug fixes\n- Fix crash relating to MC-162253\n- Improve MC-183990 to fix more m"
},
{
"path": "changelogs/1.19.4/1.19.4+2.1.md",
"chars": 43,
"preview": "- Fix crash relating to MC-122477 on Linux\n"
},
{
"path": "changelogs/1.19.4/1.19.4+2.2.md",
"chars": 37,
"preview": "- Fix crash when MC-59810 is enabled\n"
},
{
"path": "changelogs/1.20/1.20+1.0.md",
"chars": 116,
"preview": "- Update to 1.20\n- Removed [MC-162253](https://bugs.mojang.com/browse/MC-162253) as it was fixed in 1.20 snapshots.\n"
},
{
"path": "changelogs/1.20/1.20+1.1.md",
"chars": 58,
"preview": "- Fix crash when opening chat menu with MC-122627 enabled\n"
},
{
"path": "changelogs/1.20.1/1.20.1+1.0.md",
"chars": 231,
"preview": "- Added error handling to bug fixes to sometimes catch errors and continue loading.\n- Fixed issue with MC-176559 bugfix "
},
{
"path": "changelogs/1.20.1/1.20.1+1.1.md",
"chars": 74,
"preview": "- Fix mixin conflict with Fabric API\n- Fix French translation not loading\n"
},
{
"path": "changelogs/1.20.1/1.20.1+2.0.md",
"chars": 406,
"preview": "# Debugify 1.20.1+2.0\n\n## New Fixes\n\n- [MC-263865](https://bugs.mojang.com/browse/MC-263865) - Fullscreen state isn't sa"
},
{
"path": "changelogs/1.20.2/1.20.2+1.0.md",
"chars": 123,
"preview": "- Update to 1.20.2\n- Remove MC-121772 as it was fixed\n- Remove MC-140646 as it was fixed\n- Remove MC-90084 as it was fix"
},
{
"path": "changelogs/1.20.3/1.20.3+1.0.md",
"chars": 60,
"preview": "- Update to 1.20.3\n- Literally nothing changed since 1.20.3\n"
},
{
"path": "changelogs/1.20.3/1.20.3+1.1.md",
"chars": 70,
"preview": "- Fix MC-237493 - Telemetry mode couldn't be toggled to None anymore.\n"
},
{
"path": "changelogs/1.20.4/1.20.4+1.0.md",
"chars": 96,
"preview": "- Update to 1.20.4\n- Fabric Loader 0.15.0 or later required\n- Mixin extras is no longer bundled\n"
},
{
"path": "changelogs/1.20.4/1.20.4+1.1.md",
"chars": 31,
"preview": "- Fix broken description cache\n"
},
{
"path": "changelogs/1.21/1.21+1.0.md",
"chars": 339,
"preview": "# Debugify 1.21+1.0\n\n## Removed bug fixes\n\nThese fixes have been fixed by vanilla and therefore have no use in this mod!"
},
{
"path": "changelogs/1.21.1/1.21.1+1.0.md",
"chars": 143,
"preview": "# Debugify 1.21.1+1.0\n\n- Bumped fabric version constraint to 1.21.1\n\n*This release was kindly PRed by [lospejos](https:/"
},
{
"path": "changelogs/1.21.10/1.21.10+1.0.md",
"chars": 1991,
"preview": "# Debugify 1.21.10+1.0\n\nAs usual with a 1.0, all bug fixes that have been fixed in vanilla have been removed.\n\n## Newly "
},
{
"path": "changelogs/1.21.10/1.21.10+1.1.md",
"chars": 293,
"preview": "# Debugify 1.21.10+1.1\n\n## Changes\n\n- Fix crash with Controlify installed\n - The fix for MC-59810 was failing. This was"
},
{
"path": "changelogs/1.21.11/1.21.11+1.0.md",
"chars": 110,
"preview": "# Debugify 1.21.11+1.0\n\nAs usual with a 1.0, all bug fixes that have been fixed in vanilla have been removed.\n"
},
{
"path": "changelogs/1.21.3/1.21.3+1.0.md",
"chars": 359,
"preview": "# Debugify 1.21.3+1.0\n\n- **This update was gracefully PRed by IMS, thank you IMS for updating Debugify to 1.21.3**\n- Add"
},
{
"path": "changelogs/1.21.4/1.21.4+1.0.md",
"chars": 156,
"preview": "# Debugify 1.21.4+1.0\n\n- Removed MC-12829 fix (resolved in 24w44a)\n- Removed MC-55347 fix (resolved in 24w44a)\n- Removed"
},
{
"path": "changelogs/1.21.4/1.21.4+1.1.md",
"chars": 125,
"preview": "# Debugify 1.21.4+1.1\n\n- Fix crash when going into end dimension ([by rvbsm](https://github.com/isXander/Debugify/pull/3"
},
{
"path": "changelogs/1.21.5/1.21.5+1.0.md",
"chars": 153,
"preview": "# Debugify 1.21.5+1.0\n\n- Removed MC-108948 fix since it was extremely buggy\n- Move MC-159163 to a gameplay fix as some s"
},
{
"path": "changelogs/1.21.7/1.21.7+1.0.md",
"chars": 149,
"preview": "# Debugify 1.21.7+1.0\n\n- Make bug fix descriptions offline as the bug tracker migration broke the API\n- Removed MC-11273"
},
{
"path": "changelogs/1.21.8/1.21.8+1.0.md",
"chars": 11997,
"preview": "# Debugify 1.21.8+1.0\n\n## Bug Fixes\n\n* Fix [MC-35361](https://bugs.mojang.com/browse/MC-35361) – Inventory opening is de"
},
{
"path": "changelogs/26.1.2/26.1.2+1.0.md",
"chars": 198,
"preview": "# Debugify 26.1.2+1.0\n\nAs usual with a 1.0, all bug fixes that have been fixed in vanilla have been removed.\n\nSome mixin"
},
{
"path": "changelogs/26.1.2/26.1.2.2.md",
"chars": 784,
"preview": "# Debugify 26.1.2.2\n\nDebugify now has a new versioning scheme!\n\nIt is now similar to the versioning scheme of NeoForge.\n"
},
{
"path": "changelogs/header.md",
"chars": 136,
"preview": "[](https://bisecthost"
},
{
"path": "crowdin.yml",
"chars": 158,
"preview": "files:\n - source: src/main/resources/assets/debugify/lang/en_us.json\n translation: /src/main/resources/assets/debugi"
},
{
"path": "gradle/wrapper/gradle-wrapper.properties",
"chars": 252,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "gradle.properties",
"chars": 371,
"preview": "org.gradle.jvmargs=-Xmx4G\norg.gradle.parallel=true\norg.gradle.parallel.threads=4\n\nmodstitch.platform=fabric-loom\n\nmodVer"
},
{
"path": "gradlew",
"chars": 8165,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "gradlew.bat",
"chars": 2747,
"preview": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \""
},
{
"path": "modstitch.ct",
"chars": 528,
"preview": "accessWidener v2 named\n\naccessible class net/minecraft/client/Options$FieldAccess\naccessible class net/minecraft/client/"
},
{
"path": "scripts/check_bug_fixes.py",
"chars": 3389,
"preview": "import requests\nimport sys\nimport os\n\nabspath = os.path.abspath(__file__)\ndname = os.path.dirname(abspath)\nos.chdir(dnam"
},
{
"path": "settings.gradle.kts",
"chars": 236,
"preview": "pluginManagement {\n repositories {\n mavenCentral()\n gradlePluginPortal()\n maven(\"https://maven.f"
},
{
"path": "src/client/java/dev/isxander/debugify/client/DebugifyClient.java",
"chars": 123,
"preview": "package dev.isxander.debugify.client;\n\npublic class DebugifyClient {\n public static void onInitializeClient() {\n }"
},
{
"path": "src/client/java/dev/isxander/debugify/client/gui/BugFixController.java",
"chars": 1971,
"preview": "package dev.isxander.debugify.client.gui;\n\nimport dev.isxander.yacl3.api.Option;\nimport dev.isxander.yacl3.api.utils.Dim"
},
{
"path": "src/client/java/dev/isxander/debugify/client/gui/ConfigGuiHelper.java",
"chars": 6199,
"preview": "package dev.isxander.debugify.client.gui;\n\nimport dev.isxander.debugify.config.DebugifyConfig;\nimport dev.isxander.debug"
},
{
"path": "src/client/java/dev/isxander/debugify/client/gui/NoYACLScreen.java",
"chars": 1366,
"preview": "package dev.isxander.debugify.client.gui;\n\nimport net.fabricmc.loader.api.FabricLoader;\nimport net.minecraft.ChatFormatt"
},
{
"path": "src/client/java/dev/isxander/debugify/client/helpers/mc118740/LocalPlayerDuck.java",
"chars": 402,
"preview": "package dev.isxander.debugify.client.helpers.mc118740;\n\n/**\n * Taken from MoulberrysTweaks\n * https://github.com/Moulber"
},
{
"path": "src/client/java/dev/isxander/debugify/client/helpers/mc122477/KeyboardPollCounter.java",
"chars": 511,
"preview": "package dev.isxander.debugify.client.helpers.mc122477;\n\npublic class KeyboardPollCounter {\n private static int count "
},
{
"path": "src/client/java/dev/isxander/debugify/client/helpers/mc147605/TextFieldHolder.java",
"chars": 295,
"preview": "package dev.isxander.debugify.client.helpers.mc147605;\n\nimport net.minecraft.client.gui.components.EditBox;\nimport org.j"
},
{
"path": "src/client/java/dev/isxander/debugify/client/helpers/mc197260/DebugifyLightProvider.java",
"chars": 284,
"preview": "package dev.isxander.debugify.client.helpers.mc197260;\n\nimport net.minecraft.client.renderer.entity.state.LivingEntityRe"
},
{
"path": "src/client/java/dev/isxander/debugify/client/helpers/mc237493/DebugifyTelemetry.java",
"chars": 1348,
"preview": "package dev.isxander.debugify.client.helpers.mc237493;\n\nimport com.mojang.serialization.Codec;\nimport java.util.Arrays;\n"
},
{
"path": "src/client/java/dev/isxander/debugify/client/helpers/mc237493/DebugifyTelemetryAccessor.java",
"chars": 208,
"preview": "package dev.isxander.debugify.client.helpers.mc237493;\n\nimport net.minecraft.client.OptionInstance;\n\npublic interface De"
},
{
"path": "src/client/java/dev/isxander/debugify/client/helpers/mc26757/TooltipWrapper.java",
"chars": 1219,
"preview": "package dev.isxander.debugify.client.helpers.mc26757;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.ut"
},
{
"path": "src/client/java/dev/isxander/debugify/client/integrations/ModMenuIntegration.java",
"chars": 751,
"preview": "package dev.isxander.debugify.client.integrations;\n\nimport com.terraformersmc.modmenu.api.ConfigScreenFactory;\nimport co"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc105068/LivingEntityMixin.java",
"chars": 1465,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc105068;\n\nimport com.llamalad7.mixinextras.injector.wrapoperation.Ope"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc115092/SquidRendererMixin.java",
"chars": 1888,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc115092;\n\nimport com.mojang.blaze3d.vertex.PoseStack;\nimport com.moja"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc116379/FishingHookRendererMixin.java",
"chars": 1642,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc116379;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionV"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc118740/GuiMixin.java",
"chars": 1757,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc118740;\n\nimport com.llamalad7.mixinextras.injector.wrapoperation.Ope"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc118740/LocalPlayerMixin.java",
"chars": 2011,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc118740;\n\nimport com.mojang.authlib.GameProfile;\nimport dev.isxander."
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc118740/PlayerMixin.java",
"chars": 1764,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc118740;\n\nimport dev.isxander.debugify.client.helpers.mc118740.LocalP"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc122477/EditBoxMixin.java",
"chars": 1791,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc122477;\n\nimport com.llamalad7.mixinextras.injector.wrapmethod.WrapMe"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc122477/MinecraftMixin.java",
"chars": 945,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc122477;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxan"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc122627/CommandSuggestionsMixin.java",
"chars": 1511,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc122627;\n\nimport com.llamalad7.mixinextras.expression.Definition;impo"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc127970/ItemInHandRendererMixin.java",
"chars": 1196,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc127970;\n\nimport com.llamalad7.mixinextras.sugar.Local;\nimport dev.is"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc143474/ClientPacketListenerMixin.java",
"chars": 1898,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc143474;\n\nimport com.llamalad7.mixinextras.sugar.Local;\nimport dev.is"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc165305/RenderPipelinesMixin.java",
"chars": 1628,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc165305;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimp"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc165381/LocalPlayerMixin.java",
"chars": 1267,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc165381;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxan"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc176559/ItemStackAccessor.java",
"chars": 379,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc176559;\n\nimport net.minecraft.core.component.PatchedDataComponentMap"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc176559/MultiPlayerGameModeMixin.java",
"chars": 2354,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc176559;\n\nimport com.llamalad7.mixinextras.injector.wrapoperation.Ope"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc188359/CakeBlockMixin.java",
"chars": 2033,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc188359;\n\nimport com.llamalad7.mixinextras.sugar.Local;\nimport dev.is"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc188359/ConsumableMixin.java",
"chars": 1757,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc188359;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxan"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc197260/ArmorStandRendererMixin.java",
"chars": 2408,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc197260;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxan"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc197260/LivingEntityRendererMixin.java",
"chars": 2088,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc197260;\n\nimport com.mojang.blaze3d.vertex.PoseStack;\nimport dev.isxa"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc206540/EntityMixin.java",
"chars": 1391,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc206540;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxan"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc210318/BookSignScreenMixin.java",
"chars": 892,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc210318;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxan"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc211561/FishingHookRendererMixin.java",
"chars": 1012,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc211561;\n\nimport com.llamalad7.mixinextras.injector.ModifyReturnValue"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc215531/GuiMixin.java",
"chars": 995,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc215531;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxan"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc217716/GameRendererMixin.java",
"chars": 1648,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc217716;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimp"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/OptionsMixin.java",
"chars": 1929,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc237493;\n\nimport dev.isxander.debugify.client.helpers.mc237493.Debugi"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryEventInstanceMixin.java",
"chars": 1194,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc237493;\n\nimport com.llamalad7.mixinextras.injector.ModifyReturnValue"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryEventWidgetMixin.java",
"chars": 2494,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc237493;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionV"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc237493/TelemetryInfoScreenMixin.java",
"chars": 3182,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc237493;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimp"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc242809/DirectJoinServerScreenMixin.java",
"chars": 1720,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc242809;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimp"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc242809/ManageServerScreenMixin.java",
"chars": 1500,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc242809;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimp"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc251068/WorldSelectionListMixin.java",
"chars": 1672,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc251068;\n\nimport com.llamalad7.mixinextras.injector.v2.WrapWithCondit"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc259512/LivingEntityMixin.java",
"chars": 1965,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc259512;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionV"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc267376/CameraMixin.java",
"chars": 1046,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc267376;\n\nimport com.llamalad7.mixinextras.sugar.Local;\nimport dev.is"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc268420/GuiMixin.java",
"chars": 1463,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc268420;\n\nimport com.llamalad7.mixinextras.injector.v2.WrapWithCondit"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc280220/DolphinCarryingItemLayerMixin.java",
"chars": 1661,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc280220;\n\nimport com.llamalad7.mixinextras.sugar.Local;\nimport com.mo"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc298225/CameraMixin.java",
"chars": 1135,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc298225;\n\nimport com.llamalad7.mixinextras.expression.Definition;impo"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc298558/AtmosphericFogEnvironmentMixin.java",
"chars": 1797,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc298558;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimp"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc35361/MinecraftMixin.java",
"chars": 1197,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc35361;\n\nimport com.llamalad7.mixinextras.injector.v2.WrapWithConditi"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc4490/FishingHookRendererMixin.java",
"chars": 1017,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc4490;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionVal"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc46737/GameRendererMixin.java",
"chars": 1118,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc46737;\n\nimport com.llamalad7.mixinextras.injector.v2.WrapWithConditi"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc46766/MinecraftMixin.java",
"chars": 1291,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc46766;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxand"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc57057/GuardianAttackSoundInstanceMixin.java",
"chars": 1407,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc57057;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxand"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc577/AbstractContainerScreenMixin.java",
"chars": 3002,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc577;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimport"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc59810/MouseHandlerMixin.java",
"chars": 1111,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc59810;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionVa"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc61489/BookEditScreenMixin.java",
"chars": 1795,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc61489;\n\nimport com.llamalad7.mixinextras.injector.ModifyReturnValue;"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc61489/BookViewScreenMixin.java",
"chars": 1397,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc61489;\n\nimport com.llamalad7.mixinextras.injector.ModifyReturnValue;"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc79545/ExperienceBarRendererMixin.java",
"chars": 1083,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc79545;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionVa"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc80859/AbstractContainerScreenMixin.java",
"chars": 1509,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc80859;\n\nimport com.llamalad7.mixinextras.injector.wrapoperation.Oper"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc90683/ClientPacketListenerMixin.java",
"chars": 998,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc90683;\n\nimport com.llamalad7.mixinextras.injector.v2.WrapWithConditi"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/basic/mc93384/LivingEntityMixin.java",
"chars": 1201,
"preview": "package dev.isxander.debugify.client.mixins.basic.mc93384;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionVa"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/gameplay/mc159163/ClientPacketListenerMixin.java",
"chars": 2171,
"preview": "package dev.isxander.debugify.client.mixins.gameplay.mc159163;\n\nimport com.llamalad7.mixinextras.sugar.Local;\nimport dev"
},
{
"path": "src/client/java/dev/isxander/debugify/client/mixins/gameplay/mc231097/LocalPlayerMixin.java",
"chars": 1429,
"preview": "package dev.isxander.debugify.client.mixins.gameplay.mc231097;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.is"
},
{
"path": "src/client/java/dev/isxander/debugify/client/utils/ClientUtils.java",
"chars": 269,
"preview": "package dev.isxander.debugify.client.utils;\n\nimport net.minecraft.client.Minecraft;\n\npublic class ClientUtils {\n publ"
},
{
"path": "src/client/resources/debugify.client.mixins.json",
"chars": 2501,
"preview": "{\n \"required\": true,\n \"package\": \"dev.isxander.debugify.client.mixins\",\n \"compatibilityLevel\": \"JAVA_25\",\n \"injector"
},
{
"path": "src/gametest/java/dev/isxander/debugify/test/DebugifyApiTest.java",
"chars": 443,
"preview": "package dev.isxander.debugify.test;\n\nimport dev.isxander.debugify.api.DebugifyApi;\n\nimport java.util.Map;\nimport java.ut"
},
{
"path": "src/gametest/java/dev/isxander/debugify/test/DebugifyTestUtils.java",
"chars": 2608,
"preview": "package dev.isxander.debugify.test;\n\nimport dev.isxander.debugify.test.suites.MC8187;\nimport net.minecraft.core.BlockPos"
},
{
"path": "src/gametest/java/dev/isxander/debugify/test/suites/MC100991.java",
"chars": 1642,
"preview": "package dev.isxander.debugify.test.suites;\n\nimport net.fabricmc.fabric.api.gametest.v1.GameTest;\nimport net.minecraft.co"
},
{
"path": "src/gametest/java/dev/isxander/debugify/test/suites/MC30391.java",
"chars": 886,
"preview": "package dev.isxander.debugify.test.suites;\n\nimport net.fabricmc.fabric.api.gametest.v1.GameTest;\nimport net.minecraft.co"
},
{
"path": "src/gametest/java/dev/isxander/debugify/test/suites/MC72151.java",
"chars": 1218,
"preview": "package dev.isxander.debugify.test.suites;\n\nimport net.fabricmc.fabric.api.gametest.v1.GameTest;\nimport net.minecraft.co"
},
{
"path": "src/gametest/java/dev/isxander/debugify/test/suites/MC8187.java",
"chars": 8559,
"preview": "package dev.isxander.debugify.test.suites;\n\nimport dev.isxander.debugify.test.DebugifyTestUtils;\nimport net.fabricmc.fab"
},
{
"path": "src/gametest/java/dev/isxander/debugify/test/suites/MC93018.java",
"chars": 1139,
"preview": "package dev.isxander.debugify.test.suites;\n\nimport net.fabricmc.fabric.api.gametest.v1.GameTest;\nimport net.minecraft.ga"
},
{
"path": "src/gametest/resources/data/debugify/gametest/structures/mc-8187.snbt",
"chars": 1096,
"preview": "{\n DataVersion: 3463,\n size: [18, 50, 18],\n data: [\n {pos: [8, 0, 8], state: \"minecraft:grass_block{snow"
},
{
"path": "src/gametest/resources/fabric.mod.json",
"chars": 638,
"preview": "{\n \"schemaVersion\": 1,\n \"id\": \"debugify-test\",\n \"version\": \"1.0.0\",\n \"name\": \"Debugify (Game Test)\",\n \"license\": \"L"
},
{
"path": "src/main/java/dev/isxander/debugify/Debugify.java",
"chars": 1696,
"preview": "package dev.isxander.debugify;\n\nimport dev.isxander.debugify.config.DebugifyConfig;\nimport dev.isxander.debugify.fixes.B"
},
{
"path": "src/main/java/dev/isxander/debugify/api/DebugifyApi.java",
"chars": 493,
"preview": "package dev.isxander.debugify.api;\n\nimport java.util.Map;\nimport java.util.Set;\n\npublic interface DebugifyApi {\n /**\n"
},
{
"path": "src/main/java/dev/isxander/debugify/config/DebugifyConfig.java",
"chars": 4240,
"preview": "package dev.isxander.debugify.config;\n\nimport dev.isxander.debugify.Debugify;\nimport dev.isxander.debugify.fixes.BugFixD"
},
{
"path": "src/main/java/dev/isxander/debugify/error/CrashReportInjector.java",
"chars": 1632,
"preview": "package dev.isxander.debugify.error;\n\nimport java.io.PrintWriter;\nimport java.io.StringWriter;\nimport java.util.Set;\n\n/*"
},
{
"path": "src/main/java/dev/isxander/debugify/error/DebugifyErrorHandler.java",
"chars": 1998,
"preview": "package dev.isxander.debugify.error;\n\nimport dev.isxander.debugify.Debugify;\nimport dev.isxander.debugify.fixes.BugFixDa"
},
{
"path": "src/main/java/dev/isxander/debugify/error/ErrorStage.java",
"chars": 88,
"preview": "package dev.isxander.debugify.error;\n\npublic enum ErrorStage {\n PREPARE,\n APPLY\n}\n"
},
{
"path": "src/main/java/dev/isxander/debugify/error/MixinErrorEntry.java",
"chars": 263,
"preview": "package dev.isxander.debugify.error;\n\nimport dev.isxander.debugify.fixes.BugFixData;\nimport org.spongepowered.asm.mixin."
},
{
"path": "src/main/java/dev/isxander/debugify/fixes/BugFix.java",
"chars": 920,
"preview": "package dev.isxander.debugify.fixes;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nim"
},
{
"path": "src/main/java/dev/isxander/debugify/fixes/BugFixData.java",
"chars": 1934,
"preview": "package dev.isxander.debugify.fixes;\n\nimport dev.isxander.debugify.mixinplugin.DebugifyDebugFlags;\nimport net.fabricmc.l"
},
{
"path": "src/main/java/dev/isxander/debugify/fixes/FixCategory.java",
"chars": 331,
"preview": "package dev.isxander.debugify.fixes;\n\npublic enum FixCategory {\n BASIC(\"debugify.basic\"),\n GAMEPLAY(\"debugify.game"
},
{
"path": "src/main/java/dev/isxander/debugify/fixes/OS.java",
"chars": 1201,
"preview": "package dev.isxander.debugify.fixes;\n\nimport java.util.Locale;\n\n/**\n * Cannot use {@link net.minecraft.Util.OS} because\n"
},
{
"path": "src/main/java/dev/isxander/debugify/mixinplugin/BugFixDataCache.java",
"chars": 3041,
"preview": "package dev.isxander.debugify.mixinplugin;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxander.debugify.fixe"
},
{
"path": "src/main/java/dev/isxander/debugify/mixinplugin/DebugifyDebugFlags.java",
"chars": 481,
"preview": "package dev.isxander.debugify.mixinplugin;\n\npublic class DebugifyDebugFlags {\n public static final boolean FORCE_LINU"
},
{
"path": "src/main/java/dev/isxander/debugify/mixinplugin/MixinPlugin.java",
"chars": 3273,
"preview": "package dev.isxander.debugify.mixinplugin;\n\nimport dev.isxander.debugify.Debugify;\nimport dev.isxander.debugify.api.Debu"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc100991/FishingHookMixin.java",
"chars": 1657,
"preview": "package dev.isxander.debugify.mixins.basic.mc100991;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxander.deb"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc119754/FireworkRocketEntityMixin.java",
"chars": 1150,
"preview": "package dev.isxander.debugify.mixins.basic.mc119754;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionValue;\ni"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc121706/RangedBowAttackGoalMixin.java",
"chars": 1286,
"preview": "package dev.isxander.debugify.mixins.basic.mc121706;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxander.deb"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc121903/MinecraftCommandBlockMixin.java",
"chars": 1306,
"preview": "package dev.isxander.debugify.mixins.basic.mc121903;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxander.deb"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc123450/ItemFrameMixin.java",
"chars": 1486,
"preview": "package dev.isxander.debugify.mixins.basic.mc123450;\n\nimport com.llamalad7.mixinextras.injector.v2.WrapWithCondition;\nim"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc129909/ServerPlayerMixin.java",
"chars": 1479,
"preview": "package dev.isxander.debugify.mixins.basic.mc129909;\n\nimport com.mojang.authlib.GameProfile;\nimport dev.isxander.debugif"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc131562/ServerGamePacketListenerImplMixin.java",
"chars": 1741,
"preview": "package dev.isxander.debugify.mixins.basic.mc131562;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimport com"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc132878/ArmorStandMixin.java",
"chars": 1757,
"preview": "package dev.isxander.debugify.mixins.basic.mc132878;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxander.deb"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc133218/ServerPlayerMixin.java",
"chars": 1085,
"preview": "package dev.isxander.debugify.mixins.basic.mc133218;\n\nimport com.mojang.authlib.GameProfile;\nimport dev.isxander.debugif"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java",
"chars": 1059,
"preview": "package dev.isxander.debugify.mixins.basic.mc134110;\n\nimport com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;\ni"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc139041/FishingRodItemMixin.java",
"chars": 1053,
"preview": "package dev.isxander.debugify.mixins.basic.mc139041;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxander.deb"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc147659/CatSpawnerMixin.java",
"chars": 1852,
"preview": "package dev.isxander.debugify.mixins.basic.mc147659;\n\nimport com.llamalad7.mixinextras.injector.v2.WrapWithCondition;\nim"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc153010/FoxMixin.java",
"chars": 1112,
"preview": "package dev.isxander.debugify.mixins.basic.mc153010;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionValue;\ni"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc155509/PufferfishMixin.java",
"chars": 1011,
"preview": "package dev.isxander.debugify.mixins.basic.mc155509;\n\nimport com.llamalad7.mixinextras.injector.ModifyExpressionValue;\ni"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc158900/PlayerListMixin.java",
"chars": 1246,
"preview": "package dev.isxander.debugify.mixins.basic.mc158900;\n\nimport com.llamalad7.mixinextras.injector.wrapoperation.Operation;"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc159283/DensityFunctionsMixin.java",
"chars": 1970,
"preview": "package dev.isxander.debugify.mixins.basic.mc159283;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimport com"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc160095/CactusBlockMixin.java",
"chars": 2272,
"preview": "package dev.isxander.debugify.mixins.basic.mc160095;\n\nimport com.llamalad7.mixinextras.expression.Definition;\nimport com"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc168573/BlocksAttacksMixin.java",
"chars": 1875,
"preview": "package dev.isxander.debugify.mixins.basic.mc168573;\n\nimport com.llamalad7.mixinextras.injector.wrapoperation.Operation;"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc170462/MobEffectsMixin.java",
"chars": 1007,
"preview": "package dev.isxander.debugify.mixins.basic.mc170462;\n\nimport dev.isxander.debugify.fixes.BugFix;\nimport dev.isxander.deb"
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc176806/RespawnAnchorBlockMixin.java",
"chars": 1480,
"preview": "package dev.isxander.debugify.mixins.basic.mc176806;\n\nimport com.llamalad7.mixinextras.sugar.Local;\nimport dev.isxander."
},
{
"path": "src/main/java/dev/isxander/debugify/mixins/basic/mc177381/LocateCommandMixin.java",
"chars": 827,
"preview": "package dev.isxander.debugify.mixins.basic.mc177381;\n\nimport com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;\ni"
}
]
// ... and 55 more files (download for full content)
About this extraction
This page contains the full source code of the isXander/Debugify GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 255 files (398.5 KB), approximately 114.3k tokens, and a symbol index with 421 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.